mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
AVX2: Add patterns for variable shift operations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -45,8 +45,6 @@ entry:
|
||||
ret <4 x i64> %x
|
||||
}
|
||||
|
||||
|
||||
|
||||
; CHECK: vpblendvb
|
||||
; CHECK: vpblendvb %ymm
|
||||
; CHECK: ret
|
||||
@@ -55,3 +53,76 @@ define <32 x i8> @vpblendvb(<32 x i8> %x, <32 x i8> %y) {
|
||||
%min = select <32 x i1> %min_is_x, <32 x i8> %x, <32 x i8> %y
|
||||
ret <32 x i8> %min
|
||||
}
|
||||
|
||||
|
||||
; CHECK: variable_shl0
|
||||
; CHECK: psllvd
|
||||
; CHECK: ret
|
||||
define <4 x i32> @variable_shl0(<4 x i32> %x, <4 x i32> %y) {
|
||||
%k = shl <4 x i32> %x, %y
|
||||
ret <4 x i32> %k
|
||||
}
|
||||
; CHECK: variable_shl1
|
||||
; CHECK: psllvd
|
||||
; CHECK: ret
|
||||
define <8 x i32> @variable_shl1(<8 x i32> %x, <8 x i32> %y) {
|
||||
%k = shl <8 x i32> %x, %y
|
||||
ret <8 x i32> %k
|
||||
}
|
||||
; CHECK: variable_shl2
|
||||
; CHECK: psllvq
|
||||
; CHECK: ret
|
||||
define <2 x i64> @variable_shl2(<2 x i64> %x, <2 x i64> %y) {
|
||||
%k = shl <2 x i64> %x, %y
|
||||
ret <2 x i64> %k
|
||||
}
|
||||
; CHECK: variable_shl3
|
||||
; CHECK: psllvq
|
||||
; CHECK: ret
|
||||
define <4 x i64> @variable_shl3(<4 x i64> %x, <4 x i64> %y) {
|
||||
%k = shl <4 x i64> %x, %y
|
||||
ret <4 x i64> %k
|
||||
}
|
||||
; CHECK: variable_srl0
|
||||
; CHECK: psrlvd
|
||||
; CHECK: ret
|
||||
define <4 x i32> @variable_srl0(<4 x i32> %x, <4 x i32> %y) {
|
||||
%k = lshr <4 x i32> %x, %y
|
||||
ret <4 x i32> %k
|
||||
}
|
||||
; CHECK: variable_srl1
|
||||
; CHECK: psrlvd
|
||||
; CHECK: ret
|
||||
define <8 x i32> @variable_srl1(<8 x i32> %x, <8 x i32> %y) {
|
||||
%k = lshr <8 x i32> %x, %y
|
||||
ret <8 x i32> %k
|
||||
}
|
||||
; CHECK: variable_srl2
|
||||
; CHECK: psrlvq
|
||||
; CHECK: ret
|
||||
define <2 x i64> @variable_srl2(<2 x i64> %x, <2 x i64> %y) {
|
||||
%k = lshr <2 x i64> %x, %y
|
||||
ret <2 x i64> %k
|
||||
}
|
||||
; CHECK: variable_srl3
|
||||
; CHECK: psrlvq
|
||||
; CHECK: ret
|
||||
define <4 x i64> @variable_srl3(<4 x i64> %x, <4 x i64> %y) {
|
||||
%k = lshr <4 x i64> %x, %y
|
||||
ret <4 x i64> %k
|
||||
}
|
||||
|
||||
; CHECK: variable_sra0
|
||||
; CHECK: psravd
|
||||
; CHECK: ret
|
||||
define <4 x i32> @variable_sra0(<4 x i32> %x, <4 x i32> %y) {
|
||||
%k = ashr <4 x i32> %x, %y
|
||||
ret <4 x i32> %k
|
||||
}
|
||||
; CHECK: variable_sra1
|
||||
; CHECK: psravd
|
||||
; CHECK: ret
|
||||
define <8 x i32> @variable_sra1(<8 x i32> %x, <8 x i32> %y) {
|
||||
%k = ashr <8 x i32> %x, %y
|
||||
ret <8 x i32> %k
|
||||
}
|
||||
|
Reference in New Issue
Block a user