[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCISelLowering.h PPCInstrInfo.td

Chris Lattner lattner at cs.uiuc.edu
Sun Mar 19 22:15:57 PST 2006



Changes in directory llvm/lib/Target/PowerPC:

PPCISelLowering.h updated: 1.28 -> 1.29
PPCInstrInfo.td updated: 1.195 -> 1.196
---
Log message:

Check in some intermediate code that adds a skeleton for  matching vsplt*
instructions


---
Diffs of the changes:  (+28 -4)

 PPCISelLowering.h |   14 +++++++++++++-
 PPCInstrInfo.td   |   18 +++++++++++++++---
 2 files changed, 28 insertions(+), 4 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCISelLowering.h
diff -u llvm/lib/Target/PowerPC/PPCISelLowering.h:1.28 llvm/lib/Target/PowerPC/PPCISelLowering.h:1.29
--- llvm/lib/Target/PowerPC/PPCISelLowering.h:1.28	Sun Mar 19 19:53:53 2006
+++ llvm/lib/Target/PowerPC/PPCISelLowering.h	Mon Mar 20 00:15:45 2006
@@ -82,7 +82,19 @@
       /// Return with a flag operand, matched by 'blr'
       RET_FLAG,
     };
-  }  
+  }
+
+  /// Define some predicates that are used for node matching.
+  namespace PPC {
+    /// isSplatShuffleMask - Return true if the specified VECTOR_SHUFFLE operand
+    /// specifies a splat of a single element that is suitable for input to
+    /// VSPLTB/VSPLTH/VSPLTW.
+    bool isSplatShuffleMask(SDNode *N) { return false; } // FIXME:
+    
+    /// getVSPLTImmediate - Return the appropriate VSPLT* immediate to splat the
+    /// specified isSplatShuffleMask VECTOR_SHUFFLE mask.
+    unsigned getVSPLTImmediate(SDNode *N) { return 0; }  // FIXME:
+  }
   
   class PPCTargetLowering : public TargetLowering {
     int VarArgsFrameIndex;            // FrameIndex for start of varargs area.


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.195 llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.196
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.195	Sun Mar 19 23:05:55 2006
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td	Mon Mar 20 00:15:45 2006
@@ -123,6 +123,14 @@
   return ((unsigned)N->getValue() & 0xFFFF0000U) == (unsigned)N->getValue();
 }], HI16>;
 
+// VSPLT_get_imm xform function: convert vector_shuffle mask to VSPLT* imm.
+def VSPLT_get_imm : SDNodeXForm<build_vector, [{
+  return getI32Imm(PPC::getVSPLTImmediate(N));
+}]>;
+
+def VSPLT_shuffle_mask : PatLeaf<(build_vector), [{
+  return PPC::isSplatShuffleMask(N);
+}], VSPLT_get_imm>;
 
 //===----------------------------------------------------------------------===//
 // PowerPC Flag Definitions.
@@ -937,6 +945,7 @@
                       []>, isPPC64;
 }
 
+
 let PPC970_Unit = 5 in {  // VALU Operations.
 // VA-Form instructions.  3-input AltiVec ops.
 def VMADDFP : VAForm_1<46, (ops VRRC:$vD, VRRC:$vA, VRRC:$vB, VRRC:$vC),
@@ -1022,9 +1031,11 @@
 def VSPLTH : VXForm_1<588, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
                       "vsplth $vD, $vB, $UIMM", VecPerm,
                       []>;
-def VSPLTW : VXForm_1<652, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
-                      "vspltw $vD, $vB, $UIMM", VecPerm,
-                      []>;
+                      
+//def VSPLTW : VXForm_1<652, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
+//                      "vspltw $vD, $vB, $UIMM", VecPerm,
+//                      [(set VRRC:$vD, (vector_shuffle (v4f32 VRRC:$vB), (undef),
+//                                      VSPLT_shuffle_mask:$UIMM))]>;
                       
 // VX-Form Pseudo Instructions
 
@@ -1033,6 +1044,7 @@
                       []>;
 }
 
+
 //===----------------------------------------------------------------------===//
 // DWARF Pseudo Instructions
 //






More information about the llvm-commits mailing list