diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/ARM/ARMInstrNEON.td | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td index b9e819403e..7a63085a9d 100644 --- a/lib/Target/ARM/ARMInstrNEON.td +++ b/lib/Target/ARM/ARMInstrNEON.td @@ -1232,23 +1232,23 @@ class N3VQ<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4, InstrItinClass itin, string OpcodeStr, string Dt, ValueType ResTy, ValueType OpTy, SDNode OpNode, bit Commutable> : N3V<op24, op23, op21_20, op11_8, 1, op4, - (outs QPR:$Dd), (ins QPR:$Dn, QPR:$Dm), N3RegFrm, itin, - OpcodeStr, Dt, "$Dd, $Dn, $Dm", "", - [(set QPR:$Dd, (ResTy (OpNode (OpTy QPR:$Dn), (OpTy QPR:$Dm))))]> { + (outs QPR:$Qd), (ins QPR:$Qn, QPR:$Qm), N3RegFrm, itin, + OpcodeStr, Dt, "$Qd, $Qn, $Qm", "", + [(set QPR:$Qd, (ResTy (OpNode (OpTy QPR:$Qn), (OpTy QPR:$Qm))))]> { let isCommutable = Commutable; - bits<4> Dd; - bits<4> Dn; - bits<4> Dm; + bits<4> Qd; + bits<4> Qn; + bits<4> Qm; - let Inst{15-13} = Dd{2-0}; - let Inst{22} = Dd{3}; + let Inst{15-13} = Qd{2-0}; + let Inst{22} = Qd{3}; let Inst{12} = 0; - let Inst{19-17} = Dn{2-0}; - let Inst{7} = Dn{3}; + let Inst{19-17} = Qn{2-0}; + let Inst{7} = Qn{3}; let Inst{16} = 0; - let Inst{3-1} = Dm{2-0}; - let Inst{5} = Dm{3}; + let Inst{3-1} = Qm{2-0}; + let Inst{5} = Qm{3}; let Inst{0} = 0; } class N3VQX<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4, @@ -1597,10 +1597,25 @@ class N3VLExt<bit op24, bit op23, bits<2> op21_20, bits<4> op11_8, bit op4, ValueType TyQ, ValueType TyD, SDNode OpNode, SDNode ExtOp, bit Commutable> : N3V<op24, op23, op21_20, op11_8, 0, op4, - (outs QPR:$dst), (ins DPR:$src1, DPR:$src2), N3RegFrm, itin, - OpcodeStr, Dt, "$dst, $src1, $src2", "", - [(set QPR:$dst, (OpNode (TyQ (ExtOp (TyD DPR:$src1))), - (TyQ (ExtOp (TyD DPR:$src2)))))]> { + (outs QPR:$Qd), (ins DPR:$Dn, DPR:$Dm), N3RegFrm, itin, + OpcodeStr, Dt, "$Qd, $Dn, $Dm", "", + [(set QPR:$Qd, (OpNode (TyQ (ExtOp (TyD DPR:$Dn))), + (TyQ (ExtOp (TyD DPR:$Dm)))))]> { + let isCommutable = Commutable; + + // Instruction operands. + bits<4> Qd; + bits<5> Dn; + bits<5> Dm; + + let Inst{15-13} = Qd{2-0}; + let Inst{22} = Qd{3}; + let Inst{12} = 0; + let Inst{19-16} = Dn{3-0}; + let Inst{7} = Dn{4}; + let Inst{3-0} = Dm{3-0}; + let Inst{5} = Dm{4}; + let isCommutable = Commutable; } |