[llvm-commits] [llvm] r117956 - in /llvm/trunk/lib/Target/ARM: ARMInstrFormats.td ARMInstrVFP.td

Bill Wendling isanbard at gmail.com
Mon Nov 1 14:17:06 PDT 2010


Author: void
Date: Mon Nov  1 16:17:06 2010
New Revision: 117956

URL: http://llvm.org/viewvc/llvm-project?rev=117956&view=rev
Log:
Move the machine operand MC encoding patterns to the parent classes.

Modified:
    llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
    llvm/trunk/lib/Target/ARM/ARMInstrVFP.td

Modified: llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrFormats.td?rev=117956&r1=117955&r2=117956&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrFormats.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrFormats.td Mon Nov  1 16:17:06 2010
@@ -1573,6 +1573,19 @@
            dag iops, InstrItinClass itin, string opc, string asm,
            list<dag> pattern>
   : VFPAI<oops, iops, VFPBinaryFrm, itin, opc, asm, pattern> {
+  // Instruction operands.
+  bits<5> Dd;
+  bits<5> Dn;
+  bits<5> Dm;
+
+  // Encode instruction operands.
+  let Inst{19-16} = Dn{3-0};
+  let Inst{7}     = Dn{4};
+  let Inst{15-12} = Dd{3-0};
+  let Inst{22}    = Dd{4};
+  let Inst{3-0}   = Dm{3-0};
+  let Inst{5}     = Dm{4};
+
   let Inst{27-23} = opcod1;
   let Inst{21-20} = opcod2;
   let Inst{11-9}  = 0b101;

Modified: llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrVFP.td?rev=117956&r1=117955&r2=117956&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrVFP.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrVFP.td Mon Nov  1 16:17:06 2010
@@ -728,30 +728,12 @@
 // FP FMA Operations.
 //
 
-class ADbI_vmlX_Encode<bits<5> opcod1, bits<2> opcod2, bit op6, bit op4,
-                       dag oops, dag iops, InstrItinClass itin, string opc,
-                       string asm, list<dag> pattern>
-  : ADbI_vmlX<opcod1, opcod2, op6, op4, oops, iops, itin, opc, asm, pattern> {
-  // Instruction operands.
-  bits<5> Dd;
-  bits<5> Dn;
-  bits<5> Dm;
-
-  // Encode instruction operands.
-  let Inst{19-16} = Dn{3-0};
-  let Inst{7}     = Dn{4};
-  let Inst{15-12} = Dd{3-0};
-  let Inst{22}    = Dd{4};
-  let Inst{3-0}   = Dm{3-0};
-  let Inst{5}     = Dm{4};
-}
-
-def VMLAD : ADbI_vmlX_Encode<0b11100, 0b00, 0, 0,
-                             (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
-                             IIC_fpMAC64, "vmla", ".f64\t$Dd, $Dn, $Dm",
-                             [(set DPR:$Dd, (fadd (fmul DPR:$Dn, DPR:$Dm),
-                                                  (f64 DPR:$Ddin)))]>,
-                             RegConstraint<"$Ddin = $Dd">;
+def VMLAD : ADbI_vmlX<0b11100, 0b00, 0, 0,
+                      (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
+                      IIC_fpMAC64, "vmla", ".f64\t$Dd, $Dn, $Dm",
+                      [(set DPR:$Dd, (fadd (fmul DPR:$Dn, DPR:$Dm),
+                                           (f64 DPR:$Ddin)))]>,
+              RegConstraint<"$Ddin = $Dd">;
 
 def VMLAS : ASbIn<0b11100, 0b00, 0, 0,
                   (outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
@@ -765,12 +747,12 @@
 def : Pat<(fadd SPR:$dstin, (fmul SPR:$a, SPR:$b)),
           (VMLAS SPR:$dstin, SPR:$a, SPR:$b)>, Requires<[DontUseNEONForFP]>;
 
-def VMLSD : ADbI_vmlX_Encode<0b11100, 0b00, 1, 0,
-                             (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
-                             IIC_fpMAC64, "vmls", ".f64\t$Dd, $Dn, $Dm",
-                             [(set DPR:$Dd, (fadd (fneg (fmul DPR:$Dn,DPR:$Dm)),
-                                                        (f64 DPR:$Ddin)))]>,
-                             RegConstraint<"$Ddin = $Dd">;
+def VMLSD : ADbI_vmlX<0b11100, 0b00, 1, 0,
+                      (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
+                      IIC_fpMAC64, "vmls", ".f64\t$Dd, $Dn, $Dm",
+                      [(set DPR:$Dd, (fadd (fneg (fmul DPR:$Dn,DPR:$Dm)),
+                                                 (f64 DPR:$Ddin)))]>,
+              RegConstraint<"$Ddin = $Dd">;
 
 def VMLSS : ASbIn<0b11100, 0b00, 1, 0,
                   (outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
@@ -784,11 +766,11 @@
 def : Pat<(fsub SPR:$dstin, (fmul SPR:$a, SPR:$b)),
           (VMLSS SPR:$dstin, SPR:$a, SPR:$b)>, Requires<[DontUseNEONForFP]>;
 
-def VNMLAD : ADbI_vmlX_Encode<0b11100, 0b01, 1, 0,
-                              (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
-                              IIC_fpMAC64, "vnmla", ".f64\t$Dd, $Dn, $Dm",
-                              [(set DPR:$Dd,(fsub (fneg (fmul DPR:$Dn,DPR:$Dm)),
-                                                  (f64 DPR:$Ddin)))]>,
+def VNMLAD : ADbI_vmlX<0b11100, 0b01, 1, 0,
+                       (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
+                       IIC_fpMAC64, "vnmla", ".f64\t$Dd, $Dn, $Dm",
+                       [(set DPR:$Dd,(fsub (fneg (fmul DPR:$Dn,DPR:$Dm)),
+                                           (f64 DPR:$Ddin)))]>,
                 RegConstraint<"$Ddin = $Dd">;
 
 def VNMLAS : ASbI<0b11100, 0b01, 1, 0,
@@ -803,12 +785,12 @@
 def : Pat<(fsub (fneg (fmul SPR:$a, SPR:$b)), SPR:$dstin),
           (VNMLAS SPR:$dstin, SPR:$a, SPR:$b)>, Requires<[DontUseNEONForFP]>;
 
-def VNMLSD : ADbI_vmlX_Encode<0b11100, 0b01, 0, 0,
-                              (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
-                              IIC_fpMAC64, "vnmls", ".f64\t$Dd, $Dn, $Dm",
-                              [(set DPR:$Dd, (fsub (fmul DPR:$Dn, DPR:$Dm),
-                                                   (f64 DPR:$Ddin)))]>,
-                              RegConstraint<"$Ddin = $Dd">;
+def VNMLSD : ADbI_vmlX<0b11100, 0b01, 0, 0,
+                       (outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
+                       IIC_fpMAC64, "vnmls", ".f64\t$Dd, $Dn, $Dm",
+                       [(set DPR:$Dd, (fsub (fmul DPR:$Dn, DPR:$Dm),
+                                            (f64 DPR:$Ddin)))]>,
+               RegConstraint<"$Ddin = $Dd">;
 
 def VNMLSS : ASbI<0b11100, 0b01, 0, 0,
                   (outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),





More information about the llvm-commits mailing list