mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-25 05:25:53 +00:00
Refs: A8-598.
Leave Inst{11-8}, which represents the starting byte index of the extracted result in the concatenation of the operands and is left unspecified. Patch by Johnny Chen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84572 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
780d207d1c
commit
1fc1dc0682
@ -1290,6 +1290,20 @@ class N3V<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op6, bit op4,
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON 3 vector register with immediate. This is only used for VEXT where
|
||||
// op11_8 represents the starting byte index of the extracted result in the
|
||||
// concatenation of the operands and is left unspecified.
|
||||
class N3VImm<bit op24, bit op23, bits<2> op21_20, bit op6, bit op4,
|
||||
dag oops, dag iops, InstrItinClass itin,
|
||||
string asm, string cstr, list<dag> pattern>
|
||||
: NDataI<oops, iops, itin, asm, cstr, pattern> {
|
||||
let Inst{24} = op24;
|
||||
let Inst{23} = op23;
|
||||
let Inst{21-20} = op21_20;
|
||||
let Inst{6} = op6;
|
||||
let Inst{4} = op4;
|
||||
}
|
||||
|
||||
// NEON VMOVs between scalar and core registers.
|
||||
class NVLaneOp<bits<8> opcod1, bits<4> opcod2, bits<2> opcod3,
|
||||
dag oops, dag iops, Format f, InstrItinClass itin,
|
||||
|
@ -2670,14 +2670,14 @@ def VREV16q8 : VREV16Q<0b00, "vrev16.8", v16i8>;
|
||||
// VEXT : Vector Extract
|
||||
|
||||
class VEXTd<string OpcodeStr, ValueType Ty>
|
||||
: N3V<0,1,0b11,0b0000,0,0, (outs DPR:$dst),
|
||||
: N3VImm<0,1,0b11,0,0, (outs DPR:$dst),
|
||||
(ins DPR:$lhs, DPR:$rhs, i32imm:$index), IIC_VEXTD,
|
||||
!strconcat(OpcodeStr, "\t$dst, $lhs, $rhs, $index"), "",
|
||||
[(set DPR:$dst, (Ty (NEONvext (Ty DPR:$lhs),
|
||||
(Ty DPR:$rhs), imm:$index)))]>;
|
||||
|
||||
class VEXTq<string OpcodeStr, ValueType Ty>
|
||||
: N3V<0,1,0b11,0b0000,1,0, (outs QPR:$dst),
|
||||
: N3VImm<0,1,0b11,1,0, (outs QPR:$dst),
|
||||
(ins QPR:$lhs, QPR:$rhs, i32imm:$index), IIC_VEXTQ,
|
||||
!strconcat(OpcodeStr, "\t$dst, $lhs, $rhs, $index"), "",
|
||||
[(set QPR:$dst, (Ty (NEONvext (Ty QPR:$lhs),
|
||||
|
Loading…
Reference in New Issue
Block a user