diff options
| author | Jim Grosbach <grosbach@apple.com> | 2012-04-20 00:15:00 +0000 | 
|---|---|---|
| committer | Jim Grosbach <grosbach@apple.com> | 2012-04-20 00:15:00 +0000 | 
| commit | 9cc324d31a64adc3899cf03ce0eda72b05fa0d23 (patch) | |
| tree | b713c9b54595feb8f142f8a9dfbd9c6efc5886bf /llvm/lib | |
| parent | 86afe67e1068a4c084596689d6125ac8637c315a (diff) | |
| download | bcm5719-llvm-9cc324d31a64adc3899cf03ce0eda72b05fa0d23.tar.gz bcm5719-llvm-9cc324d31a64adc3899cf03ce0eda72b05fa0d23.zip  | |
ARM some VFP tblgen'erated two-operand aliases.
llvm-svn: 155178
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrVFP.td | 24 | 
1 files changed, 8 insertions, 16 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td b/llvm/lib/Target/ARM/ARMInstrVFP.td index 3600b889d6f..3523655410c 100644 --- a/llvm/lib/Target/ARM/ARMInstrVFP.td +++ b/llvm/lib/Target/ARM/ARMInstrVFP.td @@ -221,11 +221,13 @@ defm : VFPDTAnyInstAlias<"vpop${p}", "$r",  // FP Binary Operations.  // +let TwoOperandAliasConstraint = "$Dn = $Dd" in  def VADDD  : ADbI<0b11100, 0b11, 0, 0,                    (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),                    IIC_fpALU64, "vadd", ".f64\t$Dd, $Dn, $Dm",                    [(set DPR:$Dd, (fadd DPR:$Dn, (f64 DPR:$Dm)))]>; +let TwoOperandAliasConstraint = "$Sn = $Sd" in  def VADDS  : ASbIn<0b11100, 0b11, 0, 0,                     (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),                     IIC_fpALU32, "vadd", ".f32\t$Sd, $Sn, $Sm", @@ -235,11 +237,13 @@ def VADDS  : ASbIn<0b11100, 0b11, 0, 0,    let D = VFPNeonA8Domain;  } +let TwoOperandAliasConstraint = "$Dn = $Dd" in  def VSUBD  : ADbI<0b11100, 0b11, 1, 0,                    (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),                    IIC_fpALU64, "vsub", ".f64\t$Dd, $Dn, $Dm",                    [(set DPR:$Dd, (fsub DPR:$Dn, (f64 DPR:$Dm)))]>; +let TwoOperandAliasConstraint = "$Sn = $Sd" in  def VSUBS  : ASbIn<0b11100, 0b11, 1, 0,                     (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),                     IIC_fpALU32, "vsub", ".f32\t$Sd, $Sn, $Sm", @@ -249,21 +253,25 @@ def VSUBS  : ASbIn<0b11100, 0b11, 1, 0,    let D = VFPNeonA8Domain;  } +let TwoOperandAliasConstraint = "$Dn = $Dd" in  def VDIVD  : ADbI<0b11101, 0b00, 0, 0,                    (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),                    IIC_fpDIV64, "vdiv", ".f64\t$Dd, $Dn, $Dm",                    [(set DPR:$Dd, (fdiv DPR:$Dn, (f64 DPR:$Dm)))]>; +let TwoOperandAliasConstraint = "$Sn = $Sd" in  def VDIVS  : ASbI<0b11101, 0b00, 0, 0,                    (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),                    IIC_fpDIV32, "vdiv", ".f32\t$Sd, $Sn, $Sm",                    [(set SPR:$Sd, (fdiv SPR:$Sn, SPR:$Sm))]>; +let TwoOperandAliasConstraint = "$Dn = $Dd" in  def VMULD  : ADbI<0b11100, 0b10, 0, 0,                    (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),                    IIC_fpMUL64, "vmul", ".f64\t$Dd, $Dn, $Dm",                    [(set DPR:$Dd, (fmul DPR:$Dn, (f64 DPR:$Dm)))]>; +let TwoOperandAliasConstraint = "$Sn = $Sd" in  def VMULS  : ASbIn<0b11100, 0b10, 0, 0,                     (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),                     IIC_fpMUL32, "vmul", ".f32\t$Sd, $Sn, $Sm", @@ -1426,22 +1434,6 @@ def : VFP2InstAlias<"vldr${p}.64 $Dd, $addr",  def : VFP2InstAlias<"vstr${p}.64 $Dd, $addr",                      (VSTRD DPR:$Dd, addrmode5:$addr, pred:$p)>; -// VMUL has a two-operand form (implied destination operand) -def : VFP2InstAlias<"vmul${p}.f64 $Dn, $Dm", -                    (VMULD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>; -def : VFP2InstAlias<"vmul${p}.f32 $Sn, $Sm", -                    (VMULS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>; -// VADD has a two-operand form (implied destination operand) -def : VFP2InstAlias<"vadd${p}.f64 $Dn, $Dm", -                    (VADDD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>; -def : VFP2InstAlias<"vadd${p}.f32 $Sn, $Sm", -                    (VADDS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>; -// VSUB has a two-operand form (implied destination operand) -def : VFP2InstAlias<"vsub${p}.f64 $Dn, $Dm", -                    (VSUBD DPR:$Dn, DPR:$Dn, DPR:$Dm, pred:$p)>; -def : VFP2InstAlias<"vsub${p}.f32 $Sn, $Sm", -                    (VSUBS SPR:$Sn, SPR:$Sn, SPR:$Sm, pred:$p)>; -  // VMOV can accept optional 32-bit or less data type suffix suffix.  def : VFP2InstAlias<"vmov${p}.8 $Rt, $Sn",                      (VMOVRS GPR:$Rt, SPR:$Sn, pred:$p)>;  | 

