diff options
Diffstat (limited to 'test/CodeGen/x86_64-arguments.c')
-rw-r--r-- | test/CodeGen/x86_64-arguments.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/test/CodeGen/x86_64-arguments.c b/test/CodeGen/x86_64-arguments.c index e82e7b0..c412e3c 100644 --- a/test/CodeGen/x86_64-arguments.c +++ b/test/CodeGen/x86_64-arguments.c @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s| FileCheck %s -// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | \ +// RUN: FileCheck %s -check-prefix=CHECK -check-prefix=SSE +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | \ +// RUN: FileCheck %s -check-prefix=CHECK -check-prefix=AVX #include <stdarg.h> // CHECK-LABEL: define signext i8 @f0() @@ -288,8 +290,8 @@ v2i32 f36(v2i32 arg) { return arg; } // AVX: declare void @f38(<8 x float>) // AVX: declare void @f37(<8 x float>) -// CHECK: declare void @f38(%struct.s256* byval align 32) -// CHECK: declare void @f37(<8 x float>* byval align 32) +// SSE: declare void @f38(%struct.s256* byval align 32) +// SSE: declare void @f37(<8 x float>* byval align 32) typedef float __m256 __attribute__ ((__vector_size__ (32))); typedef struct { __m256 m; @@ -402,18 +404,18 @@ void test49(double d, double e) { test49_helper(d, e); } // CHECK-LABEL: define void @test49( -// CHECK: [[T0:%.*]] = load double* -// CHECK-NEXT: [[T1:%.*]] = load double* -// CHECK-NEXT: call void (double, ...)* @test49_helper(double [[T0]], double [[T1]]) +// CHECK: [[T0:%.*]] = load double, double* +// CHECK-NEXT: [[T1:%.*]] = load double, double* +// CHECK-NEXT: call void (double, ...) @test49_helper(double [[T0]], double [[T1]]) void test50_helper(); void test50(double d, double e) { test50_helper(d, e); } // CHECK-LABEL: define void @test50( -// CHECK: [[T0:%.*]] = load double* -// CHECK-NEXT: [[T1:%.*]] = load double* -// CHECK-NEXT: call void (double, double, ...)* bitcast (void (...)* @test50_helper to void (double, double, ...)*)(double [[T0]], double [[T1]]) +// CHECK: [[T0:%.*]] = load double, double* +// CHECK-NEXT: [[T1:%.*]] = load double, double* +// CHECK-NEXT: call void (double, double, ...) bitcast (void (...)* @test50_helper to void (double, double, ...)*)(double [[T0]], double [[T1]]) struct test51_s { __uint128_t intval; }; void test51(struct test51_s *s, __builtin_va_list argList) { @@ -424,8 +426,8 @@ void test51(struct test51_s *s, __builtin_va_list argList) { // CHECK: [[TMP_ADDR:%.*]] = alloca [[STRUCT_TEST51:%.*]], align 16 // CHECK: br i1 // CHECK: [[REG_SAVE_AREA_PTR:%.*]] = getelementptr inbounds {{.*}}, i32 0, i32 3 -// CHECK-NEXT: [[REG_SAVE_AREA:%.*]] = load i8** [[REG_SAVE_AREA_PTR]] -// CHECK-NEXT: [[VALUE_ADDR:%.*]] = getelementptr i8* [[REG_SAVE_AREA]], i32 {{.*}} +// CHECK-NEXT: [[REG_SAVE_AREA:%.*]] = load i8*, i8** [[REG_SAVE_AREA_PTR]] +// CHECK-NEXT: [[VALUE_ADDR:%.*]] = getelementptr i8, i8* [[REG_SAVE_AREA]], i32 {{.*}} // CHECK-NEXT: [[CASTED_VALUE_ADDR:%.*]] = bitcast i8* [[VALUE_ADDR]] to [[STRUCT_TEST51]] // CHECK-NEXT: [[CASTED_TMP_ADDR:%.*]] = bitcast [[STRUCT_TEST51]]* [[TMP_ADDR]] to i8* // CHECK-NEXT: [[RECASTED_VALUE_ADDR:%.*]] = bitcast [[STRUCT_TEST51]]* [[CASTED_VALUE_ADDR]] to i8* |