mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Add NVTBLFrm to represent A8.6.406 VTBL, VTBX Vector Table Lookup Instructions.
These instructions use byte index in a control vector (M:Vm) to lookup byte values in a table and generate a new vector (D:Vd). The table is specified via a list of vectors, which can be: {Dn} {Dn D<n+1>} {Dn D<n+1> D<n+2>} {Dn D<n+1> D<n+2> D<n+3>} llvm-svn: 99789
This commit is contained in:
parent
66e9b05428
commit
03c2e8a36c
@ -70,6 +70,7 @@ def N3RegFrm : Format<38>;
|
||||
def N3RegVShFrm : Format<39>;
|
||||
def NVExtFrm : Format<40>;
|
||||
def NVMulSLFrm : Format<41>;
|
||||
def NVTBLFrm : Format<42>;
|
||||
|
||||
// Misc flags.
|
||||
|
||||
|
@ -3293,26 +3293,26 @@ def VZIPq32 : N2VQShuffle<0b10, 0b00011, IIC_VPERMQ3, "vzip", "32">;
|
||||
// VTBL : Vector Table Lookup
|
||||
def VTBL1
|
||||
: N3V<1,1,0b11,0b1000,0,0, (outs DPR:$dst),
|
||||
(ins DPR:$tbl1, DPR:$src), N3RegFrm, IIC_VTB1,
|
||||
(ins DPR:$tbl1, DPR:$src), NVTBLFrm, IIC_VTB1,
|
||||
"vtbl", "8", "$dst, \\{$tbl1\\}, $src", "",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbl1 DPR:$tbl1, DPR:$src)))]>;
|
||||
let hasExtraSrcRegAllocReq = 1 in {
|
||||
def VTBL2
|
||||
: N3V<1,1,0b11,0b1001,0,0, (outs DPR:$dst),
|
||||
(ins DPR:$tbl1, DPR:$tbl2, DPR:$src), N3RegFrm, IIC_VTB2,
|
||||
(ins DPR:$tbl1, DPR:$tbl2, DPR:$src), NVTBLFrm, IIC_VTB2,
|
||||
"vtbl", "8", "$dst, \\{$tbl1, $tbl2\\}, $src", "",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbl2
|
||||
DPR:$tbl1, DPR:$tbl2, DPR:$src)))]>;
|
||||
def VTBL3
|
||||
: N3V<1,1,0b11,0b1010,0,0, (outs DPR:$dst),
|
||||
(ins DPR:$tbl1, DPR:$tbl2, DPR:$tbl3, DPR:$src), N3RegFrm, IIC_VTB3,
|
||||
(ins DPR:$tbl1, DPR:$tbl2, DPR:$tbl3, DPR:$src), NVTBLFrm, IIC_VTB3,
|
||||
"vtbl", "8", "$dst, \\{$tbl1, $tbl2, $tbl3\\}, $src", "",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbl3
|
||||
DPR:$tbl1, DPR:$tbl2, DPR:$tbl3, DPR:$src)))]>;
|
||||
def VTBL4
|
||||
: N3V<1,1,0b11,0b1011,0,0, (outs DPR:$dst),
|
||||
(ins DPR:$tbl1, DPR:$tbl2, DPR:$tbl3, DPR:$tbl4, DPR:$src),
|
||||
N3RegFrm, IIC_VTB4,
|
||||
NVTBLFrm, IIC_VTB4,
|
||||
"vtbl", "8", "$dst, \\{$tbl1, $tbl2, $tbl3, $tbl4\\}, $src", "",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbl4 DPR:$tbl1, DPR:$tbl2,
|
||||
DPR:$tbl3, DPR:$tbl4, DPR:$src)))]>;
|
||||
@ -3321,27 +3321,27 @@ def VTBL4
|
||||
// VTBX : Vector Table Extension
|
||||
def VTBX1
|
||||
: N3V<1,1,0b11,0b1000,1,0, (outs DPR:$dst),
|
||||
(ins DPR:$orig, DPR:$tbl1, DPR:$src), N3RegFrm, IIC_VTBX1,
|
||||
(ins DPR:$orig, DPR:$tbl1, DPR:$src), NVTBLFrm, IIC_VTBX1,
|
||||
"vtbx", "8", "$dst, \\{$tbl1\\}, $src", "$orig = $dst",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbx1
|
||||
DPR:$orig, DPR:$tbl1, DPR:$src)))]>;
|
||||
let hasExtraSrcRegAllocReq = 1 in {
|
||||
def VTBX2
|
||||
: N3V<1,1,0b11,0b1001,1,0, (outs DPR:$dst),
|
||||
(ins DPR:$orig, DPR:$tbl1, DPR:$tbl2, DPR:$src), N3RegFrm, IIC_VTBX2,
|
||||
(ins DPR:$orig, DPR:$tbl1, DPR:$tbl2, DPR:$src), NVTBLFrm, IIC_VTBX2,
|
||||
"vtbx", "8", "$dst, \\{$tbl1, $tbl2\\}, $src", "$orig = $dst",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbx2
|
||||
DPR:$orig, DPR:$tbl1, DPR:$tbl2, DPR:$src)))]>;
|
||||
def VTBX3
|
||||
: N3V<1,1,0b11,0b1010,1,0, (outs DPR:$dst),
|
||||
(ins DPR:$orig, DPR:$tbl1, DPR:$tbl2, DPR:$tbl3, DPR:$src),
|
||||
N3RegFrm, IIC_VTBX3,
|
||||
NVTBLFrm, IIC_VTBX3,
|
||||
"vtbx", "8", "$dst, \\{$tbl1, $tbl2, $tbl3\\}, $src", "$orig = $dst",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbx3 DPR:$orig, DPR:$tbl1,
|
||||
DPR:$tbl2, DPR:$tbl3, DPR:$src)))]>;
|
||||
def VTBX4
|
||||
: N3V<1,1,0b11,0b1011,1,0, (outs DPR:$dst), (ins DPR:$orig, DPR:$tbl1,
|
||||
DPR:$tbl2, DPR:$tbl3, DPR:$tbl4, DPR:$src), N3RegFrm, IIC_VTBX4,
|
||||
DPR:$tbl2, DPR:$tbl3, DPR:$tbl4, DPR:$src), NVTBLFrm, IIC_VTBX4,
|
||||
"vtbx", "8", "$dst, \\{$tbl1, $tbl2, $tbl3, $tbl4\\}, $src",
|
||||
"$orig = $dst",
|
||||
[(set DPR:$dst, (v8i8 (int_arm_neon_vtbx4 DPR:$orig, DPR:$tbl1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user