[llvm] b5d6ad2 - [MachineCopyPropagation] Handle propagation of undef copies
Carl Ritson via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 7 04:34:55 PDT 2021
Author: Carl Ritson
Date: 2021-10-07T20:34:27+09:00
New Revision: b5d6ad20e182318b2048a923eac56a198250ed0a
URL: https://github.com/llvm/llvm-project/commit/b5d6ad20e182318b2048a923eac56a198250ed0a
DIFF: https://github.com/llvm/llvm-project/commit/b5d6ad20e182318b2048a923eac56a198250ed0a.diff
LOG: [MachineCopyPropagation] Handle propagation of undef copies
When propagating undefined copies the undef flag must also be
propagated.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D111219
Added:
llvm/test/CodeGen/AMDGPU/undef-copy-propagation.mir
Modified:
llvm/lib/CodeGen/MachineCopyPropagation.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
index 2d9ada5a77e98..e3fbd880ffdfb 100644
--- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp
+++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
@@ -576,6 +576,7 @@ void MachineCopyPropagation::forwardUses(MachineInstr &MI) {
MOUse.setReg(CopySrcReg);
if (!CopySrc.isRenamable())
MOUse.setIsRenamable(false);
+ MOUse.setIsUndef(CopySrc.isUndef());
LLVM_DEBUG(dbgs() << "MCP: After replacement: " << MI << "\n");
diff --git a/llvm/test/CodeGen/AMDGPU/undef-copy-propagation.mir b/llvm/test/CodeGen/AMDGPU/undef-copy-propagation.mir
new file mode 100644
index 0000000000000..af255e35bc9ce
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/undef-copy-propagation.mir
@@ -0,0 +1,22 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# RUN: llc -o - %s -march=amdgcn -mcpu=gfx1010 -run-pass=machine-cp -verify-machineinstrs | FileCheck %s
+
+---
+name: undef_copy_propagation
+tracksRegLiveness: true
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: undef_copy_propagation
+ ; CHECK: renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
+ ; CHECK-NEXT: renamable $vgpr1 = COPY undef $sgpr42
+ ; CHECK-NEXT: renamable $vgpr2 = COPY undef $sgpr42
+ ; CHECK-NEXT: renamable $vgpr3 = COPY undef $sgpr42
+ ; CHECK-NEXT: EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
+ renamable $vgpr0 = COPY undef renamable $sgpr42, implicit $exec
+ renamable $vgpr1 = COPY renamable $vgpr0
+ renamable $vgpr2 = COPY renamable $vgpr0
+ renamable $vgpr3 = COPY renamable $vgpr0
+
+ EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
+...
More information about the llvm-commits
mailing list