[llvm-commits] [llvm] r112881 - /llvm/trunk/include/llvm/IntrinsicsX86.td

Bill Wendling isanbard at gmail.com
Thu Sep 2 15:26:36 PDT 2010


Author: void
Date: Thu Sep  2 17:26:35 2010
New Revision: 112881

URL: http://llvm.org/viewvc/llvm-project?rev=112881&view=rev
Log:
- Change __builtin_ia32_palignr intrinsic type to match the pattern in clang.

- Add patterns to match the following MMX builtins:

   * __builtin_ia32_vec_init_v8qi
   * __builtin_ia32_vec_init_v4hi
   * __builtin_ia32_vec_init_v2si
   * __builtin_ia32_vec_ext_v2si

  These builtins do not correspond to a single MMX instruction. They will have
  to be lowered -- most likely in the back-end.

Modified:
    llvm/trunk/include/llvm/IntrinsicsX86.td

Modified: llvm/trunk/include/llvm/IntrinsicsX86.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IntrinsicsX86.td?rev=112881&r1=112880&r2=112881&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IntrinsicsX86.td (original)
+++ llvm/trunk/include/llvm/IntrinsicsX86.td Thu Sep  2 17:26:35 2010
@@ -1570,9 +1570,9 @@
   def int_x86_mmx_movnt_dq : GCCBuiltin<"__builtin_ia32_movntq">,
               Intrinsic<[], [llvm_ptr_ty, llvm_v1i64_ty], []>;
 
-//  def int_x86_mmx_palignr_b : GCCBuiltin<"__builtin_ia32_palignr">,
-//              Intrinsic<[llvm_v1i64_ty], [llvm_v1i64_ty, 
-//                        llvm_v1i64_ty, llvm_i8_ty], [IntrNoMem]>;
+//   def int_x86_mmx_palignr_b : GCCBuiltin<"__builtin_ia32_palignr">,
+//               Intrinsic<[llvm_v8i8_ty], [llvm_8i8_ty, 
+//                          llvm_v8i8_ty, llvm_i8_ty], [IntrNoMem]>;
 
   def int_x86_mmx_pextr_w :
               Intrinsic<[llvm_i32_ty], [llvm_v1i64_ty, llvm_i32_ty], 
@@ -1583,7 +1583,26 @@
                         llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
 
   def int_x86_mmx_cvtsi32_si64 : 
-                        Intrinsic<[llvm_v1i64_ty], [llvm_i32_ty], [IntrNoMem]>;
+              Intrinsic<[llvm_v1i64_ty], [llvm_i32_ty], [IntrNoMem]>;
   def int_x86_mmx_cvtsi64_si32 : 
-                        Intrinsic<[llvm_i32_ty], [llvm_v1i64_ty], [IntrNoMem]>;
+              Intrinsic<[llvm_i32_ty], [llvm_v1i64_ty], [IntrNoMem]>;
+
+  def int_x86_mmx_vec_init_b : GCCBuiltin<"__builtin_ia32_vec_init_v8qi">,
+              Intrinsic<[llvm_v8i8_ty],
+                        [llvm_i8_ty, llvm_i8_ty, llvm_i8_ty, llvm_i8_ty,
+                         llvm_i8_ty, llvm_i8_ty, llvm_i8_ty, llvm_i8_ty],
+                        [IntrNoMem]>;
+  def int_x86_mmx_vec_init_w : GCCBuiltin<"__builtin_ia32_vec_init_v4hi">,
+              Intrinsic<[llvm_v4i16_ty],
+                        [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
+                        [IntrNoMem]>;
+  def int_x86_mmx_vec_init_d : GCCBuiltin<"__builtin_ia32_vec_init_v2si">,
+              Intrinsic<[llvm_v2i32_ty],
+                        [llvm_i32_ty, llvm_i32_ty],
+                        [IntrNoMem]>;
+
+  def int_x86_mmx_vec_ext_d : GCCBuiltin<"__builtin_ia32_vec_ext_v2si">,
+              Intrinsic<[llvm_v2i32_ty],
+                        [llvm_v2i32_ty, llvm_i32_ty],
+                        [IntrNoMem]>;
 }





More information about the llvm-commits mailing list