mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-23 04:28:30 +00:00
[AVX512] Derive vpermil* from avx512_perm_imm
This used to derive from avx512_pshuf_imm which is confusing. NFC. Compared X86.td.expanded. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220735 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d0ee9ada16
commit
7ba4de2ccc
@ -787,6 +787,20 @@ let ExeDomain = SSEPackedDouble in
|
||||
defm VPERMPDZ : avx512_perm_imm<0x01, "vpermpd", VR512, X86VPermi, memopv8f64,
|
||||
f512mem, v8f64>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VF>;
|
||||
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm VPERMILPSZ : avx512_perm_imm<0x04, "vpermilps", VR512, X86VPermilpi,
|
||||
memopv16f32, f512mem, v16f32>, EVEX_V512,
|
||||
EVEX_CD8<32, CD8VF>;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm VPERMILPDZ : avx512_perm_imm<0x05, "vpermilpd", VR512, X86VPermilpi,
|
||||
memopv8f64, f512mem, v8f64>, EVEX_V512,
|
||||
VEX_W, EVEX_CD8<64, CD8VF>;
|
||||
|
||||
def : Pat<(v16i32 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
||||
(VPERMILPSZri VR512:$src1, imm:$imm)>;
|
||||
def : Pat<(v8i64 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
||||
(VPERMILPDZri VR512:$src1, imm:$imm)>;
|
||||
|
||||
// -- VPERM - register form --
|
||||
multiclass avx512_perm<bits<8> opc, string OpcodeStr, RegisterClass RC,
|
||||
PatFrag mem_frag, X86MemOperand x86memop, ValueType OpVT> {
|
||||
@ -2897,20 +2911,6 @@ multiclass avx512_pshuf_imm<bits<8> opc, string OpcodeStr, RegisterClass RC,
|
||||
defm VPSHUFDZ : avx512_pshuf_imm<0x70, "vpshufd", VR512, X86PShufd, memopv16i32,
|
||||
i512mem, v16i32>, PD, EVEX_V512, EVEX_CD8<32, CD8VF>;
|
||||
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm VPERMILPSZ : avx512_pshuf_imm<0x04, "vpermilps", VR512, X86VPermilpi,
|
||||
memopv16f32, f512mem, v16f32>, TAPD, EVEX_V512,
|
||||
EVEX_CD8<32, CD8VF>;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm VPERMILPDZ : avx512_pshuf_imm<0x05, "vpermilpd", VR512, X86VPermilpi,
|
||||
memopv8f64, f512mem, v8f64>, TAPD, EVEX_V512,
|
||||
VEX_W, EVEX_CD8<64, CD8VF>;
|
||||
|
||||
def : Pat<(v16i32 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
||||
(VPERMILPSZri VR512:$src1, imm:$imm)>;
|
||||
def : Pat<(v8i64 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
||||
(VPERMILPDZri VR512:$src1, imm:$imm)>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AVX-512 Logical Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
Loading…
Reference in New Issue
Block a user