[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td
Evan Cheng
evan.cheng at apple.com
Fri Apr 14 16:32:52 PDT 2006
Changes in directory llvm/lib/Target/X86:
X86InstrSSE.td updated: 1.90 -> 1.91
---
Log message:
Some clean up
---
Diffs of the changes: (+81 -78)
X86InstrSSE.td | 159 +++++++++++++++++++++++++++++----------------------------
1 files changed, 81 insertions(+), 78 deletions(-)
Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.90 llvm/lib/Target/X86/X86InstrSSE.td:1.91
--- llvm/lib/Target/X86/X86InstrSSE.td:1.90 Fri Apr 14 16:59:03 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td Fri Apr 14 18:32:40 2006
@@ -736,7 +736,7 @@
}
//===----------------------------------------------------------------------===//
-// SSE packed Instructions
+// SSE packed FP Instructions
//===----------------------------------------------------------------------===//
// Some 'special' instructions
@@ -780,17 +780,6 @@
def MOVUPDmr : PDI<0x11, MRMDestMem, (ops f128mem:$dst, VR128:$src),
"movupd {$src, $dst|$dst, $src}",
[(int_x86_sse2_storeu_pd addr:$dst, VR128:$src)]>;
-def MOVDQUrm : I<0x6F, MRMSrcMem, (ops VR128:$dst, i128mem:$src),
- "movdqu {$src, $dst|$dst, $src}",
- [(set VR128:$dst, (int_x86_sse2_loadu_dq addr:$src))]>,
- XS, Requires<[HasSSE2]>;
-def MOVDQUmr : I<0x7F, MRMDestMem, (ops i128mem:$dst, VR128:$src),
- "movdqu {$src, $dst|$dst, $src}",
- [(int_x86_sse2_storeu_dq addr:$dst, VR128:$src)]>,
- XS, Requires<[HasSSE2]>;
-def LDDQUrm : S3DI<0xF0, MRMSrcMem, (ops VR128:$dst, i128mem:$src),
- "lddqu {$src, $dst|$dst, $src}",
- [(set VR128:$dst, (int_x86_sse3_ldu_dq addr:$src))]>;
let isTwoAddress = 1 in {
def MOVLPSrm : PSI<0x12, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f64mem:$src2),
@@ -1226,68 +1215,6 @@
"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
@@ -1401,6 +1328,17 @@
def MOVDQAmr : PDI<0x7F, MRMDestMem, (ops i128mem:$dst, VR128:$src),
"movdqa {$src, $dst|$dst, $src}",
[(store (v2i64 VR128:$src), addr:$dst)]>;
+def MOVDQUrm : I<0x6F, MRMSrcMem, (ops VR128:$dst, i128mem:$src),
+ "movdqu {$src, $dst|$dst, $src}",
+ [(set VR128:$dst, (int_x86_sse2_loadu_dq addr:$src))]>,
+ XS, Requires<[HasSSE2]>;
+def MOVDQUmr : I<0x7F, MRMDestMem, (ops i128mem:$dst, VR128:$src),
+ "movdqu {$src, $dst|$dst, $src}",
+ [(int_x86_sse2_storeu_dq addr:$dst, VR128:$src)]>,
+ XS, Requires<[HasSSE2]>;
+def LDDQUrm : S3DI<0xF0, MRMSrcMem, (ops VR128:$dst, i128mem:$src),
+ "lddqu {$src, $dst|$dst, $src}",
+ [(set VR128:$dst, (int_x86_sse3_ldu_dq addr:$src))]>;
// 128-bit Integer Arithmetic
let isTwoAddress = 1 in {
@@ -1800,6 +1738,71 @@
(load addr:$src2))))]>;
}
+// SSE2 Integer comparison
+let isTwoAddress = 1 in {
+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))))]>;
+}
+
// Pack instructions
let isTwoAddress = 1 in {
def PACKSSWBrr : PDI<0x63, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
@@ -1998,12 +2001,12 @@
}
// Extract / Insert
-def PEXTRWr : PDIi8<0xC5, MRMSrcReg,
+def PEXTRWri : PDIi8<0xC5, MRMSrcReg,
(ops R32:$dst, VR128:$src1, i32i8imm:$src2),
"pextrw {$src2, $src1, $dst|$dst, $src1, $src2}",
[(set R32:$dst, (X86pextrw (v8i16 VR128:$src1),
(i32 imm:$src2)))]>;
-def PEXTRWm : PDIi8<0xC5, MRMSrcMem,
+def PEXTRWmi : PDIi8<0xC5, MRMSrcMem,
(ops R32:$dst, i128mem:$src1, i32i8imm:$src2),
"pextrw {$src2, $src1, $dst|$dst, $src1, $src2}",
[(set R32:$dst, (X86pextrw
@@ -2011,12 +2014,12 @@
(i32 imm:$src2)))]>;
let isTwoAddress = 1 in {
-def PINSRWr : PDIi8<0xC4, MRMSrcReg,
+def PINSRWrri : PDIi8<0xC4, MRMSrcReg,
(ops VR128:$dst, VR128:$src1, R32:$src2, i32i8imm:$src3),
"pinsrw {$src3, $src2, $dst|$dst, $src2, $src3}",
[(set VR128:$dst, (v8i16 (X86pinsrw (v8i16 VR128:$src1),
R32:$src2, (i32 imm:$src3))))]>;
-def PINSRWm : PDIi8<0xC4, MRMSrcMem,
+def PINSRWrmi : PDIi8<0xC4, MRMSrcMem,
(ops VR128:$dst, VR128:$src1, i16mem:$src2, i32i8imm:$src3),
"pinsrw {$src3, $src2, $dst|$dst, $src2, $src3}",
[(set VR128:$dst,
More information about the llvm-commits
mailing list