From dfb88dfe30824c19e0299bf4a640aecf20dd9ac7 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Sun, 13 May 2018 10:04:38 +0000 Subject: [PATCH] AMDGPU: Make undef legal for v2i16/v2f16 This is apparently necessary to stop undef from being turned into a build_vector of 0s. llvm-svn: 332195 --- llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 3 +++ llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 31d8392c374d..cca47f58ba59 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -441,6 +441,9 @@ SITargetLowering::SITargetLowering(const TargetMachine &TM, setOperationAction(ISD::Constant, MVT::v2i16, Legal); setOperationAction(ISD::ConstantFP, MVT::v2f16, Legal); + setOperationAction(ISD::UNDEF, MVT::v2i16, Legal); + setOperationAction(ISD::UNDEF, MVT::v2f16, Legal); + setOperationAction(ISD::STORE, MVT::v2i16, Promote); AddPromotedToType(ISD::STORE, MVT::v2i16, MVT::i32); setOperationAction(ISD::STORE, MVT::v2f16, Promote); diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll index 0aa64e2290dc..9cbbdc3ffd1f 100644 --- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll +++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll @@ -23,12 +23,9 @@ define amdgpu_kernel void @s_cvt_pkrtz_samereg_v2f16_f32(<2 x half> addrspace(1) ret void } -; FIXME: Folds to 0 on gfx9 ; GCN-LABEL: {{^}}s_cvt_pkrtz_undef_undef: ; GCN-NEXT: ; %bb.0 -; SI-NEXT: s_endpgm -; VI-NEXT: s_endpgm -; GFX9: v_mov_b32_e32 v{{[0-9]+}}, 0{{$}} +; GCN-NEXT: s_endpgm define amdgpu_kernel void @s_cvt_pkrtz_undef_undef(<2 x half> addrspace(1)* %out) #0 { %result = call <2 x half> @llvm.amdgcn.cvt.pkrtz(float undef, float undef) store <2 x half> %result, <2 x half> addrspace(1)* %out -- 2.34.1