diff options
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrFormats.td | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrNEON.td | 20 | 
2 files changed, 10 insertions, 24 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrFormats.td b/llvm/lib/Target/ARM/ARMInstrFormats.td index 0bbf6960670..0632bdd69ad 100644 --- a/llvm/lib/Target/ARM/ARMInstrFormats.td +++ b/llvm/lib/Target/ARM/ARMInstrFormats.td @@ -1324,20 +1324,6 @@ 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 opc, string asm, string cstr, list<dag> pattern> -  : NDataI<oops, iops, itin, opc, 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, diff --git a/llvm/lib/Target/ARM/ARMInstrNEON.td b/llvm/lib/Target/ARM/ARMInstrNEON.td index 7dd30e500ae..a9ee30ceed9 100644 --- a/llvm/lib/Target/ARM/ARMInstrNEON.td +++ b/llvm/lib/Target/ARM/ARMInstrNEON.td @@ -2864,18 +2864,18 @@ def VREV16q8  : VREV16Q<0b00, "vrev16.8", v16i8>;  //   VEXT     : Vector Extract  class VEXTd<string OpcodeStr, ValueType Ty> -  : N3VImm<0,1,0b11,0,0, (outs DPR:$dst), -           (ins DPR:$lhs, DPR:$rhs, i32imm:$index), IIC_VEXTD, -           OpcodeStr, "\t$dst, $lhs, $rhs, $index", "", -           [(set DPR:$dst, (Ty (NEONvext (Ty DPR:$lhs), -                                         (Ty DPR:$rhs), imm:$index)))]>; +  : N3V<0,1,0b11,{?,?,?,?},0,0, (outs DPR:$dst), +        (ins DPR:$lhs, DPR:$rhs, i32imm:$index), IIC_VEXTD, +        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> -  : N3VImm<0,1,0b11,1,0, (outs QPR:$dst), -           (ins QPR:$lhs, QPR:$rhs, i32imm:$index), IIC_VEXTQ, -           OpcodeStr, "\t$dst, $lhs, $rhs, $index", "", -           [(set QPR:$dst, (Ty (NEONvext (Ty QPR:$lhs), -                                         (Ty QPR:$rhs), imm:$index)))]>; +  : N3V<0,1,0b11,{?,?,?,?},1,0, (outs QPR:$dst), +        (ins QPR:$lhs, QPR:$rhs, i32imm:$index), IIC_VEXTQ, +        OpcodeStr, "\t$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>;  | 

