blob: 4a02675ec04fa6ec3f186e03f75f0a8245226bed [file] [log] [blame]
;; 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.
;; Look at AArch64Features.td for registers excluded from this test.
;; FIXME: Fix machine verifier issues and remove -verify-machineinstrs=0.
; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -verify-machineinstrs=0 | FileCheck %s
define preserve_mostcc void @t1() "target-features"="+reserve-x1" {
; CHECK-LABEL: t1:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w1, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x1},{x1}"(i64 256)
ret void
}
define preserve_mostcc void @t2() "target-features"="+reserve-x2" {
; CHECK-LABEL: t2:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w2, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x2},{x2}"(i64 256)
ret void
}
define preserve_mostcc void @t3() "target-features"="+reserve-x3" {
; CHECK-LABEL: t3:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w3, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x3},{x3}"(i64 256)
ret void
}
define preserve_mostcc void @t4() "target-features"="+reserve-x4" {
; CHECK-LABEL: t4:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w4, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x4},{x4}"(i64 256)
ret void
}
define preserve_mostcc void @t5() "target-features"="+reserve-x5" {
; CHECK-LABEL: t5:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w5, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x5},{x5}"(i64 256)
ret void
}
define preserve_mostcc void @t6() "target-features"="+reserve-x6" {
; CHECK-LABEL: t6:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w6, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x6},{x6}"(i64 256)
ret void
}
define preserve_mostcc void @t7() "target-features"="+reserve-x7" {
; CHECK-LABEL: t7:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w7, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x7},{x7}"(i64 256)
ret void
}
define preserve_mostcc void @t9() "target-features"="+reserve-x9" {
; CHECK-LABEL: t9:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w9, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x9},{x9}"(i64 256)
ret void
}
define preserve_mostcc void @t10() "target-features"="+reserve-x10" {
; CHECK-LABEL: t10:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w10, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x10},{x10}"(i64 256)
ret void
}
define preserve_mostcc void @t11() "target-features"="+reserve-x11" {
; CHECK-LABEL: t11:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w11, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x11},{x11}"(i64 256)
ret void
}
define preserve_mostcc void @t12() "target-features"="+reserve-x12" {
; CHECK-LABEL: t12:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w12, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x12},{x12}"(i64 256)
ret void
}
define preserve_mostcc void @t13() "target-features"="+reserve-x13" {
; CHECK-LABEL: t13:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w13, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x13},{x13}"(i64 256)
ret void
}
define preserve_mostcc void @t14() "target-features"="+reserve-x14" {
; CHECK-LABEL: t14:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w14, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x14},{x14}"(i64 256)
ret void
}
define preserve_mostcc void @t15() "target-features"="+reserve-x15" {
; CHECK-LABEL: t15:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w15, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x15},{x15}"(i64 256)
ret void
}
define preserve_mostcc void @t18() "target-features"="+reserve-x18" {
; CHECK-LABEL: t18:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w18, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x18},{x18}"(i64 256)
ret void
}
define preserve_mostcc void @t20() "target-features"="+reserve-x20" {
; CHECK-LABEL: t20:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w20, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x20},{x20}"(i64 256)
ret void
}
define preserve_mostcc void @t21() "target-features"="+reserve-x21" {
; CHECK-LABEL: t21:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w21, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x21},{x21}"(i64 256)
ret void
}
define preserve_mostcc void @t22() "target-features"="+reserve-x22" {
; CHECK-LABEL: t22:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w22, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x22},{x22}"(i64 256)
ret void
}
define preserve_mostcc void @t23() "target-features"="+reserve-x23" {
; CHECK-LABEL: t23:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w23, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x23},{x23}"(i64 256)
ret void
}
define preserve_mostcc void @t24() "target-features"="+reserve-x24" {
; CHECK-LABEL: t24:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w24, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x24},{x24}"(i64 256)
ret void
}
define preserve_mostcc void @t25() "target-features"="+reserve-x25" {
; CHECK-LABEL: t25:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w25, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x25},{x25}"(i64 256)
ret void
}
define preserve_mostcc void @t26() "target-features"="+reserve-x26" {
; CHECK-LABEL: t26:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w26, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x26},{x26}"(i64 256)
ret void
}
define preserve_mostcc void @t27() "target-features"="+reserve-x27" {
; CHECK-LABEL: t27:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w27, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x27},{x27}"(i64 256)
ret void
}
define preserve_mostcc void @t28() "target-features"="+reserve-x28" {
; CHECK-LABEL: t28:
; CHECK: // %bb.0:
; CHECK-NEXT: mov w28, #256
; CHECK-NEXT: //APP
; CHECK-NEXT: //NO_APP
; CHECK-NEXT: ret
call i64 asm sideeffect "", "={x28},{x28}"(i64 256)
ret void
}