diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGen/arm-fp16-arguments.c | 21 | ||||
-rw-r--r-- | clang/test/Preprocessor/arm-acle-6.5.c | 2 | ||||
-rw-r--r-- | clang/test/Preprocessor/arm-target-features.c | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/clang/test/CodeGen/arm-fp16-arguments.c b/clang/test/CodeGen/arm-fp16-arguments.c new file mode 100644 index 00000000000..15a9ceb94cf --- /dev/null +++ b/clang/test/CodeGen/arm-fp16-arguments.c @@ -0,0 +1,21 @@ +// RUN: %clang_cc1 -triple armv7a--none-eabi -target-abi aapcs -mfloat-abi soft -fallow-half-arguments-and-returns -emit-llvm -o - -O1 %s | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT +// RUN: %clang_cc1 -triple armv7a--none-eabi -target-abi aapcs -mfloat-abi hard -fallow-half-arguments-and-returns -emit-llvm -o - -O1 %s | FileCheck %s --check-prefix=CHECK --check-prefix=HARD + +__fp16 g; + +void t1(__fp16 a) { g = a; } +// SOFT: define void @t1(i32 [[PARAM:%.*]]) +// SOFT: [[TRUNC:%.*]] = trunc i32 [[PARAM]] to i16 +// HARD: define arm_aapcs_vfpcc void @t1(float [[PARAM:%.*]]) +// HARD: [[BITCAST:%.*]] = bitcast float [[PARAM]] to i32 +// HARD: [[TRUNC:%.*]] = trunc i32 [[BITCAST]] to i16 +// CHECK: store i16 [[TRUNC]], i16* bitcast (half* @g to i16*) + +__fp16 t2() { return g; } +// SOFT: define i32 @t2() +// HARD: define arm_aapcs_vfpcc float @t2() +// CHECK: [[LOAD:%.*]] = load i16, i16* bitcast (half* @g to i16*) +// CHECK: [[ZEXT:%.*]] = zext i16 [[LOAD]] to i32 +// SOFT: ret i32 [[ZEXT]] +// HARD: [[BITCAST:%.*]] = bitcast i32 [[ZEXT]] to float +// HARD: ret float [[BITCAST]] diff --git a/clang/test/Preprocessor/arm-acle-6.5.c b/clang/test/Preprocessor/arm-acle-6.5.c index 9db83b774b0..bb3b25d5069 100644 --- a/clang/test/Preprocessor/arm-acle-6.5.c +++ b/clang/test/Preprocessor/arm-acle-6.5.c @@ -1,6 +1,6 @@ // RUN: %clang -target arm-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-DEFAULT -// CHECK-DEFAULT-NOT: __ARM_FP +// CHECK-DEFAULT-NOT: __ARM_FP 0x // RUN: %clang -target arm-eabi -mfpu=vfp -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP // RUN: %clang -target arm-eabi -mfpu=vfp3 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP diff --git a/clang/test/Preprocessor/arm-target-features.c b/clang/test/Preprocessor/arm-target-features.c index c4b887f4552..0cc909444fc 100644 --- a/clang/test/Preprocessor/arm-target-features.c +++ b/clang/test/Preprocessor/arm-target-features.c @@ -5,6 +5,8 @@ // CHECK: __ARM_FEATURE_CRC32 1 // CHECK: __ARM_FEATURE_DIRECTED_ROUNDING 1 // CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1 +// CHECK: __ARM_FP16_ARGS 1 +// CHECK: __ARM_FP16_FORMAT_IEEE 1 // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7 %s // CHECK-V7: __ARMEL__ 1 |