From 3bd63cd65541762d42eaf6bb5c0b46d97c7d39c3 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209024 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/SIISelLowering.cpp | 2 ++ lib/Target/R600/SIInstructions.td | 6 ------ test/CodeGen/R600/v_cndmask.ll | 3 ++- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/Target/R600/SIISelLowering.cpp b/lib/Target/R600/SIISelLowering.cpp index 7c0a6dd9f4a..b51c46c59e6 100644 --- a/lib/Target/R600/SIISelLowering.cpp +++ b/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/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index fab74d064f7..482295c26e7 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/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/test/CodeGen/R600/v_cndmask.ll b/test/CodeGen/R600/v_cndmask.ll index f8e96559a8a..84087ee78d5 100644 --- a/test/CodeGen/R600/v_cndmask.ll +++ b/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 -- 2.34.1