radeon/llvm: prepare to revert the round mode state to default
authorVadim Girlin <vadimgirlin@gmail.com>
Fri, 25 May 2012 13:27:33 +0000 (17:27 +0400)
committerVadim Girlin <vadimgirlin@gmail.com>
Fri, 25 May 2012 13:27:33 +0000 (17:27 +0400)
Use TRUNC before FLT_TO_INT on evergreen/cayman.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/drivers/radeon/R600Instructions.td

index 88a03ab27ec3143b6de373b77b2bf97e2bf6a6fe..04f49cd28752cabaecc4a901bc33881b1a779a54 100644 (file)
@@ -901,7 +901,6 @@ class TRIG_eg <InstR600 trig, Intrinsic intr> : Pat<
   def CNDGT_eg : CNDGT_Common<0x1A>;
   def CNDGE_eg : CNDGE_Common<0x1B>;
   def MUL_LIT_eg : MUL_LIT_Common<0x1F>;
-  def FLT_TO_INT_eg : FLT_TO_INT_Common<0x50>;
   def EXP_IEEE_eg : EXP_IEEE_Common<0x81>;
   def LOG_CLAMPED_eg : LOG_CLAMPED_Common<0x82>;
   def LOG_IEEE_eg : LOG_IEEE_Common<0x83>;
@@ -916,7 +915,6 @@ class TRIG_eg <InstR600 trig, Intrinsic intr> : Pat<
   def MULLO_UINT_eg : MULLO_UINT_Common<0x91>;
   def MULHI_UINT_eg : MULHI_UINT_Common<0x92>;
   def RECIP_UINT_eg : RECIP_UINT_Common<0x94>;
-  def INT_TO_FLT_eg : INT_TO_FLT_Common<0x9B>;
   def DOT4_eg : DOT4_Common<0xBE>;
   def CUBE_eg : CUBE_Common<0xC0>;
 
@@ -928,6 +926,15 @@ class TRIG_eg <InstR600 trig, Intrinsic intr> : Pat<
   def : TRIG_eg <SIN_eg, int_AMDGPU_sin>;
   def : TRIG_eg <COS_eg, int_AMDGPU_cos>;
 
+  def FLT_TO_INT_eg : FLT_TO_INT_Common<0x50> {
+    let Pattern = [];
+  }
+
+  def INT_TO_FLT_eg : INT_TO_FLT_Common<0x9B>;
+
+  def : Pat<(fp_to_sint R600_Reg32:$src),
+    (FLT_TO_INT_eg (TRUNC R600_Reg32:$src))>;
+
 }
 
 let Predicates = [isCayman] in {