mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-10 22:46:25 +00:00
Add NVExtFrm to represent NEON Vector Extract Instructions, that uses Inst{11-8}
to encode the byte location of the extracted result in the concatenation of the operands, from the least significant end. Modify VEXTd and VEXTq classes to use the format. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99659 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f35d88f439
commit
629c25cda6
@ -68,6 +68,7 @@ def N2RegVShLFrm : Format<36>;
|
||||
def N2RegVShRFrm : Format<37>;
|
||||
def N3RegFrm : Format<38>;
|
||||
def N3RegVShFrm : Format<39>;
|
||||
def NVExtFrm : Format<40>;
|
||||
|
||||
// Misc flags.
|
||||
|
||||
|
@ -3253,18 +3253,18 @@ def VREV16q8 : VREV16Q<0b00, "vrev16", "8", v16i8>;
|
||||
// VEXT : Vector Extract
|
||||
|
||||
class VEXTd<string OpcodeStr, string Dt, ValueType Ty>
|
||||
: N3V<0,1,0b11,{?,?,?,?},0,0, (outs DPR:$dst),
|
||||
(ins DPR:$lhs, DPR:$rhs, i32imm:$index), IIC_VEXTD,
|
||||
OpcodeStr, Dt, "$dst, $lhs, $rhs, $index", "",
|
||||
[(set DPR:$dst, (Ty (NEONvext (Ty DPR:$lhs),
|
||||
(Ty DPR:$rhs), imm:$index)))]>;
|
||||
: N3Vf<0,1,0b11,{?,?,?,?},0,0, (outs DPR:$dst),
|
||||
(ins DPR:$lhs, DPR:$rhs, i32imm:$index), NVExtFrm,
|
||||
IIC_VEXTD, OpcodeStr, Dt, "$dst, $lhs, $rhs, $index", "",
|
||||
[(set DPR:$dst, (Ty (NEONvext (Ty DPR:$lhs),
|
||||
(Ty DPR:$rhs), imm:$index)))]>;
|
||||
|
||||
class VEXTq<string OpcodeStr, string Dt, ValueType Ty>
|
||||
: N3V<0,1,0b11,{?,?,?,?},1,0, (outs QPR:$dst),
|
||||
(ins QPR:$lhs, QPR:$rhs, i32imm:$index), IIC_VEXTQ,
|
||||
OpcodeStr, Dt, "$dst, $lhs, $rhs, $index", "",
|
||||
[(set QPR:$dst, (Ty (NEONvext (Ty QPR:$lhs),
|
||||
(Ty QPR:$rhs), imm:$index)))]>;
|
||||
: N3Vf<0,1,0b11,{?,?,?,?},1,0, (outs QPR:$dst),
|
||||
(ins QPR:$lhs, QPR:$rhs, i32imm:$index), NVExtFrm,
|
||||
IIC_VEXTQ, OpcodeStr, Dt, "$dst, $lhs, $rhs, $index", "",
|
||||
[(set QPR:$dst, (Ty (NEONvext (Ty QPR:$lhs),
|
||||
(Ty QPR:$rhs), imm:$index)))]>;
|
||||
|
||||
def VEXTd8 : VEXTd<"vext", "8", v8i8>;
|
||||
def VEXTd16 : VEXTd<"vext", "16", v4i16>;
|
||||
|
Loading…
x
Reference in New Issue
Block a user