Skip to content

Commit 0bae100

Browse files
arsenmSterling-Augustine
authored andcommitted
AMDGPU: Preserve flags in regbankselect when splitting or
1 parent b67c6a7 commit 0bae100

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2441,8 +2441,9 @@ void AMDGPURegisterBankInfo::applyMappingImpl(
24412441

24422442
setRegsToType(MRI, DefRegs, HalfTy);
24432443

2444-
B.buildInstr(Opc, {DefRegs[0]}, {Src0Regs[0], Src1Regs[0]});
2445-
B.buildInstr(Opc, {DefRegs[1]}, {Src0Regs[1], Src1Regs[1]});
2444+
auto Flags = MI.getFlags();
2445+
B.buildInstr(Opc, {DefRegs[0]}, {Src0Regs[0], Src1Regs[0]}, Flags);
2446+
B.buildInstr(Opc, {DefRegs[1]}, {Src0Regs[1], Src1Regs[1]}, Flags);
24462447

24472448
MRI.setRegBank(DstReg, AMDGPU::VGPRRegBank);
24482449
MI.eraseFromParent();

llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-or.mir

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,28 @@ body: |
327327
%2:_(s64) = G_OR %0, %1
328328
...
329329

330+
---
331+
name: or_s64_vv_flags
332+
legalized: true
333+
334+
body: |
335+
bb.0:
336+
liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
337+
; CHECK-LABEL: name: or_s64_vv_flags
338+
; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
339+
; CHECK-NEXT: {{ $}}
340+
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
341+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
342+
; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
343+
; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)
344+
; CHECK-NEXT: %3:vgpr(s32) = disjoint G_OR [[UV]], [[UV2]]
345+
; CHECK-NEXT: %4:vgpr(s32) = disjoint G_OR [[UV1]], [[UV3]]
346+
; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES %3(s32), %4(s32)
347+
%0:_(s64) = COPY $vgpr0_vgpr1
348+
%1:_(s64) = COPY $vgpr2_vgpr3
349+
%2:_(s64) = disjoint G_OR %0, %1
350+
...
351+
330352
---
331353
name: or_s64_vv_user
332354
legalized: true

0 commit comments

Comments
 (0)