diff options
Diffstat (limited to 'test/CodeGen/ARM/struct_byval.ll')
-rw-r--r-- | test/CodeGen/ARM/struct_byval.ll | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/CodeGen/ARM/struct_byval.ll b/test/CodeGen/ARM/struct_byval.ll index 130925a..d7b9b47 100644 --- a/test/CodeGen/ARM/struct_byval.ll +++ b/test/CodeGen/ARM/struct_byval.ll @@ -1,5 +1,9 @@ ; RUN: llc < %s -mtriple=armv7-apple-ios6.0 | FileCheck %s ; RUN: llc < %s -mtriple=thumbv7-apple-ios6.0 | FileCheck %s -check-prefix=THUMB +; RUN: llc < %s -mtriple=armv7-unknown-nacl-gnueabi | FileCheck %s -check-prefix=NACL +; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi | FileCheck %s -check-prefix=NOMOVT + +; NOMOVT-NOT: movt ; rdar://9877866 %struct.SmallStruct = type { i32, [8 x i32], [37 x i8] } @@ -33,6 +37,14 @@ entry: ; THUMB: sub ; THUMB: str ; THUMB: bne +; NACL-LABEL: g: +; Ensure that use movw instead of constpool for the loop trip count. But don't +; match the __stack_chk_guard movw +; NACL: movw r{{[1-9]}}, # +; NACL: ldr +; NACL: sub +; NACL: str +; NACL: bne %st = alloca %struct.LargeStruct, align 4 %call = call i32 @e2(%struct.LargeStruct* byval %st) ret i32 0 @@ -51,6 +63,11 @@ entry: ; THUMB: sub ; THUMB: vst1 ; THUMB: bne +; NACL: movw r{{[1-9]}}, # +; NACL: vld1 +; NACL: sub +; NACL: vst1 +; NACL: bne %st = alloca %struct.LargeStruct, align 16 %call = call i32 @e3(%struct.LargeStruct* byval align 16 %st) ret i32 0 @@ -80,7 +97,7 @@ define void @f4(%struct.SmallStruct* nocapture byval %s) nounwind optsize { ; THUMB-LABEL: f4 ; THUMB: blx _consumestruct entry: - %addr = getelementptr inbounds %struct.SmallStruct* %s, i32 0, i32 0 + %addr = getelementptr inbounds %struct.SmallStruct, %struct.SmallStruct* %s, i32 0, i32 0 %0 = bitcast i32* %addr to i8* tail call void @consumestruct(i8* %0, i32 80) optsize ret void @@ -104,7 +121,7 @@ define void @f6(i32 %a, i32 %b, i32 %c, i32 %d, %struct.SmallStruct* nocapture b ; THUMB-LABEL: f6 ; THUMB: b.w _consumestruct entry: - %addr = getelementptr inbounds %struct.SmallStruct* %s, i32 0, i32 0 + %addr = getelementptr inbounds %struct.SmallStruct, %struct.SmallStruct* %s, i32 0, i32 0 %0 = bitcast i32* %addr to i8* tail call void @consumestruct(i8* %0, i32 80) optsize ret void |