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

Evan Cheng evan.cheng at apple.com
Thu Apr 13 18:40:07 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.87 -> 1.88
---
Log message:

pcmpeq* and pcmpgt* intrinsics.


---
Diffs of the changes:  (+68 -2)

 X86InstrSSE.td |   70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.87 llvm/lib/Target/X86/X86InstrSSE.td:1.88
--- llvm/lib/Target/X86/X86InstrSSE.td:1.87	Thu Apr 13 19:14:05 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td	Thu Apr 13 20:39:53 2006
@@ -1148,10 +1148,76 @@
                                        (load addr:$src), imm:$cc))]>;
 def CMPPDrr : PDIi8<0xC2, MRMSrcReg, 
                     (ops VR128:$dst, VR128:$src1, VR128:$src, SSECC:$cc),
-                    "cmp${cc}pd {$src, $dst|$dst, $src}", []>;
+                    "cmp${cc}pd {$src, $dst|$dst, $src}",
+                    [(set VR128:$dst, (int_x86_sse2_cmp_pd VR128:$src1,
+                                       VR128:$src, imm:$cc))]>;
 def CMPPDrm : PDIi8<0xC2, MRMSrcMem, 
                     (ops VR128:$dst, VR128:$src1, f128mem:$src, SSECC:$cc),
-                    "cmp${cc}pd {$src, $dst|$dst, $src}", []>;
+                    "cmp${cc}pd {$src, $dst|$dst, $src}",
+                    [(set VR128:$dst, (int_x86_sse2_cmp_pd VR128:$src1,
+                                       (load addr:$src), imm:$cc))]>;
+
+def PCMPEQBrr : PDI<0x74, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpeqb {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_b VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPEQBrm : PDI<0x74, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpeqb {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_b VR128:$src1,
+                                       (bc_v16i8 (loadv2i64 addr:$src2))))]>;
+def PCMPEQWrr : PDI<0x75, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpeqw {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_w VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPEQWrm : PDI<0x75, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpeqw {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_w VR128:$src1,
+                                       (bc_v8i16 (loadv2i64 addr:$src2))))]>;
+def PCMPEQDrr : PDI<0x76, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpeqd {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_d VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPEQDrm : PDI<0x76, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpeqd {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpeq_d VR128:$src1,
+                                       (bc_v4i32 (loadv2i64 addr:$src2))))]>;
+
+def PCMPGTBrr : PDI<0x64, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpgtb {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_b VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPGTBrm : PDI<0x64, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpgtb {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_b VR128:$src1,
+                                       (bc_v16i8 (loadv2i64 addr:$src2))))]>;
+def PCMPGTWrr : PDI<0x65, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpgtw {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_w VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPGTWrm : PDI<0x65, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpgtw {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_w VR128:$src1,
+                                       (bc_v8i16 (loadv2i64 addr:$src2))))]>;
+def PCMPGTDrr : PDI<0x66, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, VR128:$src2),
+                    "pcmpgtd {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_d VR128:$src1,
+                                       VR128:$src2))]>;
+def PCMPGTDrm : PDI<0x66, MRMSrcReg, 
+                    (ops VR128:$dst, VR128:$src1, i128mem:$src2),
+                    "pcmpgtd {$src2, $dst|$dst, $src2}",
+                    [(set VR128:$dst, (int_x86_sse2_pcmpgt_d VR128:$src1,
+                                       (bc_v4i32 (loadv2i64 addr:$src2))))]>;
 }
 
 // Shuffle and unpack instructions






More information about the llvm-commits mailing list