mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00: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>} git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99789 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
de9b1efbe5
commit
79c4d820b4
@ -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…
Reference in New Issue
Block a user