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

Evan Cheng evan.cheng at apple.com
Wed Apr 12 23:12:37 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.84 -> 1.85
---
Log message:

psad, pmax, pmin intrinsics.


---
Diffs of the changes:  (+54 -1)

 X86InstrSSE.td |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 54 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.84 llvm/lib/Target/X86/X86InstrSSE.td:1.85
--- llvm/lib/Target/X86/X86InstrSSE.td:1.84	Thu Apr 13 00:24:54 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td	Thu Apr 13 01:11:45 2006
@@ -1421,7 +1421,6 @@
                     [(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
                                        VR128:$src2))]>;
 }
-
 def PMULHUWrm : PDI<0xE4, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
                     "pmulhuw {$src2, $dst|$dst, $src2}",
                     [(set VR128:$dst, (int_x86_sse2_pmulhu_w VR128:$src1,
@@ -1440,16 +1439,19 @@
                     [(set VR128:$dst, (int_x86_sse2_pmulu_dq VR128:$src1,
                                           (bc_v4i32 (loadv2i64 addr:$src2))))]>;
 
+let isCommutable = 1 in {
 def PMADDWDrr : PDI<0xF5, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
                     "pmaddwd {$src2, $dst|$dst, $src2}",
                     [(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
                                        VR128:$src2))]>;
+}
 def PMADDWDrm : PDI<0xF5, MRMSrcMem,
                     (ops VR128:$dst, VR128:$src1, i128mem:$src2),
                     "pmaddwd {$src2, $dst|$dst, $src2}",
                     [(set VR128:$dst, (int_x86_sse2_pmadd_wd VR128:$src1,
                                        (bc_v8i16 (loadv2i64 addr:$src2))))]>;
 
+let isCommutable = 1 in {
 def PAVGBrr : PDI<0xE0, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
                    "pavgb {$src2, $dst|$dst, $src2}",
                    [(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
@@ -1458,6 +1460,7 @@
                    "pavgw {$src2, $dst|$dst, $src2}",
                    [(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
                                       VR128:$src2))]>;
+}
 def PAVGBrm : PDI<0xE0, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
                    "pavgb {$src2, $dst|$dst, $src2}",
                    [(set VR128:$dst, (int_x86_sse2_pavg_b VR128:$src1,
@@ -1466,6 +1469,56 @@
                    "pavgw {$src2, $dst|$dst, $src2}",
                    [(set VR128:$dst, (int_x86_sse2_pavg_w VR128:$src1,
                                       (bc_v8i16 (loadv2i64 addr:$src2))))]>;
+
+let isCommutable = 1 in {
+def PMAXUBrr : PDI<0xDE, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                   "pmaxub {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmaxu_b VR128:$src1,
+                                      VR128:$src2))]>;
+def PMAXSWrr : PDI<0xEE, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                   "pmaxsw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmaxs_w VR128:$src1,
+                                      VR128:$src2))]>;
+}
+def PMAXUBrm : PDI<0xDE, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                   "pmaxub {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmaxu_b VR128:$src1,
+                                      (bc_v16i8 (loadv2i64 addr:$src2))))]>;
+def PMAXSWrm : PDI<0xEE, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                   "pmaxsw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmaxs_w VR128:$src1,
+                                      (bc_v8i16 (loadv2i64 addr:$src2))))]>;
+
+let isCommutable = 1 in {
+def PMINUBrr : PDI<0xDA, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                   "pminub {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pminu_b VR128:$src1,
+                                      VR128:$src2))]>;
+def PMINSWrr : PDI<0xEA, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                   "pminsw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmins_w VR128:$src1,
+                                      VR128:$src2))]>;
+}
+def PMINUBrm : PDI<0xDA, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                   "pminub {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pminu_b VR128:$src1,
+                                      (bc_v16i8 (loadv2i64 addr:$src2))))]>;
+def PMINSWrm : PDI<0xEA, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                   "pminsw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_pmins_w VR128:$src1,
+                                      (bc_v8i16 (loadv2i64 addr:$src2))))]>;
+
+
+let isCommutable = 1 in {
+def PSADBWrr : PDI<0xE0, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                   "psadbw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_psad_bw VR128:$src1,
+                                      VR128:$src2))]>;
+}
+def PSADBWrm : PDI<0xE0, MRMSrcMem, (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                   "psadbw {$src2, $dst|$dst, $src2}",
+                   [(set VR128:$dst, (int_x86_sse2_psad_bw VR128:$src1,
+                                      (bc_v16i8 (loadv2i64 addr:$src2))))]>;
 }
 
 let isTwoAddress = 1 in {






More information about the llvm-commits mailing list