From f719ee9e767341eacf4f74dba0acf0fdf36821bc Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 16 May 2014 20:56:41 +0000 Subject: [PATCH] R600/SI: Promote f32 SELECT to i32 llvm-svn: 209024 --- llvm/lib/Target/R600/SIISelLowering.cpp | 2 ++ llvm/lib/Target/R600/SIInstructions.td | 6 ------ llvm/test/CodeGen/R600/v_cndmask.ll | 3 ++- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Target/R600/SIISelLowering.cpp b/llvm/lib/Target/R600/SIISelLowering.cpp index 7c0a6dd9f4ae..b51c46c59e6e 100644 --- a/llvm/lib/Target/R600/SIISelLowering.cpp +++ b/llvm/lib/Target/R600/SIISelLowering.cpp @@ -99,6 +99,8 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) : setOperationAction(ISD::STORE, MVT::v2i32, Custom); setOperationAction(ISD::STORE, MVT::v4i32, Custom); + setOperationAction(ISD::SELECT, MVT::f32, Promote); + AddPromotedToType(ISD::SELECT, MVT::f32, MVT::i32); setOperationAction(ISD::SELECT, MVT::i64, Custom); setOperationAction(ISD::SELECT, MVT::f64, Promote); AddPromotedToType(ISD::SELECT, MVT::f64, MVT::i64); diff --git a/llvm/lib/Target/R600/SIInstructions.td b/llvm/lib/Target/R600/SIInstructions.td index fab74d064f71..482295c26e7e 100644 --- a/llvm/lib/Target/R600/SIInstructions.td +++ b/llvm/lib/Target/R600/SIInstructions.td @@ -1121,12 +1121,6 @@ def V_CNDMASK_B32_e64 : VOP3 <0x00000100, (outs VReg_32:$dst), let src2_modifiers = 0; } -//f32 pattern for V_CNDMASK_B32_e64 -def : Pat < - (f32 (select i1:$src2, f32:$src1, f32:$src0)), - (V_CNDMASK_B32_e64 $src0, $src1, $src2) ->; - def V_READLANE_B32 : VOP2 < 0x00000001, (outs SReg_32:$vdst), diff --git a/llvm/test/CodeGen/R600/v_cndmask.ll b/llvm/test/CodeGen/R600/v_cndmask.ll index f8e96559a8a3..84087ee78d59 100644 --- a/llvm/test/CodeGen/R600/v_cndmask.ll +++ b/llvm/test/CodeGen/R600/v_cndmask.ll @@ -3,7 +3,8 @@ ; SI: @v_cnd_nan ; SI: V_CNDMASK_B32_e64 v{{[0-9]}}, ; SI-DAG: v{{[0-9]}} -; SI-DAG: {{nan|#QNAN}} +; All nan values are converted to 0xffffffff +; SI-DAG: -1 define void @v_cnd_nan(float addrspace(1)* %out, i32 %c, float %f) { entry: %0 = icmp ne i32 %c, 0