[CostModel][X86] Update vector shift tests to correctly check by non-constant uniform values.
Use shuffle( scslar_to_vector, zeroinitializer) pattern instead of shuffle( vec, zeroinitializer) llvm-svn: 292075
This commit is contained in:
parent
b0d60574ff
commit
9b169e3c22
|
@ -177,130 +177,140 @@ define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; Uniform Variable Shifts
|
; Uniform Variable Shifts
|
||||||
;
|
;
|
||||||
|
|
||||||
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
|
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
||||||
; SSE2: Found an estimated cost of 12 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 12 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 12 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 4 for instruction: %shift
|
; AVX2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
|
%insert = insertelement <2 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer
|
||||||
%shift = ashr <2 x i64> %a, %splat
|
%shift = ashr <2 x i64> %a, %splat
|
||||||
ret <2 x i64> %shift
|
ret <2 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
||||||
; SSE2: Found an estimated cost of 24 for instruction: %shift
|
; SSE2: Found an estimated cost of 8 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
; SSE41: Found an estimated cost of 8 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 24 for instruction: %shift
|
; AVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 4 for instruction: %shift
|
; AVX2: Found an estimated cost of 8 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <4 x i64> %b, <4 x i64> undef, <4 x i32> zeroinitializer
|
; XOPAVX2: Found an estimated cost of 4 for instruction: %shift
|
||||||
|
%insert = insertelement <4 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer
|
||||||
%shift = ashr <4 x i64> %a, %splat
|
%shift = ashr <4 x i64> %a, %splat
|
||||||
ret <4 x i64> %shift
|
ret <4 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, <8 x i64> %b) {
|
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
||||||
; SSE2: Found an estimated cost of 48 for instruction: %shift
|
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
; SSE41: Found an estimated cost of 16 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 48 for instruction: %shift
|
; AVX: Found an estimated cost of 16 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 8 for instruction: %shift
|
; AVX2: Found an estimated cost of 16 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 8 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
%splat = shufflevector <8 x i64> %b, <8 x i64> undef, <8 x i32> zeroinitializer
|
; XOPAVX2: Found an estimated cost of 8 for instruction: %shift
|
||||||
|
%insert = insertelement <8 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer
|
||||||
%shift = ashr <8 x i64> %a, %splat
|
%shift = ashr <8 x i64> %a, %splat
|
||||||
ret <8 x i64> %shift
|
ret <8 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
|
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
||||||
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 12 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 12 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
%insert = insertelement <4 x i32> undef, i32 %b, i32 0
|
||||||
%splat = shufflevector <4 x i32> %b, <4 x i32> undef, <4 x i32> zeroinitializer
|
%splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer
|
||||||
%shift = ashr <4 x i32> %a, %splat
|
%shift = ashr <4 x i32> %a, %splat
|
||||||
ret <4 x i32> %shift
|
ret <4 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
|
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
||||||
; SSE2: Found an estimated cost of 32 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 24 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 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
|
%insert = insertelement <8 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer
|
||||||
%shift = ashr <8 x i32> %a, %splat
|
%shift = ashr <8 x i32> %a, %splat
|
||||||
ret <8 x i32> %shift
|
ret <8 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, <16 x i32> %b) {
|
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
||||||
; SSE2: Found an estimated cost of 64 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 48 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i32> %b, <16 x i32> undef, <16 x i32> zeroinitializer
|
%insert = insertelement <16 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer
|
||||||
%shift = ashr <16 x i32> %a, %splat
|
%shift = ashr <16 x i32> %a, %splat
|
||||||
ret <16 x i32> %shift
|
ret <16 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
|
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
||||||
; SSE2: Found an estimated cost of 32 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 14 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 14 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 14 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 14 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 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
|
%insert = insertelement <8 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer
|
||||||
%shift = ashr <8 x i16> %a, %splat
|
%shift = ashr <8 x i16> %a, %splat
|
||||||
ret <8 x i16> %shift
|
ret <8 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
|
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
||||||
; SSE2: Found an estimated cost of 64 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 28 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 28 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 10 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 10 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
|
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
|
%insert = insertelement <16 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer
|
||||||
%shift = ashr <16 x i16> %a, %splat
|
%shift = ashr <16 x i16> %a, %splat
|
||||||
ret <16 x i16> %shift
|
ret <16 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, <32 x i16> %b) {
|
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
||||||
; SSE2: Found an estimated cost of 128 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 56 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 56 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 20 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512F: Found an estimated cost of 20 for instruction: %shift
|
; AVX512F: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512VL: Found an estimated cost of 20 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 1 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 8 for instruction: %shift
|
%insert = insertelement <32 x i16> undef, i16 %b, i32 0
|
||||||
%splat = shufflevector <32 x i16> %b, <32 x i16> undef, <32 x i32> zeroinitializer
|
%splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer
|
||||||
%shift = ashr <32 x i16> %a, %splat
|
%shift = ashr <32 x i16> %a, %splat
|
||||||
ret <32 x i16> %shift
|
ret <32 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
||||||
; SSE2: Found an estimated cost of 54 for instruction: %shift
|
; SSE2: Found an estimated cost of 54 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
||||||
|
@ -308,12 +318,13 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 24 for instruction: %shift
|
; AVX2: Found an estimated cost of 24 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 24 for instruction: %shift
|
; AVX512: Found an estimated cost of 24 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i8> %b, <16 x i8> undef, <16 x i32> zeroinitializer
|
%insert = insertelement <16 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer
|
||||||
%shift = ashr <16 x i8> %a, %splat
|
%shift = ashr <16 x i8> %a, %splat
|
||||||
ret <16 x i8> %shift
|
ret <16 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
||||||
; SSE2: Found an estimated cost of 108 for instruction: %shift
|
; SSE2: Found an estimated cost of 108 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
||||||
|
@ -321,12 +332,13 @@ define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 24 for instruction: %shift
|
; AVX2: Found an estimated cost of 24 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 24 for instruction: %shift
|
; AVX512: Found an estimated cost of 24 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOP: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <32 x i8> %b, <32 x i8> undef, <32 x i32> zeroinitializer
|
%insert = insertelement <32 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer
|
||||||
%shift = ashr <32 x i8> %a, %splat
|
%shift = ashr <32 x i8> %a, %splat
|
||||||
ret <32 x i8> %shift
|
ret <32 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
||||||
; SSE2: Found an estimated cost of 216 for instruction: %shift
|
; SSE2: Found an estimated cost of 216 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 96 for instruction: %shift
|
; SSE41: Found an estimated cost of 96 for instruction: %shift
|
||||||
|
@ -337,7 +349,8 @@ define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; AVX512VL: Found an estimated cost of 48 for instruction: %shift
|
; AVX512VL: Found an estimated cost of 48 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 24 for instruction: %shift
|
; AVX512BWVL: Found an estimated cost of 24 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 8 for instruction: %shift
|
; XOP: Found an estimated cost of 8 for instruction: %shift
|
||||||
%splat = shufflevector <64 x i8> %b, <64 x i8> undef, <64 x i32> zeroinitializer
|
%insert = insertelement <64 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer
|
||||||
%shift = ashr <64 x i8> %a, %splat
|
%shift = ashr <64 x i8> %a, %splat
|
||||||
ret <64 x i8> %shift
|
ret <64 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,133 +177,140 @@ define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; Uniform Variable Shifts
|
; Uniform Variable Shifts
|
||||||
;
|
;
|
||||||
|
|
||||||
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
|
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
||||||
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 4 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
%insert = insertelement <2 x i64> undef, i64 %b, i32 0
|
||||||
%splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
|
%splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer
|
||||||
%shift = lshr <2 x i64> %a, %splat
|
%shift = lshr <2 x i64> %a, %splat
|
||||||
ret <2 x i64> %shift
|
ret <2 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
||||||
; SSE2: Found an estimated cost of 8 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 8 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 8 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 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
|
%insert = insertelement <4 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer
|
||||||
%shift = lshr <4 x i64> %a, %splat
|
%shift = lshr <4 x i64> %a, %splat
|
||||||
ret <4 x i64> %shift
|
ret <4 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, <8 x i64> %b) {
|
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
||||||
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 16 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 16 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <8 x i64> %b, <8 x i64> undef, <8 x i32> zeroinitializer
|
%insert = insertelement <8 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer
|
||||||
%shift = lshr <8 x i64> %a, %splat
|
%shift = lshr <8 x i64> %a, %splat
|
||||||
ret <8 x i64> %shift
|
ret <8 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
|
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
||||||
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 11 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 11 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
%insert = insertelement <4 x i32> undef, i32 %b, i32 0
|
||||||
%splat = shufflevector <4 x i32> %b, <4 x i32> undef, <4 x i32> zeroinitializer
|
%splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer
|
||||||
%shift = lshr <4 x i32> %a, %splat
|
%shift = lshr <4 x i32> %a, %splat
|
||||||
ret <4 x i32> %shift
|
ret <4 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
|
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
||||||
; SSE2: Found an estimated cost of 32 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 22 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 22 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 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
|
%insert = insertelement <8 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer
|
||||||
%shift = lshr <8 x i32> %a, %splat
|
%shift = lshr <8 x i32> %a, %splat
|
||||||
ret <8 x i32> %shift
|
ret <8 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, <16 x i32> %b) {
|
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
||||||
; SSE2: Found an estimated cost of 64 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 44 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 44 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i32> %b, <16 x i32> undef, <16 x i32> zeroinitializer
|
%insert = insertelement <16 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer
|
||||||
%shift = lshr <16 x i32> %a, %splat
|
%shift = lshr <16 x i32> %a, %splat
|
||||||
ret <16 x i32> %shift
|
ret <16 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
|
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
||||||
; SSE2: Found an estimated cost of 32 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 14 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 14 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 14 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 14 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 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
|
%insert = insertelement <8 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer
|
||||||
%shift = lshr <8 x i16> %a, %splat
|
%shift = lshr <8 x i16> %a, %splat
|
||||||
ret <8 x i16> %shift
|
ret <8 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
|
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
||||||
; SSE2: Found an estimated cost of 64 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 28 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 28 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 10 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 10 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
|
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
|
%insert = insertelement <16 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer
|
||||||
%shift = lshr <16 x i16> %a, %splat
|
%shift = lshr <16 x i16> %a, %splat
|
||||||
ret <16 x i16> %shift
|
ret <16 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, <32 x i16> %b) {
|
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
||||||
; SSE2: Found an estimated cost of 128 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 56 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 56 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 20 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512F: Found an estimated cost of 20 for instruction: %shift
|
; AVX512F: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512VL: Found an estimated cost of 20 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 8 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 1 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 8 for instruction: %shift
|
%insert = insertelement <32 x i16> undef, i16 %b, i32 0
|
||||||
%splat = shufflevector <32 x i16> %b, <32 x i16> undef, <32 x i32> zeroinitializer
|
%splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer
|
||||||
%shift = lshr <32 x i16> %a, %splat
|
%shift = lshr <32 x i16> %a, %splat
|
||||||
ret <32 x i16> %shift
|
ret <32 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
||||||
; SSE2: Found an estimated cost of 26 for instruction: %shift
|
; SSE2: Found an estimated cost of 26 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 12 for instruction: %shift
|
; SSE41: Found an estimated cost of 12 for instruction: %shift
|
||||||
|
@ -311,12 +318,13 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 12 for instruction: %shift
|
; AVX2: Found an estimated cost of 12 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 12 for instruction: %shift
|
; AVX512: Found an estimated cost of 12 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 for instruction: %shift
|
; XOP: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i8> %b, <16 x i8> undef, <16 x i32> zeroinitializer
|
%insert = insertelement <16 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer
|
||||||
%shift = lshr <16 x i8> %a, %splat
|
%shift = lshr <16 x i8> %a, %splat
|
||||||
ret <16 x i8> %shift
|
ret <16 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
||||||
; SSE2: Found an estimated cost of 52 for instruction: %shift
|
; SSE2: Found an estimated cost of 52 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
; SSE41: Found an estimated cost of 24 for instruction: %shift
|
||||||
|
@ -324,12 +332,13 @@ define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOP: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <32 x i8> %b, <32 x i8> undef, <32 x i32> zeroinitializer
|
%insert = insertelement <32 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer
|
||||||
%shift = lshr <32 x i8> %a, %splat
|
%shift = lshr <32 x i8> %a, %splat
|
||||||
ret <32 x i8> %shift
|
ret <32 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
||||||
; SSE2: Found an estimated cost of 104 for instruction: %shift
|
; SSE2: Found an estimated cost of 104 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
; SSE41: Found an estimated cost of 48 for instruction: %shift
|
||||||
|
@ -340,7 +349,8 @@ define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; AVX512VL: Found an estimated cost of 22 for instruction: %shift
|
; AVX512VL: Found an estimated cost of 22 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 11 for instruction: %shift
|
; AVX512BWVL: Found an estimated cost of 11 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 8 for instruction: %shift
|
; XOP: Found an estimated cost of 8 for instruction: %shift
|
||||||
%splat = shufflevector <64 x i8> %b, <64 x i8> undef, <64 x i32> zeroinitializer
|
%insert = insertelement <64 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer
|
||||||
%shift = lshr <64 x i8> %a, %splat
|
%shift = lshr <64 x i8> %a, %splat
|
||||||
ret <64 x i8> %shift
|
ret <64 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,133 +176,140 @@ define <64 x i8> @var_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; Uniform Variable Shifts
|
; Uniform Variable Shifts
|
||||||
;
|
;
|
||||||
|
|
||||||
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
|
define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
|
||||||
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 4 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 1 for instruction: %shift
|
; XOP: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
%insert = insertelement <2 x i64> undef, i64 %b, i32 0
|
||||||
%splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
|
%splat = shufflevector <2 x i64> %insert, <2 x i64> undef, <2 x i32> zeroinitializer
|
||||||
%shift = shl <2 x i64> %a, %splat
|
%shift = shl <2 x i64> %a, %splat
|
||||||
ret <2 x i64> %shift
|
ret <2 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
|
define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
|
||||||
; SSE2: Found an estimated cost of 8 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 8 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 8 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 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
|
%insert = insertelement <4 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <4 x i64> %insert, <4 x i64> undef, <4 x i32> zeroinitializer
|
||||||
%shift = shl <4 x i64> %a, %splat
|
%shift = shl <4 x i64> %a, %splat
|
||||||
ret <4 x i64> %shift
|
ret <4 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, <8 x i64> %b) {
|
define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, i64 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i64':
|
||||||
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 16 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 16 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <8 x i64> %b, <8 x i64> undef, <8 x i32> zeroinitializer
|
%insert = insertelement <8 x i64> undef, i64 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i64> %insert, <8 x i64> undef, <8 x i32> zeroinitializer
|
||||||
%shift = shl <8 x i64> %a, %splat
|
%shift = shl <8 x i64> %a, %splat
|
||||||
ret <8 x i64> %shift
|
ret <8 x i64> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
|
define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
|
||||||
; SSE2: Found an estimated cost of 10 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 4 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 1 for instruction: %shift
|
; XOP: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
%insert = insertelement <4 x i32> undef, i32 %b, i32 0
|
||||||
%splat = shufflevector <4 x i32> %b, <4 x i32> undef, <4 x i32> zeroinitializer
|
%splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer
|
||||||
%shift = shl <4 x i32> %a, %splat
|
%shift = shl <4 x i32> %a, %splat
|
||||||
ret <4 x i32> %shift
|
ret <4 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
|
define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
|
||||||
; SSE2: Found an estimated cost of 20 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 8 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 8 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 1 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
|
%insert = insertelement <8 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i32> %insert, <8 x i32> undef, <8 x i32> zeroinitializer
|
||||||
%shift = shl <8 x i32> %a, %splat
|
%shift = shl <8 x i32> %a, %splat
|
||||||
ret <8 x i32> %shift
|
ret <8 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, <16 x i32> %b) {
|
define <16 x i32> @splatvar_shift_v16i32(<16 x i32> %a, i32 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i32':
|
||||||
; SSE2: Found an estimated cost of 40 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 16 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 16 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i32> %b, <16 x i32> undef, <16 x i32> zeroinitializer
|
%insert = insertelement <16 x i32> undef, i32 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i32> %insert, <16 x i32> undef, <16 x i32> zeroinitializer
|
||||||
%shift = shl <16 x i32> %a, %splat
|
%shift = shl <16 x i32> %a, %splat
|
||||||
ret <16 x i32> %shift
|
ret <16 x i32> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
|
define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
|
||||||
; SSE2: Found an estimated cost of 32 for instruction: %shift
|
; SSE2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 14 for instruction: %shift
|
; SSE41: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 14 for instruction: %shift
|
; AVX: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 14 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 14 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 1 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
|
%insert = insertelement <8 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <8 x i16> %insert, <8 x i16> undef, <8 x i32> zeroinitializer
|
||||||
%shift = shl <8 x i16> %a, %splat
|
%shift = shl <8 x i16> %a, %splat
|
||||||
ret <8 x i16> %shift
|
ret <8 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
|
define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
|
||||||
; SSE2: Found an estimated cost of 64 for instruction: %shift
|
; SSE2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 28 for instruction: %shift
|
; SSE41: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 28 for instruction: %shift
|
; AVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 10 for instruction: %shift
|
; AVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 10 for instruction: %shift
|
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 2 for instruction: %shift
|
||||||
%splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
|
; XOPAVX2: Found an estimated cost of 1 for instruction: %shift
|
||||||
|
%insert = insertelement <16 x i16> undef, i16 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i16> %insert, <16 x i16> undef, <16 x i32> zeroinitializer
|
||||||
%shift = shl <16 x i16> %a, %splat
|
%shift = shl <16 x i16> %a, %splat
|
||||||
ret <16 x i16> %shift
|
ret <16 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, <32 x i16> %b) {
|
define <32 x i16> @splatvar_shift_v32i16(<32 x i16> %a, i16 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i16':
|
||||||
; SSE2: Found an estimated cost of 128 for instruction: %shift
|
; SSE2: Found an estimated cost of 4 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 56 for instruction: %shift
|
; SSE41: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX: Found an estimated cost of 56 for instruction: %shift
|
; AVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX2: Found an estimated cost of 20 for instruction: %shift
|
; AVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512F: Found an estimated cost of 20 for instruction: %shift
|
; AVX512F: Found an estimated cost of 2 for instruction: %shift
|
||||||
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
; AVX512BW: Found an estimated cost of 1 for instruction: %shift
|
||||||
; AVX512VL: Found an estimated cost of 20 for instruction: %shift
|
; XOPAVX: Found an estimated cost of 4 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 1 for instruction: %shift
|
; XOPAVX2: Found an estimated cost of 2 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
%insert = insertelement <32 x i16> undef, i16 %b, i32 0
|
||||||
%splat = shufflevector <32 x i16> %b, <32 x i16> undef, <32 x i32> zeroinitializer
|
%splat = shufflevector <32 x i16> %insert, <32 x i16> undef, <32 x i32> zeroinitializer
|
||||||
%shift = shl <32 x i16> %a, %splat
|
%shift = shl <32 x i16> %a, %splat
|
||||||
ret <32 x i16> %shift
|
ret <32 x i16> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
|
||||||
; SSE2: Found an estimated cost of 26 for instruction: %shift
|
; SSE2: Found an estimated cost of 26 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 11 for instruction: %shift
|
; SSE41: Found an estimated cost of 11 for instruction: %shift
|
||||||
|
@ -310,12 +317,13 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 1 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
|
%insert = insertelement <16 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <16 x i8> %insert, <16 x i8> undef, <16 x i32> zeroinitializer
|
||||||
%shift = shl <16 x i8> %a, %splat
|
%shift = shl <16 x i8> %a, %splat
|
||||||
ret <16 x i8> %shift
|
ret <16 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
|
||||||
; SSE2: Found an estimated cost of 52 for instruction: %shift
|
; SSE2: Found an estimated cost of 52 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 22 for instruction: %shift
|
; SSE41: Found an estimated cost of 22 for instruction: %shift
|
||||||
|
@ -323,12 +331,13 @@ define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
|
||||||
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
; AVX2: Found an estimated cost of 11 for instruction: %shift
|
||||||
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
; AVX512: Found an estimated cost of 11 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 2 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
|
%insert = insertelement <32 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <32 x i8> %insert, <32 x i8> undef, <32 x i32> zeroinitializer
|
||||||
%shift = shl <32 x i8> %a, %splat
|
%shift = shl <32 x i8> %a, %splat
|
||||||
ret <32 x i8> %shift
|
ret <32 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
||||||
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, i8 %b) {
|
||||||
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v64i8':
|
||||||
; SSE2: Found an estimated cost of 104 for instruction: %shift
|
; SSE2: Found an estimated cost of 104 for instruction: %shift
|
||||||
; SSE41: Found an estimated cost of 44 for instruction: %shift
|
; SSE41: Found an estimated cost of 44 for instruction: %shift
|
||||||
|
@ -339,7 +348,8 @@ define <64 x i8> @splatvar_shift_v64i8(<64 x i8> %a, <64 x i8> %b) {
|
||||||
; AVX512VL: Found an estimated cost of 22 for instruction: %shift
|
; AVX512VL: Found an estimated cost of 22 for instruction: %shift
|
||||||
; AVX512BWVL: Found an estimated cost of 11 for instruction: %shift
|
; AVX512BWVL: Found an estimated cost of 11 for instruction: %shift
|
||||||
; XOP: Found an estimated cost of 4 for instruction: %shift
|
; XOP: Found an estimated cost of 4 for instruction: %shift
|
||||||
%splat = shufflevector <64 x i8> %b, <64 x i8> undef, <64 x i32> zeroinitializer
|
%insert = insertelement <64 x i8> undef, i8 %b, i32 0
|
||||||
|
%splat = shufflevector <64 x i8> %insert, <64 x i8> undef, <64 x i32> zeroinitializer
|
||||||
%shift = shl <64 x i8> %a, %splat
|
%shift = shl <64 x i8> %a, %splat
|
||||||
ret <64 x i8> %shift
|
ret <64 x i8> %shift
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue