[PATCH] D140416: [AMDGPU][GlobalISel] Fix mapping G_FREEZE
Mirko Brkusanin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 20 09:30:01 PST 2022
mbrkusanin created this revision.
mbrkusanin added a project: LLVM.
Herald added subscribers: kosarev, foad, kerbowa, hiraditya, tpr, dstuttard, yaxunl, jvesely, kzhuravl, arsenm.
Herald added a project: All.
mbrkusanin requested review of this revision.
Herald added a subscriber: wdng.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D140416
Files:
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-freeze.mir
Index: llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-freeze.mir
===================================================================
--- llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-freeze.mir
+++ llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-freeze.mir
@@ -49,6 +49,29 @@
...
+---
+name: test_freeze_s1_sgpr_to_sgpr
+legalized: true
+body: |
+ bb.0:
+ liveins: $sgpr0
+
+ ; CHECK-LABEL: name: test_freeze_s1_sgpr_to_sgpr
+ ; CHECK: liveins: $sgpr0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
+ ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s1) = G_FREEZE [[TRUNC]]
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[FREEZE]](s1)
+ ; CHECK-NEXT: $sgpr0 = COPY [[ANYEXT]](s32)
+ %0:_(s32) = COPY $sgpr0
+ %1:_(s1) = G_TRUNC %0(s32)
+ %2:_(s1) = G_FREEZE %1
+ %3:_(s32) = G_ANYEXT %2(s1)
+ $sgpr0 = COPY %3(s32)
+
+...
+
---
name: test_freeze_s1_vcc
legalized: true
Index: llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
@@ -3512,7 +3512,8 @@
DstBank = SrcBank;
unsigned Size = getSizeInBits(MI.getOperand(0).getReg(), MRI, *TRI);
- if (cannotCopy(*DstBank, *SrcBank, Size))
+ if (MI.getOpcode() != AMDGPU::G_FREEZE &&
+ cannotCopy(*DstBank, *SrcBank, Size))
return getInvalidInstructionMapping();
const ValueMapping &ValMap = getValueMapping(0, Size, *DstBank);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140416.484301.patch
Type: text/x-patch
Size: 1658 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221220/880309f1/attachment.bin>
More information about the llvm-commits
mailing list