AMDGPU/GlobalISel: Fix isVCC for uniform s1 with reg class on wave32
authorPetar Avramovic <Petar.Avramovic@amd.com>
Thu, 21 Apr 2022 13:41:12 +0000 (15:41 +0200)
committerPetar Avramovic <Petar.Avramovic@amd.com>
Thu, 21 Apr 2022 14:12:04 +0000 (16:12 +0200)
commite06290e53f2880962fef582f118482d70f1c27f0
tree0774266e9d665f63de637c6a053d93c523769d4a
parent4e0dacb2cf325158c3c672f45202ab166aec99b0
AMDGPU/GlobalISel: Fix isVCC for uniform s1 with reg class on wave32

Fix isVCC for register that was assigned register class during
inst-selection. This happens when register has multiple uses.
For wave32, uniform i1 to vcc copy was selected like vcc to vcc
copy when uniform i1 had assigned register class.
Uniform i1 register with assigned register class will have s1 LLT,
be defined using G_TRUNC and class will be SReg_32RegClass.
Vcc i1 register with assigned register class will have s1 LLT,
class will be SReg_32RegClass for wave32 and SReg_64RegClass for
wave64 and register will not be defined by G_TRUNC.

Differential Revision: https://reviews.llvm.org/D124163
llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
llvm/test/CodeGen/AMDGPU/GlobalISel/fshl.ll
llvm/test/CodeGen/AMDGPU/GlobalISel/fshr.ll
llvm/test/CodeGen/AMDGPU/GlobalISel/i1-copy.ll
llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-i1-copy.mir