blob: 1a28f10b0568140e22465feddfbd025174ecd00c [file] [edit]
;; Check if manually reserved registers are always excluded from being saved by
;; the function prolog/epilog, even for callee-saved ones, as per GCC behavior.
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -verify-machineinstrs | FileCheck %s
define preserve_mostcc void @t8() "target-features"="+reserve-r8" {
; CHECK-LABEL: t8:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r8d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r8},{r8}"(i64 256)
ret void
}
define preserve_mostcc void @t9() "target-features"="+reserve-r9" {
; CHECK-LABEL: t9:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r9d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r9},{r9}"(i64 256)
ret void
}
define preserve_mostcc void @t10() "target-features"="+reserve-r10" {
; CHECK-LABEL: t10:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r10d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r10},{r10}"(i64 256)
ret void
}
define preserve_mostcc void @t11() "target-features"="+reserve-r11" {
; CHECK-LABEL: t11:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r11d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r11},{r11}"(i64 256)
ret void
}
define preserve_mostcc void @t12() "target-features"="+reserve-r12" {
; CHECK-LABEL: t12:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r12d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r12},{r12}"(i64 256)
ret void
}
define preserve_mostcc void @t13() "target-features"="+reserve-r13" {
; CHECK-LABEL: t13:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r13d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r13},{r13}"(i64 256)
ret void
}
define preserve_mostcc void @t14() "target-features"="+reserve-r14" {
; CHECK-LABEL: t14:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r14d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r14},{r14}"(i64 256)
ret void
}
define preserve_mostcc void @t15() "target-features"="+reserve-r15" {
; CHECK-LABEL: t15:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r15d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r15},{r15}"(i64 256)
ret void
}
define preserve_mostcc void @t16() "target-features"="+egpr,+reserve-r16" {
; CHECK-LABEL: t16:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r16d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r16},{r16}"(i64 256)
ret void
}
define preserve_mostcc void @t31() "target-features"="+egpr,+reserve-r31" {
; CHECK-LABEL: t31:
; CHECK: # %bb.0:
; CHECK-NEXT: movl $256, %r31d
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={r31},{r31}"(i64 256)
ret void
}