1 // RUN: %clang_cc1 -triple armv7-eabi -emit-llvm %s -o - | \
2 // RUN: FileCheck %s --check-prefixes=CHECK,CHECK-SOFT
3 // RUN: %clang_cc1 -triple armv7-eabi -target-abi aapcs -mfloat-abi hard -emit-llvm %s -o - | \
4 // RUN: FileCheck %s --check-prefixes=CHECK,CHECK-HARD
5 // REQUIRES: arm-registered-target
7 // CHECK: %struct.S0 = type { [4 x float] }
8 // CHECK: %struct.S1 = type { [2 x float] }
9 // CHECK: %struct.S2 = type { [4 x float] }
10 // CHECK: %struct.D0 = type { [2 x double] }
11 // CHECK: %struct.D1 = type { [2 x double] }
12 // CHECK: %struct.D2 = type { [4 x double] }
19 // CHECK-SOFT: define{{.*}} float @f0([4 x i32] %s.coerce)
20 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc float @f0(%struct.S0 %s.coerce)
27 // CHECK-SOFT: call float @f0([4 x i32]
28 // CHECK-HARD: call arm_aapcs_vfpcc float @f0(%struct.S0
32 __attribute__((aligned(8))) float v
[2];
36 // CHECK-SOFT: define{{.*}} float @f1([1 x i64]
37 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc float @f1(%struct.S1 alignstack(8)
44 // CHECK-SOFT: call float @f1([1 x i64
45 // CHECK-HARD: call arm_aapcs_vfpcc float @f1(%struct.S1 alignstack(8)
49 __attribute__((aligned(16))) float v
[4];
53 // CHECK-SOFT: define{{.*}} float @f2([2 x i64]
54 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc float @f2(%struct.S2 alignstack(8)
61 // CHECK-SOFT: call float @f2([2 x i64]
62 // CHECK-HARD: call arm_aapcs_vfpcc float @f2(%struct.S2 alignstack(8)
70 // CHECK-SOFT: define{{.*}} double @g0([2 x i64]
71 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc double @g0(%struct.D0 %d.coerce
78 // CHECK-SOFT: call double @g0([2 x i64]
79 // CHECK-HARD: call arm_aapcs_vfpcc double @g0(%struct.D0 %0
83 __attribute__((aligned(16))) double v
[2];
87 // CHECK-SOFT: define{{.*}} double @g1([2 x i64]
88 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc double @g1(%struct.D1 alignstack(8)
95 // CHECK-SOFT: call double @g1([2 x i64]
96 // CHECK-HARD: call arm_aapcs_vfpcc double @g1(%struct.D1 alignstack(8)
100 __attribute__((aligned(32))) double v
[4];
104 // CHECK-SOFT: define{{.*}} double @g2([4 x i64]
105 // CHECK-HARD: define{{.*}} arm_aapcs_vfpcc double @g2(%struct.D2 alignstack(8)
112 // CHECK-SOFT: call double @g2([4 x i64]
113 // CHECK-HARD: call arm_aapcs_vfpcc double @g2(%struct.D2 alignstack(8)