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

Bill Wendling isanbard at gmail.com
Thu Mar 29 17:35:39 PDT 2007



Changes in directory llvm/lib/Target/X86:

X86CallingConv.td updated: 1.10 -> 1.11
---
Log message:

Add MMX calling conventions.


---
Diffs of the changes:  (+14 -4)

 X86CallingConv.td |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)


Index: llvm/lib/Target/X86/X86CallingConv.td
diff -u llvm/lib/Target/X86/X86CallingConv.td:1.10 llvm/lib/Target/X86/X86CallingConv.td:1.11
--- llvm/lib/Target/X86/X86CallingConv.td:1.10	Wed Feb 28 12:35:11 2007
+++ llvm/lib/Target/X86/X86CallingConv.td	Thu Mar 29 19:35:22 2007
@@ -30,7 +30,11 @@
   
   // Vector types are always returned in XMM0.  If the target doesn't have XMM0,
   // it won't have vector types.
-  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToReg<[XMM0]>>
+  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToReg<[XMM0]>>,
+
+  // MMX vector types are always returned in MM0. If the target doesn't have
+  // MM0, it doesn't support these vector types.
+  CCIfType<[v8i8, v4i16, v2i32, v1i64], CCAssignToReg<[MM0]>>
 ]>;
 
 // X86-32 C return-value convention.
@@ -102,8 +106,10 @@
   CCIfType<[i32, i64, f32, f64], CCAssignToStack<8, 8>>,
   
   // Vectors get 16-byte stack slots that are 16-byte aligned.
-  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64],
-              CCAssignToStack<16, 16>>
+  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToStack<16, 16>>,
+
+  // __m64 vectors get 8-byte stack slots that are 8-byte aligned.
+  CCIfType<[v8i8, v4i16, v2i32, v1i64], CCAssignToStack<8, 8>>
 ]>;
 
 
@@ -127,7 +133,11 @@
               CCAssignToReg<[XMM0, XMM1, XMM2, XMM3]>>,
 
   // Other vectors get 16-byte stack slots that are 16-byte aligned.
-  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToStack<16, 16>>
+  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToStack<16, 16>>,
+
+  // __m64 vectors get 8-byte stack slots that are 8-byte aligned. They are
+  // passed in the parameter area.
+  CCIfType<[v8i8, v4i16, v2i32, v1i64], CCAssignToStack<8, 8>>
 ]>;
 
 def CC_X86_32_C : CallingConv<[






More information about the llvm-commits mailing list