diff options
Diffstat (limited to 'test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll')
-rw-r--r-- | test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll b/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll index b0644d17431d..f864c8cbfcb5 100644 --- a/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll +++ b/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll @@ -7,7 +7,7 @@ declare void @llvm.va_start(i8*) nounwind declare void @llvm.va_end(i8*) nounwind -; CHECK: test_byval_8_bytes_alignment: +; CHECK-LABEL: test_byval_8_bytes_alignment: define void @test_byval_8_bytes_alignment(i32 %i, ...) { entry: ; CHECK: stm r0, {r1, r2, r3} @@ -23,8 +23,12 @@ entry: ret void } -; CHECK: main: -; CHECK: ldm r0, {r2, r3} +; CHECK-LABEL: main: +; CHECK: movw [[BASE:r[0-9]+]], :lower16:static_val +; CHECK: movt [[BASE]], :upper16:static_val +; ldm is not formed when the coalescer failed to coalesce everything. +; CHECK: ldrd r2, [[TMP:r[0-9]+]], {{\[}}[[BASE]]{{\]}} +; CHECK: movw r0, #555 define i32 @main() { entry: call void (i32, ...)* @test_byval_8_bytes_alignment(i32 555, %struct_t* byval @static_val) @@ -33,7 +37,7 @@ entry: declare void @f(double); -; CHECK: test_byval_8_bytes_alignment_fixed_arg: +; CHECK-LABEL: test_byval_8_bytes_alignment_fixed_arg: ; CHECK-NOT: str r1 ; CHECK: str r3, [sp, #12] ; CHECK: str r2, [sp, #8] @@ -46,11 +50,14 @@ entry: ret void } -; CHECK: main_fixed_arg: -; CHECK: ldm r0, {r2, r3} +; CHECK-LABEL: main_fixed_arg: +; CHECK: movw [[BASE:r[0-9]+]], :lower16:static_val +; CHECK: movt [[BASE]], :upper16:static_val +; ldm is not formed when the coalescer failed to coalesce everything. +; CHECK: ldrd r2, [[TMP:r[0-9]+]], {{\[}}[[BASE]]{{\]}} +; CHECK: movw r0, #555 define i32 @main_fixed_arg() { entry: call void (i32, %struct_t*)* @test_byval_8_bytes_alignment_fixed_arg(i32 555, %struct_t* byval @static_val) ret i32 0 } - |