[PATCH] D60580: [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only
Aditya Nandakumar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 11 14:08:49 PDT 2019
aditya_nandakumar added a comment.
Looks mostly good - there are some minor comments from my side.
================
Comment at: llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp:218
Res = getMRI()->createGenericVirtualRegister(getMRI()->getType(Op0));
- unsigned TmpReg = getMRI()->createGenericVirtualRegister(ValueTy);
-
- buildConstant(TmpReg, Value);
- return buildGEP(Res, Op0, TmpReg);
+ auto Cst = buildConstant({ValueTy}, Value);
+ return buildGEP(Res, Op0, Cst.getReg(0));
----------------
Nit : {} not necessary
================
Comment at: llvm/lib/CodeGen/TargetPassConfig.cpp:1228
bool TargetPassConfig::isGISelCSEEnabled() const {
- return getOptLevel() != CodeGenOpt::Level::None;
+ return true;
}
----------------
Maybe we should add a hook so targets can return the appropriate CSEConfigs for the opt level instead of the core passes making this decision for them?
================
Comment at: llvm/test/CodeGen/AArch64/GlobalISel/legalize-vaarg.mir:18
; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
- ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_GEP [[LOAD]], [[C]](s64)
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C]](s64)
+ ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_GEP [[LOAD]], [[COPY1]](s64)
----------------
Did you look why these copies are generated?
================
Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-addrspacecast.mir:307
; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0
+ ; VI: [[COPY2:%[0-9]+]]:_(p0) = COPY [[C1]](p0)
; VI: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[UV]](p0), 0
----------------
Similar here.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D60580/new/
https://reviews.llvm.org/D60580
More information about the llvm-commits
mailing list