[AMDGPU][GISel] Constrain selected operands in selectG_BUILD_VECTOR
authorPierre van Houtryve <pierre.vanhoutryve@amd.com>
Wed, 19 Oct 2022 09:01:19 +0000 (09:01 +0000)
committerPierre van Houtryve <pierre.vanhoutryve@amd.com>
Fri, 21 Oct 2022 06:50:16 +0000 (06:50 +0000)
Small bugfix. Currently harmless but a case in D134354 triggers it.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D136235

llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp

index 7f41e85..0a68966 100644 (file)
@@ -686,13 +686,19 @@ bool AMDGPUInstructionSelector::selectG_BUILD_VECTOR(MachineInstr &MI) const {
   // TODO: Can be improved?
   if (IsVector) {
     Register TmpReg = MRI->createVirtualRegister(&AMDGPU::VGPR_32RegClass);
-    BuildMI(*BB, MI, DL, TII.get(AMDGPU::V_AND_B32_e32), TmpReg)
-        .addImm(0xFFFF)
-        .addReg(Src0);
-    BuildMI(*BB, MI, DL, TII.get(AMDGPU::V_LSHL_OR_B32_e64), Dst)
-        .addReg(Src1)
-        .addImm(16)
-        .addReg(TmpReg);
+    auto MIB = BuildMI(*BB, MI, DL, TII.get(AMDGPU::V_AND_B32_e32), TmpReg)
+                   .addImm(0xFFFF)
+                   .addReg(Src0);
+    if (!constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI))
+      return false;
+
+    MIB = BuildMI(*BB, MI, DL, TII.get(AMDGPU::V_LSHL_OR_B32_e64), Dst)
+              .addReg(Src1)
+              .addImm(16)
+              .addReg(TmpReg);
+    if (!constrainSelectedInstRegOperands(*MIB, TII, TRI, RBI))
+      return false;
+
     MI.eraseFromParent();
     return true;
   }