summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/sse-builtins.c
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-07-10 17:11:29 +0000
committerCraig Topper <craig.topper@intel.com>2019-07-10 17:11:29 +0000
commitcaf6b71ab2e6f9de3efe6ed71e9a21579b9994b6 (patch)
tree32c886d66f32f46f4d063ca891fff1150189f6ac /clang/test/CodeGen/sse-builtins.c
parentf9cb127ca92fddeca203ce01592f10e9a53ef077 (diff)
downloadbcm5719-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.c10
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);
}
OpenPOWER on IntegriCloud