diff options
author | Craig Topper <craig.topper@intel.com> | 2019-07-10 17:11:29 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-07-10 17:11:29 +0000 |
commit | caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6 (patch) | |
tree | 32c886d66f32f46f4d063ca891fff1150189f6ac /clang/test/CodeGen/sse-builtins.c | |
parent | f9cb127ca92fddeca203ce01592f10e9a53ef077 (diff) | |
download | bcm5719-llvm-caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6.tar.gz bcm5719-llvm-caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6.zip |
[X86] Change the IR sequence for _mm_storeh_pi and _mm_storel_pi to perform the store as a <2 x float> instead of i64.
This is similar to what we do for loadl_pi and loadh_pi.
llvm-svn: 365669
Diffstat (limited to 'clang/test/CodeGen/sse-builtins.c')
-rw-r--r-- | clang/test/CodeGen/sse-builtins.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/clang/test/CodeGen/sse-builtins.c b/clang/test/CodeGen/sse-builtins.c index eb47c190b95..4179341fadf 100644 --- a/clang/test/CodeGen/sse-builtins.c +++ b/clang/test/CodeGen/sse-builtins.c @@ -688,17 +688,15 @@ void test_mm_store1_ps(float* x, __m128 y) { void test_mm_storeh_pi(__m64* x, __m128 y) { // CHECK-LABEL: test_mm_storeh_pi - // CHECK: bitcast <4 x float> %{{.*}} to <2 x i64> - // CHECK: extractelement <2 x i64> %{{.*}}, i64 1 - // CHECK: store i64 %{{.*}}, i64* {{.*}} + // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <2 x i32> <i32 2, i32 3> + // CHECK: store <2 x float> %{{.*}}, <2 x float>* %{{.*}}, align 1{{$}} _mm_storeh_pi(x, y); } void test_mm_storel_pi(__m64* x, __m128 y) { // CHECK-LABEL: test_mm_storel_pi - // CHECK: bitcast <4 x float> %{{.*}} to <2 x i64> - // CHECK: extractelement <2 x i64> %{{.*}}, i64 0 - // CHECK: store i64 %{{.*}}, i64* {{.*}} + // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <2 x i32> <i32 0, i32 1> + // CHECK: store <2 x float> %{{.*}}, <2 x float>* %{{.*}}, align 1{{$}} _mm_storel_pi(x, y); } |