[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

Evan Cheng evan.cheng at apple.com
Tue Apr 4 14:49:52 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.60 -> 1.61
---
Log message:

Added pslldq and psrldq.


---
Diffs of the changes:  (+18 -0)

 X86InstrSSE.td |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.60 llvm/lib/Target/X86/X86InstrSSE.td:1.61
--- llvm/lib/Target/X86/X86InstrSSE.td:1.60	Tue Apr  4 14:12:30 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td	Tue Apr  4 16:49:39 2006
@@ -57,6 +57,11 @@
   return N->isExactlyValue(+0.0);
 }]>;
 
+def PSxLDQ_imm  : SDNodeXForm<imm, [{
+  // Transformation function: imm >> 3
+  return getI32Imm(N->getValue() >> 3);
+}]>;
+
 // SHUFFLE_get_shuf_imm xform function: convert vector_shuffle mask to PSHUF*,
 // SHUFP* etc. imm.
 def SHUFFLE_get_shuf_imm : SDNodeXForm<build_vector, [{
@@ -1159,6 +1164,13 @@
                                         (load addr:$src2))))]>;
 }
 
+let isTwoAddress = 1 in {
+def PSLLDQri : PDIi8<0x73, MRM7r, (ops VR128:$dst, VR128:$src1, i32i8imm:$src2),
+                     "pslldq {$src2, $dst|$dst, $src2}", []>;
+def PSRLDQri : PDIi8<0x73, MRM7r, (ops VR128:$dst, VR128:$src1, i32i8imm:$src2),
+                     "psrldq {$src2, $dst|$dst, $src2}", []>;
+}
+
 // Logical
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
@@ -1721,6 +1733,12 @@
           (v4f32 (PSHUFLWmi addr:$src1, PSHUFLW_fp_shuffle_mask:$sm))>,
       Requires<[HasSSE2]>;
 
+// 128-bit logical shifts
+def : Pat<(int_x86_sse2_psll_dq VR128:$src1, imm:$src2),
+          (v2i64 (PSLLDQri VR128:$src1, (PSxLDQ_imm imm:$src2)))>;
+def : Pat<(int_x86_sse2_psrl_dq VR128:$src1, imm:$src2),
+          (v2i64 (PSRLDQri VR128:$src1, (PSxLDQ_imm imm:$src2)))>;
+
 // Logical ops
 def : Pat<(and (bc_v4i32 (v4f32 VR128:$src1)), (loadv4i32 addr:$src2)),
           (ANDPSrm VR128:$src1, addr:$src2)>;






More information about the llvm-commits mailing list