summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2015-07-29 20:31:45 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2015-07-29 20:31:45 +0000
commit86478c6909ebd71667413fb27b483d3bc0bff3dc (patch)
tree610104db9faf7f3eaf6feb55aeefa88e36d42629 /llvm/test/Analysis
parent46682630f41e0ed95b7f5ea73f2445357b16c67b (diff)
downloadbcm5719-llvm-86478c6909ebd71667413fb27b483d3bc0bff3dc.tar.gz
bcm5719-llvm-86478c6909ebd71667413fb27b483d3bc0bff3dc.zip
[X86][SSE] Vectorize i64 ASHR operations
This patch vectorizes the v2i64/v4i64 ASHR shift operations - the last remaining integer vector shifts that are still being transferred to/from the scalar unit to be completed. Differential Revision: http://reviews.llvm.org/D11439 llvm-svn: 243569
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r--llvm/test/Analysis/CostModel/X86/arith.ll4
-rw-r--r--llvm/test/Analysis/CostModel/X86/testshiftashr.ll32
2 files changed, 18 insertions, 18 deletions
diff --git a/llvm/test/Analysis/CostModel/X86/arith.ll b/llvm/test/Analysis/CostModel/X86/arith.ll
index 92f5a1ec3a0..0b61d3cd421 100644
--- a/llvm/test/Analysis/CostModel/X86/arith.ll
+++ b/llvm/test/Analysis/CostModel/X86/arith.ll
@@ -94,7 +94,7 @@ define void @shift() {
; AVX2: cost of 1 {{.*}} ashr
%C0 = ashr <4 x i32> undef, undef
; AVX: cost of 6 {{.*}} ashr
- ; AVX2: cost of 20 {{.*}} ashr
+ ; AVX2: cost of 4 {{.*}} ashr
%C1 = ashr <2 x i64> undef, undef
ret void
@@ -121,7 +121,7 @@ define void @avx2shift() {
; AVX2: cost of 1 {{.*}} ashr
%C0 = ashr <8 x i32> undef, undef
; AVX: cost of 12 {{.*}} ashr
- ; AVX2: cost of 40 {{.*}} ashr
+ ; AVX2: cost of 4 {{.*}} ashr
%C1 = ashr <4 x i64> undef, undef
ret void
diff --git a/llvm/test/Analysis/CostModel/X86/testshiftashr.ll b/llvm/test/Analysis/CostModel/X86/testshiftashr.ll
index da4e7d466e2..13f2bd2019d 100644
--- a/llvm/test/Analysis/CostModel/X86/testshiftashr.ll
+++ b/llvm/test/Analysis/CostModel/X86/testshiftashr.ll
@@ -5,9 +5,9 @@
define %shifttype @shift2i16(%shifttype %a, %shifttype %b) {
entry:
; SSE2: shift2i16
- ; SSE2: cost of 20 {{.*}} ashr
+ ; SSE2: cost of 12 {{.*}} ashr
; SSE2-CODEGEN: shift2i16
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype %a , %b
ret %shifttype %0
@@ -65,9 +65,9 @@ entry:
define %shifttype2i32 @shift2i32(%shifttype2i32 %a, %shifttype2i32 %b) {
entry:
; SSE2: shift2i32
- ; SSE2: cost of 20 {{.*}} ashr
+ ; SSE2: cost of 12 {{.*}} ashr
; SSE2-CODEGEN: shift2i32
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype2i32 %a , %b
ret %shifttype2i32 %0
@@ -125,9 +125,9 @@ entry:
define %shifttype2i64 @shift2i64(%shifttype2i64 %a, %shifttype2i64 %b) {
entry:
; SSE2: shift2i64
- ; SSE2: cost of 20 {{.*}} ashr
+ ; SSE2: cost of 12 {{.*}} ashr
; SSE2-CODEGEN: shift2i64
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype2i64 %a , %b
ret %shifttype2i64 %0
@@ -137,9 +137,9 @@ entry:
define %shifttype4i64 @shift4i64(%shifttype4i64 %a, %shifttype4i64 %b) {
entry:
; SSE2: shift4i64
- ; SSE2: cost of 40 {{.*}} ashr
+ ; SSE2: cost of 24 {{.*}} ashr
; SSE2-CODEGEN: shift4i64
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype4i64 %a , %b
ret %shifttype4i64 %0
@@ -149,9 +149,9 @@ entry:
define %shifttype8i64 @shift8i64(%shifttype8i64 %a, %shifttype8i64 %b) {
entry:
; SSE2: shift8i64
- ; SSE2: cost of 80 {{.*}} ashr
+ ; SSE2: cost of 48 {{.*}} ashr
; SSE2-CODEGEN: shift8i64
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype8i64 %a , %b
ret %shifttype8i64 %0
@@ -161,9 +161,9 @@ entry:
define %shifttype16i64 @shift16i64(%shifttype16i64 %a, %shifttype16i64 %b) {
entry:
; SSE2: shift16i64
- ; SSE2: cost of 160 {{.*}} ashr
+ ; SSE2: cost of 96 {{.*}} ashr
; SSE2-CODEGEN: shift16i64
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype16i64 %a , %b
ret %shifttype16i64 %0
@@ -173,9 +173,9 @@ entry:
define %shifttype32i64 @shift32i64(%shifttype32i64 %a, %shifttype32i64 %b) {
entry:
; SSE2: shift32i64
- ; SSE2: cost of 320 {{.*}} ashr
+ ; SSE2: cost of 192 {{.*}} ashr
; SSE2-CODEGEN: shift32i64
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype32i64 %a , %b
ret %shifttype32i64 %0
@@ -185,9 +185,9 @@ entry:
define %shifttype2i8 @shift2i8(%shifttype2i8 %a, %shifttype2i8 %b) {
entry:
; SSE2: shift2i8
- ; SSE2: cost of 20 {{.*}} ashr
+ ; SSE2: cost of 12 {{.*}} ashr
; SSE2-CODEGEN: shift2i8
- ; SSE2-CODEGEN: sarq %cl
+ ; SSE2-CODEGEN: psrlq
%0 = ashr %shifttype2i8 %a , %b
ret %shifttype2i8 %0
OpenPOWER on IntegriCloud