[llvm] r209388 - R600/SI: Match fp_to_uint / uint_to_fp for f64

Matt Arsenault Matthew.Arsenault at amd.com
Wed May 21 20:20:30 PDT 2014


Author: arsenm
Date: Wed May 21 22:20:30 2014
New Revision: 209388

URL: http://llvm.org/viewvc/llvm-project?rev=209388&view=rev
Log:
R600/SI: Match fp_to_uint / uint_to_fp for f64

Added:
    llvm/trunk/test/CodeGen/R600/fp_to_uint.f64.ll
    llvm/trunk/test/CodeGen/R600/uint_to_fp.f64.ll
Modified:
    llvm/trunk/lib/Target/R600/SIInstructions.td

Modified: llvm/trunk/lib/Target/R600/SIInstructions.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIInstructions.td?rev=209388&r1=209387&r2=209388&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/SIInstructions.td (original)
+++ llvm/trunk/lib/Target/R600/SIInstructions.td Wed May 21 22:20:30 2014
@@ -977,8 +977,13 @@ defm V_CVT_F64_F32 : VOP1_64_32 <0x00000
 //defm V_CVT_F32_UBYTE1 : VOP1_32 <0x00000012, "V_CVT_F32_UBYTE1", []>;
 //defm V_CVT_F32_UBYTE2 : VOP1_32 <0x00000013, "V_CVT_F32_UBYTE2", []>;
 //defm V_CVT_F32_UBYTE3 : VOP1_32 <0x00000014, "V_CVT_F32_UBYTE3", []>;
-//defm V_CVT_U32_F64 : VOP1_32 <0x00000015, "V_CVT_U32_F64", []>;
-//defm V_CVT_F64_U32 : VOP1_64 <0x00000016, "V_CVT_F64_U32", []>;
+defm V_CVT_U32_F64 : VOP1_32_64 <0x00000015, "V_CVT_U32_F64",
+  [(set i32:$dst, (fp_to_uint f64:$src0))]
+>;
+defm V_CVT_F64_U32 : VOP1_64_32 <0x00000016, "V_CVT_F64_U32",
+  [(set f64:$dst, (uint_to_fp i32:$src0))]
+>;
+
 defm V_FRACT_F32 : VOP1_32 <0x00000020, "V_FRACT_F32",
   [(set f32:$dst, (AMDGPUfract f32:$src0))]
 >;

Added: llvm/trunk/test/CodeGen/R600/fp_to_uint.f64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/R600/fp_to_uint.f64.ll?rev=209388&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/R600/fp_to_uint.f64.ll (added)
+++ llvm/trunk/test/CodeGen/R600/fp_to_uint.f64.ll Wed May 21 22:20:30 2014
@@ -0,0 +1,9 @@
+; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
+
+; SI-LABEL: @fp_to_uint_i32_f64
+; SI: V_CVT_U32_F64_e32
+define void @fp_to_uint_i32_f64(i32 addrspace(1)* %out, double %in) {
+  %cast = fptoui double %in to i32
+  store i32 %cast, i32 addrspace(1)* %out, align 4
+  ret void
+}

Added: llvm/trunk/test/CodeGen/R600/uint_to_fp.f64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/R600/uint_to_fp.f64.ll?rev=209388&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/R600/uint_to_fp.f64.ll (added)
+++ llvm/trunk/test/CodeGen/R600/uint_to_fp.f64.ll Wed May 21 22:20:30 2014
@@ -0,0 +1,9 @@
+; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
+
+; SI-LABEL: @uint_to_fp_f64_i32
+; SI: V_CVT_F64_U32_e32
+define void @uint_to_fp_f64_i32(double addrspace(1)* %out, i32 %in) {
+  %cast = uitofp i32 %in to double
+  store double %cast, double addrspace(1)* %out, align 8
+  ret void
+}





More information about the llvm-commits mailing list