diff options
Diffstat (limited to 'llvm/lib/Target/ARM/ARMInstrInfo.td')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.td | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td index 4b58a150ad6..d81a699cc37 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.td +++ b/llvm/lib/Target/ARM/ARMInstrInfo.td @@ -2848,6 +2848,9 @@ def MOVr : AsI1<0b1101, (outs GPR:$Rd), (ins GPR:$Rm), DPFrm, IIC_iMOVr,    let Inst{15-12} = Rd;  } +def : ARMInstAlias<"movs${p} $Rd, $Rm",  +                   (MOVr GPR:$Rd, GPR:$Rm, pred:$p, CPSR)>; +  // A version for the smaller set of tail call registers.  let neverHasSideEffects = 1 in  def MOVr_TC : AsI1<0b1101, (outs tcGPR:$Rd), (ins tcGPR:$Rm), DPFrm, @@ -4025,6 +4028,14 @@ def ISB : AInoP<(outs), (ins memb_opt:$opt), MiscFrm, NoItinerary,    let Inst{3-0} = opt;  } +// Pseudo isntruction that combines movs + predicated rsbmi +// to implement integer ABS +let usesCustomInserter = 1, Defs = [CPSR] in { +def ABS : ARMPseudoInst< +  (outs GPR:$dst), (ins GPR:$src), +  8, NoItinerary, []>; +} +  let usesCustomInserter = 1 in {    let Defs = [CPSR] in {      def ATOMIC_LOAD_ADD_I8 : PseudoInst<  | 

