summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2015-10-11 18:33:48 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2015-10-11 18:33:48 +0000
commit18a048e1cd60389756db8f09126c924eb7508fb4 (patch)
tree357ccc9ee7506ea08b0cd0e8caa2b9573c064b4b /llvm
parent87990ee4ecc3820a74d8eae1df1a02941cee53f7 (diff)
downloadbcm5719-llvm-18a048e1cd60389756db8f09126c924eb7508fb4.tar.gz
bcm5719-llvm-18a048e1cd60389756db8f09126c924eb7508fb4.zip
[X86] Completed SHL cost model tests
As discussed in D8690. llvm-svn: 249990
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/Analysis/CostModel/X86/vshift-shl-cost.ll400
1 files changed, 399 insertions, 1 deletions
diff --git a/llvm/test/Analysis/CostModel/X86/vshift-shl-cost.ll b/llvm/test/Analysis/CostModel/X86/vshift-shl-cost.ll
index 5a0c86cdc7c..116828c9964 100644
--- a/llvm/test/Analysis/CostModel/X86/vshift-shl-cost.ll
+++ b/llvm/test/Analysis/CostModel/X86/vshift-shl-cost.ll
@@ -5,9 +5,407 @@
; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver2 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=XOP -check-prefix=XOPAVX
; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver4 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=XOP -check-prefix=XOPAVX2
-
; Verify the cost of vector shift left instructions.
+;
+;
+; Variable Shifts
+;
+
+define <2 x i64> @var_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v2i64':
+; SSE2: Found an estimated cost of 4 for instruction: %shift
+; SSE41: Found an estimated cost of 4 for instruction: %shift
+; AVX: Found an estimated cost of 4 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <2 x i64> %a, %b
+ ret <2 x i64> %shift
+}
+
+define <4 x i64> @var_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v4i64':
+; SSE2: Found an estimated cost of 8 for instruction: %shift
+; SSE41: Found an estimated cost of 8 for instruction: %shift
+; AVX: Found an estimated cost of 8 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i64> %a, %b
+ ret <4 x i64> %shift
+}
+
+define <4 x i32> @var_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v4i32':
+; SSE2: Found an estimated cost of 10 for instruction: %shift
+; SSE41: Found an estimated cost of 10 for instruction: %shift
+; AVX: Found an estimated cost of 10 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i32> %a, %b
+ ret <4 x i32> %shift
+}
+
+define <8 x i32> @var_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v8i32':
+; SSE2: Found an estimated cost of 20 for instruction: %shift
+; SSE41: Found an estimated cost of 20 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i32> %a, %b
+ ret <8 x i32> %shift
+}
+
+define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v8i16':
+; SSE2: Found an estimated cost of 32 for instruction: %shift
+; SSE41: Found an estimated cost of 32 for instruction: %shift
+; AVX: Found an estimated cost of 32 for instruction: %shift
+; AVX2: Found an estimated cost of 32 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i16> %a, %b
+ ret <8 x i16> %shift
+}
+
+define <16 x i16> @var_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v16i16':
+; SSE2: Found an estimated cost of 64 for instruction: %shift
+; SSE41: Found an estimated cost of 64 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 10 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %shift = shl <16 x i16> %a, %b
+ ret <16 x i16> %shift
+}
+
+define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v16i8':
+; SSE2: Found an estimated cost of 26 for instruction: %shift
+; SSE41: Found an estimated cost of 26 for instruction: %shift
+; AVX: Found an estimated cost of 26 for instruction: %shift
+; AVX2: Found an estimated cost of 26 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <16 x i8> %a, %b
+ ret <16 x i8> %shift
+}
+
+define <32 x i8> @var_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
+; CHECK: 'Cost Model Analysis' for function 'var_shift_v32i8':
+; SSE2: Found an estimated cost of 52 for instruction: %shift
+; SSE41: Found an estimated cost of 52 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 11 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %shift = shl <32 x i8> %a, %b
+ ret <32 x i8> %shift
+}
+
+;
+; Uniform Variable Shifts
+;
+
+define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
+; SSE2: Found an estimated cost of 4 for instruction: %shift
+; SSE41: Found an estimated cost of 4 for instruction: %shift
+; AVX: Found an estimated cost of 4 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
+ %shift = shl <2 x i64> %a, %splat
+ ret <2 x i64> %shift
+}
+
+define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
+; SSE2: Found an estimated cost of 8 for instruction: %shift
+; SSE41: Found an estimated cost of 8 for instruction: %shift
+; AVX: Found an estimated cost of 8 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <4 x i64> %b, <4 x i64> undef, <4 x i32> zeroinitializer
+ %shift = shl <4 x i64> %a, %splat
+ ret <4 x i64> %shift
+}
+
+define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
+; SSE2: Found an estimated cost of 10 for instruction: %shift
+; SSE41: Found an estimated cost of 10 for instruction: %shift
+; AVX: Found an estimated cost of 10 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <4 x i32> %b, <4 x i32> undef, <4 x i32> zeroinitializer
+ %shift = shl <4 x i32> %a, %splat
+ ret <4 x i32> %shift
+}
+
+define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
+; SSE2: Found an estimated cost of 20 for instruction: %shift
+; SSE41: Found an estimated cost of 20 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <8 x i32> %b, <8 x i32> undef, <8 x i32> zeroinitializer
+ %shift = shl <8 x i32> %a, %splat
+ ret <8 x i32> %shift
+}
+
+define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
+; SSE2: Found an estimated cost of 32 for instruction: %shift
+; SSE41: Found an estimated cost of 32 for instruction: %shift
+; AVX: Found an estimated cost of 32 for instruction: %shift
+; AVX2: Found an estimated cost of 32 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <8 x i16> %b, <8 x i16> undef, <8 x i32> zeroinitializer
+ %shift = shl <8 x i16> %a, %splat
+ ret <8 x i16> %shift
+}
+
+define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
+; SSE2: Found an estimated cost of 64 for instruction: %shift
+; SSE41: Found an estimated cost of 64 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 10 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
+ %shift = shl <16 x i16> %a, %splat
+ ret <16 x i16> %shift
+}
+
+define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
+; SSE2: Found an estimated cost of 26 for instruction: %shift
+; SSE41: Found an estimated cost of 26 for instruction: %shift
+; AVX: Found an estimated cost of 26 for instruction: %shift
+; AVX2: Found an estimated cost of 26 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %splat = shufflevector <16 x i8> %b, <16 x i8> undef, <16 x i32> zeroinitializer
+ %shift = shl <16 x i8> %a, %splat
+ ret <16 x i8> %shift
+}
+
+define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
+; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
+; SSE2: Found an estimated cost of 52 for instruction: %shift
+; SSE41: Found an estimated cost of 52 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 11 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %splat = shufflevector <32 x i8> %b, <32 x i8> undef, <32 x i32> zeroinitializer
+ %shift = shl <32 x i8> %a, %splat
+ ret <32 x i8> %shift
+}
+
+;
+; Constant Shifts
+;
+
+define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v2i64':
+; SSE2: Found an estimated cost of 4 for instruction: %shift
+; SSE41: Found an estimated cost of 4 for instruction: %shift
+; AVX: Found an estimated cost of 4 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <2 x i64> %a, <i64 1, i64 7>
+ ret <2 x i64> %shift
+}
+
+define <4 x i64> @constant_shift_v4i64(<4 x i64> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v4i64':
+; SSE2: Found an estimated cost of 8 for instruction: %shift
+; SSE41: Found an estimated cost of 8 for instruction: %shift
+; AVX: Found an estimated cost of 8 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>
+ ret <4 x i64> %shift
+}
+
+define <4 x i32> @constant_shift_v4i32(<4 x i32> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v4i32':
+; SSE2: Found an estimated cost of 6 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>
+ ret <4 x i32> %shift
+}
+
+define <8 x i32> @constant_shift_v8i32(<8 x i32> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v8i32':
+; SSE2: Found an estimated cost of 12 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 4 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
+ ret <8 x i32> %shift
+}
+
+define <8 x i16> @constant_shift_v8i16(<8 x i16> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v8i16':
+; SSE2: Found an estimated cost of 1 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>
+ ret <8 x i16> %shift
+}
+
+define <16 x i16> @constant_shift_v16i16(<16 x i16> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v16i16':
+; SSE2: Found an estimated cost of 2 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 4 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>
+ ret <16 x i16> %shift
+}
+
+define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v16i8':
+; SSE2: Found an estimated cost of 26 for instruction: %shift
+; SSE41: Found an estimated cost of 26 for instruction: %shift
+; AVX: Found an estimated cost of 26 for instruction: %shift
+; AVX2: Found an estimated cost of 26 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>
+ ret <16 x i8> %shift
+}
+
+define <32 x i8> @constant_shift_v32i8(<32 x i8> %a) {
+; CHECK: 'Cost Model Analysis' for function 'constant_shift_v32i8':
+; SSE2: Found an estimated cost of 52 for instruction: %shift
+; SSE41: Found an estimated cost of 52 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 11 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %shift = shl <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>
+ ret <32 x i8> %shift
+}
+
+;
+; Uniform Constant Shifts
+;
+
+define <2 x i64> @splatconstant_shift_v2i64(<2 x i64> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v2i64':
+; SSE2: Found an estimated cost of 1 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <2 x i64> %a, <i64 7, i64 7>
+ ret <2 x i64> %shift
+}
+
+define <4 x i64> @splatconstant_shift_v4i64(<4 x i64> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v4i64':
+; SSE2: Found an estimated cost of 2 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 8 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i64> %a, <i64 7, i64 7, i64 7, i64 7>
+ ret <4 x i64> %shift
+}
+
+define <4 x i32> @splatconstant_shift_v4i32(<4 x i32> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v4i32':
+; SSE2: Found an estimated cost of 1 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <4 x i32> %a, <i32 5, i32 5, i32 5, i32 5>
+ ret <4 x i32> %shift
+}
+
+define <8 x i32> @splatconstant_shift_v8i32(<8 x i32> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v8i32':
+; SSE2: Found an estimated cost of 2 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
+ ret <8 x i32> %shift
+}
+
+define <8 x i16> @splatconstant_shift_v8i16(<8 x i16> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v8i16':
+; SSE2: Found an estimated cost of 1 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <8 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
+ ret <8 x i16> %shift
+}
+
+define <16 x i16> @splatconstant_shift_v16i16(<16 x i16> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v16i16':
+; SSE2: Found an estimated cost of 2 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOPAVX: Found an estimated cost of 2 for instruction: %shift
+; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <16 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
+ ret <16 x i16> %shift
+}
+
+define <16 x i8> @splatconstant_shift_v16i8(<16 x i8> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v16i8':
+; SSE2: Found an estimated cost of 1 for instruction: %shift
+; SSE41: Found an estimated cost of 1 for instruction: %shift
+; AVX: Found an estimated cost of 1 for instruction: %shift
+; AVX2: Found an estimated cost of 1 for instruction: %shift
+; XOP: Found an estimated cost of 1 for instruction: %shift
+ %shift = shl <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
+ ret <16 x i8> %shift
+}
+
+define <32 x i8> @splatconstant_shift_v32i8(<32 x i8> %a) {
+; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v32i8':
+; SSE2: Found an estimated cost of 2 for instruction: %shift
+; SSE41: Found an estimated cost of 2 for instruction: %shift
+; AVX: Found an estimated cost of 2 for instruction: %shift
+; AVX2: Found an estimated cost of 11 for instruction: %shift
+; XOP: Found an estimated cost of 2 for instruction: %shift
+ %shift = shl <32 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
+ ret <32 x i8> %shift
+}
+
+;
+; Special Cases
+;
+
; We always emit a single pmullw in the case of v8i16 vector shifts by
; non-uniform constant.
OpenPOWER on IntegriCloud