[PATCH] D110841: [AArch64] Remove redundant ORRWrs which is generated by zero-extend
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 20 05:53:33 PDT 2021
dmgreen added a comment.
Do we need to remove Kill flags from the uses of the register we are replacing? From something like this:
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-none-none-eabi"
@e = dso_local local_unnamed_addr global i16 0, align 4
@b = dso_local local_unnamed_addr global i32 0, align 4
@d = dso_local local_unnamed_addr global i32 0, align 4
@c = dso_local local_unnamed_addr global i32* null, align 8
@a = dso_local local_unnamed_addr global i32 0, align 4
define i32 @i() {
entry:
%0 = load i32, i32* @b, align 4
%1 = trunc i32 %0 to i16
%conv1 = and i16 %1, 255
%2 = load i32, i32* @d, align 4
%tobool.not = icmp eq i32 %2, 0
br i1 %tobool.not, label %if.end, label %if.then
if.then: ; preds = %entry
%conv2 = zext i16 %conv1 to i64
%3 = inttoptr i64 %conv2 to i32*
store i32* %3, i32** @c, align 8
br label %if.end
if.end: ; preds = %if.then, %entry
%4 = load i32, i32* @a, align 4
%5 = trunc i32 %4 to i16
%conv4 = or i16 %conv1, %5
store i16 %conv4, i16* @e, align 4
ret i32 0
}
================
Comment at: llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp:240
+
+ Register DefReg = MI.getOperand(0).getReg();
+ MRI->replaceRegWith(DefReg, MI.getOperand(2).getReg());
----------------
Can we add a dbgs() output explaining what was removed?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110841/new/
https://reviews.llvm.org/D110841
More information about the llvm-commits
mailing list