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

Evan Cheng evan.cheng at apple.com
Wed Mar 29 15:53:00 PST 2006



Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.45 -> 1.46
---
Log message:

Change SSE pack operation definitions to fit what the intrinsics expected.
For example, packsswb actually creates a v16i8 from a pair of v8i16. But since
the intrinsic specification forces the output type to match the operands.


---
Diffs of the changes:  (+20 -20)

 X86InstrSSE.td |   40 ++++++++++++++++++++--------------------
 1 files changed, 20 insertions(+), 20 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.45 llvm/lib/Target/X86/X86InstrSSE.td:1.46
--- llvm/lib/Target/X86/X86InstrSSE.td:1.45	Wed Mar 29 17:07:14 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td	Wed Mar 29 17:52:48 2006
@@ -1182,39 +1182,39 @@
 def PACKSSWBrr : PDI<0x63, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
                                        VR128:$src2),
                  "packsswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v16i8 (int_x86_sse2_packsswb_128
-                                           (v8i16 VR128:$src1),
-                                           (v8i16 VR128:$src2))))]>;
+                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packsswb_128
+                                           VR128:$src1,
+                                           VR128:$src2)))]>;
 def PACKSSWBrm : PDI<0x63, MRMSrcMem, (ops VR128:$dst, VR128:$src1,
                                        i128mem:$src2),
                  "packsswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v16i8 (int_x86_sse2_packsswb_128
-                                           (v8i16 VR128:$src1),
-                                           (loadv8i16 addr:$src2))))]>;
+                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packsswb_128
+                                           VR128:$src1,
+                                         (bc_v8i16 (loadv2f64 addr:$src2)))))]>;
 def PACKSSDWrr : PDI<0x6B, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
                                        VR128:$src2),
-                 "packsswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packssdw_128
-                                           (v4i32 VR128:$src1),
-                                           (v4i32 VR128:$src2))))]>;
+                 "packssdw {$src2, $dst|$dst, $src2}",
+                 [(set VR128:$dst, (v4i32 (int_x86_sse2_packssdw_128
+                                           VR128:$src1,
+                                           VR128:$src2)))]>;
 def PACKSSDWrm : PDI<0x6B, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
                                        i128mem:$src2),
-                 "packsswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packssdw_128
-                                           (v4i32 VR128:$src1),
-                                           (loadv4i32 addr:$src2))))]>;
+                 "packssdw {$src2, $dst|$dst, $src2}",
+                 [(set VR128:$dst, (v4i32 (int_x86_sse2_packssdw_128
+                                           VR128:$src1,
+                                         (bc_v4i32 (loadv2i64 addr:$src2)))))]>;
 def PACKUSWBrr : PDI<0x67, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
                                        VR128:$src2),
                      "packuswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v16i8 (int_x86_sse2_packuswb_128
-                                           (v8i16 VR128:$src1),
-                                           (v8i16 VR128:$src2))))]>;
+                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packuswb_128
+                                           VR128:$src1,
+                                           VR128:$src2)))]>;
 def PACKUSWBrm : PDI<0x67, MRMSrcReg, (ops VR128:$dst, VR128:$src1,
                                        i128mem:$src2),
                      "packuswb {$src2, $dst|$dst, $src2}",
-                 [(set VR128:$dst, (v16i8 (int_x86_sse2_packuswb_128
-                                           (v8i16 VR128:$src1),
-                                           (loadv8i16 addr:$src2))))]>;
+                 [(set VR128:$dst, (v8i16 (int_x86_sse2_packuswb_128
+                                           VR128:$src1,
+                                         (bc_v8i16 (loadv2i64 addr:$src2)))))]>;
 }
 
 // Shuffle and unpack instructions






More information about the llvm-commits mailing list