mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
Add NVMulSLFrm to represent "3-register multiply with scalar" operations and set
it as the format for the appropriate N3V*SL*<> classes. These instructions require special handling of the M:Vm field which encodes the restricted Dm and the lane index within Dm. Examples are A8.6.325 VMLA, VMLAL, VMLS, VMLSL (by scalar): vmlal.s32 q3, d2, d10[0] llvm-svn: 99690
This commit is contained in:
parent
22dceb8eb0
commit
794a9a3941
@ -69,6 +69,7 @@ def N2RegVShRFrm : Format<37>;
|
|||||||
def N3RegFrm : Format<38>;
|
def N3RegFrm : Format<38>;
|
||||||
def N3RegVShFrm : Format<39>;
|
def N3RegVShFrm : Format<39>;
|
||||||
def NVExtFrm : Format<40>;
|
def NVExtFrm : Format<40>;
|
||||||
|
def NVMulSLFrm : Format<41>;
|
||||||
|
|
||||||
// Misc flags.
|
// Misc flags.
|
||||||
|
|
||||||
|
@ -949,22 +949,23 @@ class N3VDX<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
[(set DPR:$dst, (ResTy (OpNode (OpTy DPR:$src1), (OpTy DPR:$src2))))]>{
|
[(set DPR:$dst, (ResTy (OpNode (OpTy DPR:$src1), (OpTy DPR:$src2))))]>{
|
||||||
let isCommutable = Commutable;
|
let isCommutable = Commutable;
|
||||||
}
|
}
|
||||||
|
|
||||||
class N3VDSL<bits<2> op21_20, bits<4> op11_8,
|
class N3VDSL<bits<2> op21_20, bits<4> op11_8,
|
||||||
InstrItinClass itin, string OpcodeStr, string Dt,
|
InstrItinClass itin, string OpcodeStr, string Dt,
|
||||||
ValueType Ty, SDNode ShOp>
|
ValueType Ty, SDNode ShOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
(outs DPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (ShOp (Ty DPR:$src1),
|
(Ty (ShOp (Ty DPR:$src1),
|
||||||
(Ty (NEONvduplane (Ty DPR_VFP2:$src2), imm:$lane)))))]>{
|
(Ty (NEONvduplane (Ty DPR_VFP2:$src2),imm:$lane)))))]>{
|
||||||
let isCommutable = 0;
|
let isCommutable = 0;
|
||||||
}
|
}
|
||||||
class N3VDSL16<bits<2> op21_20, bits<4> op11_8,
|
class N3VDSL16<bits<2> op21_20, bits<4> op11_8,
|
||||||
string OpcodeStr, string Dt, ValueType Ty, SDNode ShOp>
|
string OpcodeStr, string Dt, ValueType Ty, SDNode ShOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
(outs DPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
||||||
IIC_VMULi16D, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, IIC_VMULi16D, OpcodeStr, Dt,"$dst, $src1, $src2[$lane]","",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (ShOp (Ty DPR:$src1),
|
(Ty (ShOp (Ty DPR:$src1),
|
||||||
(Ty (NEONvduplane (Ty DPR_8:$src2), imm:$lane)))))]> {
|
(Ty (NEONvduplane (Ty DPR_8:$src2), imm:$lane)))))]> {
|
||||||
@ -992,9 +993,9 @@ class N3VQX<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VQSL<bits<2> op21_20, bits<4> op11_8,
|
class N3VQSL<bits<2> op21_20, bits<4> op11_8,
|
||||||
InstrItinClass itin, string OpcodeStr, string Dt,
|
InstrItinClass itin, string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, SDNode ShOp>
|
ValueType ResTy, ValueType OpTy, SDNode ShOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins QPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins QPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (ShOp (ResTy QPR:$src1),
|
(ResTy (ShOp (ResTy QPR:$src1),
|
||||||
(ResTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
(ResTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
||||||
@ -1003,9 +1004,9 @@ class N3VQSL<bits<2> op21_20, bits<4> op11_8,
|
|||||||
}
|
}
|
||||||
class N3VQSL16<bits<2> op21_20, bits<4> op11_8, string OpcodeStr, string Dt,
|
class N3VQSL16<bits<2> op21_20, bits<4> op11_8, string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, SDNode ShOp>
|
ValueType ResTy, ValueType OpTy, SDNode ShOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins QPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins QPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
||||||
IIC_VMULi16Q, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, IIC_VMULi16Q, OpcodeStr, Dt,"$dst, $src1, $src2[$lane]","",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (ShOp (ResTy QPR:$src1),
|
(ResTy (ShOp (ResTy QPR:$src1),
|
||||||
(ResTy (NEONvduplane (OpTy DPR_8:$src2),
|
(ResTy (NEONvduplane (OpTy DPR_8:$src2),
|
||||||
@ -1025,9 +1026,9 @@ class N3VDInt<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
}
|
}
|
||||||
class N3VDIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VDIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt, ValueType Ty, Intrinsic IntOp>
|
string OpcodeStr, string Dt, ValueType Ty, Intrinsic IntOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
(outs DPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (IntOp (Ty DPR:$src1),
|
(Ty (IntOp (Ty DPR:$src1),
|
||||||
(Ty (NEONvduplane (Ty DPR_VFP2:$src2),
|
(Ty (NEONvduplane (Ty DPR_VFP2:$src2),
|
||||||
@ -1036,9 +1037,9 @@ class N3VDIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
}
|
}
|
||||||
class N3VDIntSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VDIntSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt, ValueType Ty, Intrinsic IntOp>
|
string OpcodeStr, string Dt, ValueType Ty, Intrinsic IntOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
(outs DPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (IntOp (Ty DPR:$src1),
|
(Ty (IntOp (Ty DPR:$src1),
|
||||||
(Ty (NEONvduplane (Ty DPR_8:$src2),
|
(Ty (NEONvduplane (Ty DPR_8:$src2),
|
||||||
@ -1058,9 +1059,9 @@ class N3VQInt<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VQIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VQIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins QPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins QPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (ResTy QPR:$src1),
|
(ResTy (IntOp (ResTy QPR:$src1),
|
||||||
(ResTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
(ResTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
||||||
@ -1070,9 +1071,9 @@ class N3VQIntSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
class N3VQIntSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VQIntSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins QPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins QPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (ResTy QPR:$src1),
|
(ResTy (IntOp (ResTy QPR:$src1),
|
||||||
(ResTy (NEONvduplane (OpTy DPR_8:$src2),
|
(ResTy (NEONvduplane (OpTy DPR_8:$src2),
|
||||||
@ -1100,9 +1101,10 @@ class N3VDMulOp<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VDMulOpSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VDMulOpSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType Ty, SDNode MulOp, SDNode ShOp>
|
ValueType Ty, SDNode MulOp, SDNode ShOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst),
|
(outs DPR:$dst),
|
||||||
(ins DPR:$src1, DPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane), itin,
|
(ins DPR:$src1, DPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (ShOp (Ty DPR:$src1),
|
(Ty (ShOp (Ty DPR:$src1),
|
||||||
@ -1112,9 +1114,10 @@ class N3VDMulOpSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
class N3VDMulOpSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VDMulOpSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType Ty, SDNode MulOp, SDNode ShOp>
|
ValueType Ty, SDNode MulOp, SDNode ShOp>
|
||||||
: N3V<0, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<0, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs DPR:$dst),
|
(outs DPR:$dst),
|
||||||
(ins DPR:$src1, DPR:$src2, DPR_8:$src3, nohash_imm:$lane), itin,
|
(ins DPR:$src1, DPR:$src2, DPR_8:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (Ty DPR:$dst),
|
[(set (Ty DPR:$dst),
|
||||||
(Ty (ShOp (Ty DPR:$src1),
|
(Ty (ShOp (Ty DPR:$src1),
|
||||||
@ -1133,9 +1136,10 @@ class N3VQMulOp<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VQMulOpSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VQMulOpSL<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt, ValueType ResTy, ValueType OpTy,
|
string OpcodeStr, string Dt, ValueType ResTy, ValueType OpTy,
|
||||||
SDNode MulOp, SDNode ShOp>
|
SDNode MulOp, SDNode ShOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst),
|
(outs QPR:$dst),
|
||||||
(ins QPR:$src1, QPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane), itin,
|
(ins QPR:$src1, QPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (ShOp (ResTy QPR:$src1),
|
(ResTy (ShOp (ResTy QPR:$src1),
|
||||||
@ -1146,9 +1150,10 @@ class N3VQMulOpSL16<bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy,
|
ValueType ResTy, ValueType OpTy,
|
||||||
SDNode MulOp, SDNode ShOp>
|
SDNode MulOp, SDNode ShOp>
|
||||||
: N3V<1, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<1, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst),
|
(outs QPR:$dst),
|
||||||
(ins QPR:$src1, QPR:$src2, DPR_8:$src3, nohash_imm:$lane), itin,
|
(ins QPR:$src1, QPR:$src2, DPR_8:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (ShOp (ResTy QPR:$src1),
|
(ResTy (ShOp (ResTy QPR:$src1),
|
||||||
@ -1188,9 +1193,10 @@ class N3VLInt3<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VLInt3SL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VLInt3SL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<op24, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<op24, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst),
|
(outs QPR:$dst),
|
||||||
(ins QPR:$src1, DPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane), itin,
|
(ins QPR:$src1, DPR:$src2, DPR_VFP2:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (ResTy QPR:$src1),
|
(ResTy (IntOp (ResTy QPR:$src1),
|
||||||
@ -1200,9 +1206,10 @@ class N3VLInt3SL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
class N3VLInt3SL16<bit op24, bits<2> op21_20, bits<4> op11_8,
|
class N3VLInt3SL16<bit op24, bits<2> op21_20, bits<4> op11_8,
|
||||||
InstrItinClass itin, string OpcodeStr, string Dt,
|
InstrItinClass itin, string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<op24, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<op24, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst),
|
(outs QPR:$dst),
|
||||||
(ins QPR:$src1, DPR:$src2, DPR_8:$src3, nohash_imm:$lane), itin,
|
(ins QPR:$src1, DPR:$src2, DPR_8:$src3, nohash_imm:$lane),
|
||||||
|
NVMulSLFrm, itin,
|
||||||
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
OpcodeStr, Dt, "$dst, $src2, $src3[$lane]", "$src1 = $dst",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (ResTy QPR:$src1),
|
(ResTy (IntOp (ResTy QPR:$src1),
|
||||||
@ -1234,9 +1241,9 @@ class N3VLInt<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4,
|
|||||||
class N3VLIntSL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
class N3VLIntSL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
||||||
string OpcodeStr, string Dt,
|
string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<op24, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<op24, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins DPR:$src1, DPR_VFP2:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (OpTy DPR:$src1),
|
(ResTy (IntOp (OpTy DPR:$src1),
|
||||||
(OpTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
(OpTy (NEONvduplane (OpTy DPR_VFP2:$src2),
|
||||||
@ -1244,9 +1251,9 @@ class N3VLIntSL<bit op24, bits<2> op21_20, bits<4> op11_8, InstrItinClass itin,
|
|||||||
class N3VLIntSL16<bit op24, bits<2> op21_20, bits<4> op11_8,
|
class N3VLIntSL16<bit op24, bits<2> op21_20, bits<4> op11_8,
|
||||||
InstrItinClass itin, string OpcodeStr, string Dt,
|
InstrItinClass itin, string OpcodeStr, string Dt,
|
||||||
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
ValueType ResTy, ValueType OpTy, Intrinsic IntOp>
|
||||||
: N3V<op24, 1, op21_20, op11_8, 1, 0,
|
: N3Vf<op24, 1, op21_20, op11_8, 1, 0,
|
||||||
(outs QPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
(outs QPR:$dst), (ins DPR:$src1, DPR_8:$src2, nohash_imm:$lane),
|
||||||
itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
NVMulSLFrm, itin, OpcodeStr, Dt, "$dst, $src1, $src2[$lane]", "",
|
||||||
[(set (ResTy QPR:$dst),
|
[(set (ResTy QPR:$dst),
|
||||||
(ResTy (IntOp (OpTy DPR:$src1),
|
(ResTy (IntOp (OpTy DPR:$src1),
|
||||||
(OpTy (NEONvduplane (OpTy DPR_8:$src2),
|
(OpTy (NEONvduplane (OpTy DPR_8:$src2),
|
||||||
|
Loading…
Reference in New Issue
Block a user