Add FP -> Int Conversions
authorChris Lattner <sabre@nondot.org>
Tue, 4 Apr 2006 23:25:02 +0000 (23:25 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 4 Apr 2006 23:25:02 +0000 (23:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27417 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IntrinsicsPowerPC.td
lib/Target/PowerPC/PPCInstrAltivec.td

index f918d7a97a29a1b4782f6d6cf8195b5918edf5ab..98fd80b5c96d07219168194bcf3128f34c8cfd82 100644 (file)
@@ -350,13 +350,19 @@ let TargetPrefix = "ppc" in {  // All PPC intrinsics start with "llvm.ppc.".
             Intrinsic<[llvm_v4i32_ty, llvm_v8i16_ty], [InstrNoMem]>;
 
 
-  // FP to integer conversion.
+  // FP <-> integer conversion.
   def int_ppc_altivec_vcfsx : GCCBuiltin<"__builtin_altivec_vcfsx">,
               Intrinsic<[llvm_v4f32_ty, llvm_v4i32_ty, llvm_int_ty],
                         [InstrNoMem]>;
   def int_ppc_altivec_vcfux : GCCBuiltin<"__builtin_altivec_vcfux">,
               Intrinsic<[llvm_v4f32_ty, llvm_v4i32_ty, llvm_int_ty],
                         [InstrNoMem]>;
+  def int_ppc_altivec_vctsxs : GCCBuiltin<"__builtin_altivec_vctsxs">,
+              Intrinsic<[llvm_v4i32_ty, llvm_v4f32_ty, llvm_int_ty],
+                        [InstrNoMem]>;
+  def int_ppc_altivec_vctuxs : GCCBuiltin<"__builtin_altivec_vctuxs">,
+              Intrinsic<[llvm_v4i32_ty, llvm_v4f32_ty, llvm_int_ty],
+                        [InstrNoMem]>;
 
   def int_ppc_altivec_vrfim : GCCBuiltin<"__builtin_altivec_vrfim">,
               Intrinsic<[llvm_v4f32_ty, llvm_v4f32_ty], [InstrNoMem]>;
index 9eb18c3724dc4762508c424a40cdbefb2500553e..c82c042806cf82df6a509f46d5ef3a4186ea407f 100644 (file)
@@ -202,10 +202,12 @@ def VCFUX  : VXForm_1<778, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
                              (int_ppc_altivec_vcfux VRRC:$vB, imm:$UIMM))]>;
 def VCTSXS : VXForm_1<970, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
                       "vctsxs $vD, $vB, $UIMM", VecFP,
-                      []>;
+                      [(set VRRC:$vD,
+                             (int_ppc_altivec_vctsxs VRRC:$vB, imm:$UIMM))]>;
 def VCTUXS : VXForm_1<906, (ops VRRC:$vD, u5imm:$UIMM, VRRC:$vB),
                       "vctuxs $vD, $vB, $UIMM", VecFP,
-                      []>;
+                      [(set VRRC:$vD,
+                             (int_ppc_altivec_vctuxs VRRC:$vB, imm:$UIMM))]>;
 def VEXPTEFP : VX2_Int<394, "vexptefp", int_ppc_altivec_vexptefp>;
 def VLOGEFP  : VX2_Int<458, "vlogefp",  int_ppc_altivec_vlogefp>;