Author: Simon Pilgrim Date: 2024-10-03T11:31:39+01:00 New Revision: 200dd6fb1764389cd57dc09575c7883d8fb02764
URL: https://github.com/llvm/llvm-project/commit/200dd6fb1764389cd57dc09575c7883d8fb02764 DIFF: https://github.com/llvm/llvm-project/commit/200dd6fb1764389cd57dc09575c7883d8fb02764.diff LOG: [clang][x86] Update SSE1/2/3 intrinsic tests for both C/C++ Requires some better checking of labels and some call instructions to handle additional markers Added: Modified: clang/test/CodeGen/X86/sse-builtins-constrained-cmp.c clang/test/CodeGen/X86/sse-builtins-constrained.c clang/test/CodeGen/X86/sse-builtins-dbg.c clang/test/CodeGen/X86/sse-builtins.c clang/test/CodeGen/X86/sse2-builtins-constrained-cmp.c clang/test/CodeGen/X86/sse2-builtins.c clang/test/CodeGen/X86/sse3-builtins.c clang/test/CodeGen/X86/ssse3-builtins.c Removed: ################################################################################ diff --git a/clang/test/CodeGen/X86/sse-builtins-constrained-cmp.c b/clang/test/CodeGen/X86/sse-builtins-constrained-cmp.c index eb1488885e5dd0..563fe3d86d8213 100644 --- a/clang/test/CodeGen/X86/sse-builtins-constrained-cmp.c +++ b/clang/test/CodeGen/X86/sse-builtins-constrained-cmp.c @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s #include <immintrin.h> diff --git a/clang/test/CodeGen/X86/sse-builtins-constrained.c b/clang/test/CodeGen/X86/sse-builtins-constrained.c index c67e230c2ff0fa..92240bbc5bb312 100644 --- a/clang/test/CodeGen/X86/sse-builtins-constrained.c +++ b/clang/test/CodeGen/X86/sse-builtins-constrained.c @@ -1,8 +1,12 @@ // REQUIRES: x86-registered-target -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=UNCONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=CONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=UNCONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=CONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=UNCONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefix=CONSTRAINED --check-prefix=COMMON --check-prefix=COMMONIR +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-linux-gnu -target-feature +sse -ffp-exception-behavior=maytrap -DSTRICT=1 -S -o - -Wall -Werror | FileCheck %s --check-prefix=CHECK-ASM --check-prefix=COMMON #ifdef STRICT // Test that the constrained intrinsics are picking up the exception @@ -16,8 +20,8 @@ __m128 test_mm_sqrt_ps(__m128 x) { // COMMON-LABEL: test_mm_sqrt_ps - // UNCONSTRAINED: call <4 x float> @llvm.sqrt.v4f32(<4 x float> {{.*}}) - // CONSTRAINED: call <4 x float> @llvm.experimental.constrained.sqrt.v4f32(<4 x float> {{.*}}, metadata !{{.*}}) + // UNCONSTRAINED: call {{.*}}<4 x float> @llvm.sqrt.v4f32(<4 x float> {{.*}}) + // CONSTRAINED: call {{.*}}<4 x float> @llvm.experimental.constrained.sqrt.v4f32(<4 x float> {{.*}}, metadata !{{.*}}) // CHECK-ASM: sqrtps return _mm_sqrt_ps(x); } diff --git a/clang/test/CodeGen/X86/sse-builtins-dbg.c b/clang/test/CodeGen/X86/sse-builtins-dbg.c index 25678942a89f06..e8d70d3fabd05b 100644 --- a/clang/test/CodeGen/X86/sse-builtins-dbg.c +++ b/clang/test/CodeGen/X86/sse-builtins-dbg.c @@ -1,12 +1,13 @@ -// RUN: %clang_cc1 -ffreestanding -triple x86_64-apple-macosx10.8.0 -target-feature +sse4.1 -debug-info-kind=limited -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -x c -ffreestanding -triple x86_64-apple-macosx10.8.0 -target-feature +sse4.1 -debug-info-kind=limited -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -x c++ -ffreestanding -triple x86_64-apple-macosx10.8.0 -target-feature +sse4.1 -debug-info-kind=limited -emit-llvm %s -o - | FileCheck %s // Test that intrinsic calls inlined from _mm_* wrappers have debug metadata. #include <xmmintrin.h> __m128 test_rsqrt_ss(__m128 x) { - // CHECK: define {{.*}} @test_rsqrt_ss - // CHECK: call <4 x float> @llvm.x86.sse.rsqrt.ss({{.*}}, !dbg !{{.*}} + // CHECK-LABEL: test_rsqrt_ss + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.rsqrt.ss({{.*}}, !dbg !{{.*}} // CHECK: ret <4 x float> return _mm_rsqrt_ss(x); } diff --git a/clang/test/CodeGen/X86/sse-builtins.c b/clang/test/CodeGen/X86/sse-builtins.c index aae5cfb8bb1d99..74f62e93c800b6 100644 --- a/clang/test/CodeGen/X86/sse-builtins.c +++ b/clang/test/CodeGen/X86/sse-builtins.c @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s -// RUN: %clang_cc1 -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse -emit-llvm -o - -Wall -Werror | FileCheck %s #include <immintrin.h> @@ -84,7 +86,7 @@ __m128 test_mm_cmp_ps_ord_q(__m128 a, __m128 b) { __m128 test_mm_cmp_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_cmp_ss - // CHECK: call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 7) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 7) return _mm_cmp_ss(A, B, _CMP_ORD_Q); } @@ -274,43 +276,43 @@ __m128 test_mm_cmpunord_ss(__m128 __a, __m128 __b) { int test_mm_comieq_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comieq_ss - // CHECK: call i32 @llvm.x86.sse.comieq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comieq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comieq_ss(A, B); } int test_mm_comige_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comige_ss - // CHECK: call i32 @llvm.x86.sse.comige.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comige.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comige_ss(A, B); } int test_mm_comigt_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comigt_ss - // CHECK: call i32 @llvm.x86.sse.comigt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comigt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comigt_ss(A, B); } int test_mm_comile_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comile_ss - // CHECK: call i32 @llvm.x86.sse.comile.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comile.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comile_ss(A, B); } int test_mm_comilt_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comilt_ss - // CHECK: call i32 @llvm.x86.sse.comilt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comilt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comilt_ss(A, B); } int test_mm_comineq_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_comineq_ss - // CHECK: call i32 @llvm.x86.sse.comineq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.comineq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_comineq_ss(A, B); } int test_mm_cvt_ss2si(__m128 A) { // CHECK-LABEL: test_mm_cvt_ss2si - // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}}) return _mm_cvt_ss2si(A); } @@ -338,34 +340,34 @@ float test_mm_cvtss_f32(__m128 A) { int test_mm_cvtss_si32(__m128 A) { // CHECK-LABEL: test_mm_cvtss_si32 - // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}}) return _mm_cvtss_si32(A); } #ifdef __x86_64__ long long test_mm_cvtss_si64(__m128 A) { // CHECK-LABEL: test_mm_cvtss_si64 - // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}}) return _mm_cvtss_si64(A); } #endif int test_mm_cvtt_ss2si(__m128 A) { // CHECK-LABEL: test_mm_cvtt_ss2si - // CHECK: call i32 @llvm.x86.sse.cvttss2si(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.cvttss2si(<4 x float> %{{.*}}) return _mm_cvtt_ss2si(A); } int test_mm_cvttss_si32(__m128 A) { // CHECK-LABEL: test_mm_cvttss_si32 - // CHECK: call i32 @llvm.x86.sse.cvttss2si(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.cvttss2si(<4 x float> %{{.*}}) return _mm_cvttss_si32(A); } #ifdef __x86_64__ long long test_mm_cvttss_si64(__m128 A) { // CHECK-LABEL: test_mm_cvttss_si64 - // CHECK: call i64 @llvm.x86.sse.cvttss2si64(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i64 @llvm.x86.sse.cvttss2si64(<4 x float> %{{.*}}) return _mm_cvttss_si64(A); } #endif @@ -530,7 +532,7 @@ __m128 test_mm_movelh_ps(__m128 A, __m128 B) { int test_mm_movemask_ps(__m128 A) { // CHECK-LABEL: test_mm_movemask_ps - // CHECK: call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.movmsk.ps(<4 x float> %{{.*}}) return _mm_movemask_ps(A); } @@ -563,25 +565,25 @@ void test_mm_prefetch(char const* p) { __m128 test_mm_rcp_ps(__m128 x) { // CHECK-LABEL: test_mm_rcp_ps - // CHECK: call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> {{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.rcp.ps(<4 x float> {{.*}}) return _mm_rcp_ps(x); } __m128 test_mm_rcp_ss(__m128 x) { // CHECK-LABEL: test_mm_rcp_ss - // CHECK: call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> {{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.rcp.ss(<4 x float> {{.*}}) return _mm_rcp_ss(x); } __m128 test_mm_rsqrt_ps(__m128 x) { // CHECK-LABEL: test_mm_rsqrt_ps - // CHECK: call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> {{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> {{.*}}) return _mm_rsqrt_ps(x); } __m128 test_mm_rsqrt_ss(__m128 x) { // CHECK-LABEL: test_mm_rsqrt_ss - // CHECK: call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> {{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> {{.*}}) return _mm_rsqrt_ss(x); } @@ -701,7 +703,7 @@ __m128 test_mm_shuffle_ps(__m128 A, __m128 B) { __m128 test_mm_sqrt_ps(__m128 x) { // CHECK-LABEL: test_mm_sqrt_ps - // CHECK: call <4 x float> @llvm.sqrt.v4f32(<4 x float> {{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.sqrt.v4f32(<4 x float> {{.*}}) return _mm_sqrt_ps(x); } @@ -810,37 +812,37 @@ void test_MM_TRANSPOSE4_PS(__m128 *A, __m128 *B, __m128 *C, __m128 *D) { int test_mm_ucomieq_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomieq_ss - // CHECK: call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomieq_ss(A, B); } int test_mm_ucomige_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomige_ss - // CHECK: call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomige.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomige_ss(A, B); } int test_mm_ucomigt_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomigt_ss - // CHECK: call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomigt_ss(A, B); } int test_mm_ucomile_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomile_ss - // CHECK: call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomile.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomile_ss(A, B); } int test_mm_ucomilt_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomilt_ss - // CHECK: call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomilt_ss(A, B); } int test_mm_ucomineq_ss(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_ucomineq_ss - // CHECK: call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_ucomineq_ss(A, B); } diff --git a/clang/test/CodeGen/X86/sse2-builtins-constrained-cmp.c b/clang/test/CodeGen/X86/sse2-builtins-constrained-cmp.c index f430bba9d06e85..732d4d53e4cf80 100644 --- a/clang/test/CodeGen/X86/sse2-builtins-constrained-cmp.c +++ b/clang/test/CodeGen/X86/sse2-builtins-constrained-cmp.c @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s -// RUN: %clang_cc1 -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s #include <immintrin.h> diff --git a/clang/test/CodeGen/X86/sse2-builtins.c b/clang/test/CodeGen/X86/sse2-builtins.c index 3ca7777e763359..a5348761ec84e0 100644 --- a/clang/test/CodeGen/X86/sse2-builtins.c +++ b/clang/test/CodeGen/X86/sse2-builtins.c @@ -1,8 +1,13 @@ -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 -// RUN: %clang_cc1 -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X86 +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64 #include <immintrin.h> @@ -210,7 +215,7 @@ __m128d test_mm_cmp_pd_ord_q(__m128d a, __m128d b) { __m128d test_mm_cmp_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmp_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) return _mm_cmp_sd(A, B, _CMP_ORD_Q); } @@ -242,7 +247,7 @@ __m128d test_mm_cmpeq_pd(__m128d A, __m128d B) { __m128d test_mm_cmpeq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpeq_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 0) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 0) return _mm_cmpeq_sd(A, B); } @@ -256,7 +261,7 @@ __m128d test_mm_cmpge_pd(__m128d A, __m128d B) { __m128d test_mm_cmpge_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpge_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) // CHECK: extractelement <2 x double> %{{.*}}, i32 0 // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 0 // CHECK: extractelement <2 x double> %{{.*}}, i32 1 @@ -292,7 +297,7 @@ __m128d test_mm_cmpgt_pd(__m128d A, __m128d B) { __m128d test_mm_cmpgt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpgt_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) // CHECK: extractelement <2 x double> %{{.*}}, i32 0 // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 0 // CHECK: extractelement <2 x double> %{{.*}}, i32 1 @@ -310,7 +315,7 @@ __m128d test_mm_cmple_pd(__m128d A, __m128d B) { __m128d test_mm_cmple_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmple_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) return _mm_cmple_sd(A, B); } @@ -342,7 +347,7 @@ __m128d test_mm_cmplt_pd(__m128d A, __m128d B) { __m128d test_mm_cmplt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmplt_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) return _mm_cmplt_sd(A, B); } @@ -356,7 +361,7 @@ __m128d test_mm_cmpneq_pd(__m128d A, __m128d B) { __m128d test_mm_cmpneq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpneq_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 4) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 4) return _mm_cmpneq_sd(A, B); } @@ -370,7 +375,7 @@ __m128d test_mm_cmpnge_pd(__m128d A, __m128d B) { __m128d test_mm_cmpnge_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpnge_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) // CHECK: extractelement <2 x double> %{{.*}}, i32 0 // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 0 // CHECK: extractelement <2 x double> %{{.*}}, i32 1 @@ -388,7 +393,7 @@ __m128d test_mm_cmpngt_pd(__m128d A, __m128d B) { __m128d test_mm_cmpngt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpngt_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) // CHECK: extractelement <2 x double> %{{.*}}, i32 0 // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 0 // CHECK: extractelement <2 x double> %{{.*}}, i32 1 @@ -406,7 +411,7 @@ __m128d test_mm_cmpnle_pd(__m128d A, __m128d B) { __m128d test_mm_cmpnle_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpnle_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) return _mm_cmpnle_sd(A, B); } @@ -420,7 +425,7 @@ __m128d test_mm_cmpnlt_pd(__m128d A, __m128d B) { __m128d test_mm_cmpnlt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpnlt_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) return _mm_cmpnlt_sd(A, B); } @@ -434,7 +439,7 @@ __m128d test_mm_cmpord_pd(__m128d A, __m128d B) { __m128d test_mm_cmpord_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpord_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) return _mm_cmpord_sd(A, B); } @@ -448,43 +453,43 @@ __m128d test_mm_cmpunord_pd(__m128d A, __m128d B) { __m128d test_mm_cmpunord_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_cmpunord_sd - // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 3) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 3) return _mm_cmpunord_sd(A, B); } int test_mm_comieq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comieq_sd - // CHECK: call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comieq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comieq_sd(A, B); } int test_mm_comige_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comige_sd - // CHECK: call i32 @llvm.x86.sse2.comige.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comige.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comige_sd(A, B); } int test_mm_comigt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comigt_sd - // CHECK: call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comigt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comigt_sd(A, B); } int test_mm_comile_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comile_sd - // CHECK: call i32 @llvm.x86.sse2.comile.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comile.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comile_sd(A, B); } int test_mm_comilt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comilt_sd - // CHECK: call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comilt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comilt_sd(A, B); } int test_mm_comineq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_comineq_sd - // CHECK: call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.comineq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_comineq_sd(A, B); } @@ -509,7 +514,7 @@ __m128i test_mm_cvtpd_epi32(__m128d A) { __m128 test_mm_cvtpd_ps(__m128d A) { // CHECK-LABEL: test_mm_cvtpd_ps - // CHECK: call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %{{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %{{.*}}) return _mm_cvtpd_ps(A); } @@ -534,21 +539,21 @@ double test_mm_cvtsd_f64(__m128d A) { int test_mm_cvtsd_si32(__m128d A) { // CHECK-LABEL: test_mm_cvtsd_si32 - // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}}) return _mm_cvtsd_si32(A); } #ifdef __x86_64__ long long test_mm_cvtsd_si64(__m128d A) { // X64-LABEL: test_mm_cvtsd_si64 - // X64: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}}) + // X64: call {{.*}}i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}}) return _mm_cvtsd_si64(A); } #endif __m128 test_mm_cvtsd_ss(__m128 A, __m128d B) { // CHECK-LABEL: test_mm_cvtsd_ss - // CHECK: call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %{{.*}}, <2 x double> %{{.*}}) return _mm_cvtsd_ss(A, B); } @@ -618,14 +623,14 @@ __m128i test_mm_cvttps_epi32(__m128 A) { int test_mm_cvttsd_si32(__m128d A) { // CHECK-LABEL: test_mm_cvttsd_si32 - // CHECK: call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %{{.*}}) return _mm_cvttsd_si32(A); } #ifdef __x86_64__ long long test_mm_cvttsd_si64(__m128d A) { // X64-LABEL: test_mm_cvttsd_si64 - // X64: call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> %{{.*}}) + // X64: call {{.*}}i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> %{{.*}}) return _mm_cvttsd_si64(A); } #endif @@ -699,7 +704,7 @@ __m128d test_mm_load1_pd(double const* A) { return _mm_load1_pd(A); } -__m128d test_mm_loadh_pd(__m128d x, void* y) { +__m128d test_mm_loadh_pd(__m128d x, double const* y) { // CHECK-LABEL: test_mm_loadh_pd // CHECK: load double, ptr %{{.*}}, align 1{{$}} // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 1 @@ -714,7 +719,7 @@ __m128i test_mm_loadl_epi64(__m128i* y) { return _mm_loadl_epi64(y); } -__m128d test_mm_loadl_pd(__m128d x, void* y) { +__m128d test_mm_loadl_pd(__m128d x, double const* y) { // CHECK-LABEL: test_mm_loadl_pd // CHECK: load double, ptr %{{.*}}, align 1{{$}} // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 0 @@ -800,13 +805,13 @@ __m128i test_mm_max_epu8(__m128i A, __m128i B) { __m128d test_mm_max_pd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_max_pd - // CHECK: call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.max.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_max_pd(A, B); } __m128d test_mm_max_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_max_sd - // CHECK: call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.max.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_max_sd(A, B); } @@ -830,13 +835,13 @@ __m128i test_mm_min_epu8(__m128i A, __m128i B) { __m128d test_mm_min_pd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_min_pd - // CHECK: call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.min.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_min_pd(A, B); } __m128d test_mm_min_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_min_sd - // CHECK: call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse2.min.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_min_sd(A, B); } @@ -871,13 +876,13 @@ __m128d test_mm_move_sd(__m128d A, __m128d B) { int test_mm_movemask_epi8(__m128i A) { // CHECK-LABEL: test_mm_movemask_epi8 - // CHECK: call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %{{.*}}) return _mm_movemask_epi8(A); } int test_mm_movemask_pd(__m128d A) { // CHECK-LABEL: test_mm_movemask_pd - // CHECK: call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %{{.*}}) return _mm_movemask_pd(A); } @@ -960,7 +965,7 @@ void test_mm_pause(void) { __m128i test_mm_sad_epu8(__m128i A, __m128i B) { // CHECK-LABEL: test_mm_sad_epu8 - // CHECK: call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) return _mm_sad_epu8(A, B); } @@ -1221,7 +1226,7 @@ __m128i test_mm_sll_epi32(__m128i A, __m128i B) { __m128i test_mm_sll_epi64(__m128i A, __m128i B) { // CHECK-LABEL: test_mm_sll_epi64 - // CHECK: call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) return _mm_sll_epi64(A, B); } @@ -1263,19 +1268,19 @@ __m128i test_mm_slli_epi32_2(__m128i A, int B) { __m128i test_mm_slli_epi64(__m128i A) { // CHECK-LABEL: test_mm_slli_epi64 - // CHECK: call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_slli_epi64(A, 1); } __m128i test_mm_slli_epi64_1(__m128i A) { // CHECK-LABEL: test_mm_slli_epi64_1 - // CHECK: call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_slli_epi64(A, -1); } __m128i test_mm_slli_epi64_2(__m128i A, int B) { // CHECK-LABEL: test_mm_slli_epi64_2 - // CHECK: call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_slli_epi64(A, B); } @@ -1293,7 +1298,7 @@ __m128i test_mm_slli_si128_2(__m128i A) { __m128d test_mm_sqrt_pd(__m128d A) { // CHECK-LABEL: test_mm_sqrt_pd - // CHECK: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}}) return _mm_sqrt_pd(A); } @@ -1367,7 +1372,7 @@ __m128i test_mm_srl_epi32(__m128i A, __m128i B) { __m128i test_mm_srl_epi64(__m128i A, __m128i B) { // CHECK-LABEL: test_mm_srl_epi64 - // CHECK: call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) return _mm_srl_epi64(A, B); } @@ -1409,19 +1414,19 @@ __m128i test_mm_srli_epi32_2(__m128i A, int B) { __m128i test_mm_srli_epi64(__m128i A) { // CHECK-LABEL: test_mm_srli_epi64 - // CHECK: call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_srli_epi64(A, 1); } __m128i test_mm_srli_epi64_1(__m128i A) { // CHECK-LABEL: test_mm_srli_epi64_1 - // CHECK: call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_srli_epi64(A, -1); } __m128i test_mm_srli_epi64_2(__m128i A, int B) { // CHECK-LABEL: test_mm_srli_epi64_2 - // CHECK: call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) + // CHECK: call {{.*}}<2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %{{.*}}, i32 %{{.*}}) return _mm_srli_epi64(A, B); } @@ -1481,7 +1486,7 @@ void test_mm_storel_epi64(__m128i x, void* y) { // CHECK-LABEL: test_mm_storel_epi64 // CHECK: extractelement <2 x i64> %{{.*}}, i32 0 // CHECK: store {{.*}} ptr {{.*}}, align 1{{$}} - _mm_storel_epi64(y, x); + _mm_storel_epi64((__m128i_u*)y, x); } void test_mm_storel_pd(double* A, __m128d B) { @@ -1653,37 +1658,37 @@ __m128i test_mm_subs_epu16(__m128i A, __m128i B) { int test_mm_ucomieq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomieq_sd - // CHECK: call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomieq_sd(A, B); } int test_mm_ucomige_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomige_sd - // CHECK: call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomige_sd(A, B); } int test_mm_ucomigt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomigt_sd - // CHECK: call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomigt_sd(A, B); } int test_mm_ucomile_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomile_sd - // CHECK: call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomile_sd(A, B); } int test_mm_ucomilt_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomilt_sd - // CHECK: call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomilt_sd(A, B); } int test_mm_ucomineq_sd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_ucomineq_sd - // CHECK: call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_ucomineq_sd(A, B); } diff --git a/clang/test/CodeGen/X86/sse3-builtins.c b/clang/test/CodeGen/X86/sse3-builtins.c index efc9c31d356d90..57a18dadefaa89 100644 --- a/clang/test/CodeGen/X86/sse3-builtins.c +++ b/clang/test/CodeGen/X86/sse3-builtins.c @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse3 -emit-llvm -o - -Wall -Werror | FileCheck %s #include <immintrin.h> @@ -8,37 +10,37 @@ __m128d test_mm_addsub_pd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_addsub_pd - // CHECK: call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_addsub_pd(A, B); } __m128 test_mm_addsub_ps(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_addsub_ps - // CHECK: call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_addsub_ps(A, B); } __m128d test_mm_hadd_pd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_hadd_pd - // CHECK: call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_hadd_pd(A, B); } __m128 test_mm_hadd_ps(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_hadd_ps - // CHECK: call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_hadd_ps(A, B); } __m128d test_mm_hsub_pd(__m128d A, __m128d B) { // CHECK-LABEL: test_mm_hsub_pd - // CHECK: call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) + // CHECK: call {{.*}}<2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}) return _mm_hsub_pd(A, B); } __m128 test_mm_hsub_ps(__m128 A, __m128 B) { // CHECK-LABEL: test_mm_hsub_ps - // CHECK: call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) + // CHECK: call {{.*}}<4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}) return _mm_hsub_ps(A, B); } diff --git a/clang/test/CodeGen/X86/ssse3-builtins.c b/clang/test/CodeGen/X86/ssse3-builtins.c index ea65af0447e911..982c74c5fc3b40 100644 --- a/clang/test/CodeGen/X86/ssse3-builtins.c +++ b/clang/test/CodeGen/X86/ssse3-builtins.c @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s -// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s +// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +ssse3 -emit-llvm -o - -Wall -Werror | FileCheck %s #include <immintrin.h> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits