[PATCH] D93706: Added early exit.
Thomas Symalla via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 22 07:22:10 PST 2020
tsymalla created this revision.
Herald added subscribers: kerbowa, hiraditya, nhaehnle, jvesely, arsenm.
tsymalla requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D93706
Files:
llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp
Index: llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp
@@ -279,6 +279,12 @@
m_Reg(MatchInfo.Origin)))) {
const auto Cmp1 = MatchInfo.Cmp1;
const auto Cmp2 = MatchInfo.Cmp2;
+ const auto Diff = std::abs(Cmp2 - Cmp1);
+
+ // we don't need to clamp here.
+ if (Diff == 0 || Diff == 1) {
+ return false;
+ }
const int64_t Min = std::numeric_limits<int16_t>::min();
const int64_t Max = std::numeric_limits<int16_t>::max();
@@ -320,7 +326,10 @@
constexpr unsigned int CvtOpcode = AMDGPU::V_CVT_PK_I16_I32_e64;
assert(MI.getOpcode() != CvtOpcode);
- Register CvtDst = MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
+ const auto REG_CLASS = &AMDGPU::VGPR_32RegClass;
+
+ Register CvtDst = MRI.createVirtualRegister(REG_CLASS);
+ MRI.setType(CvtDst, S32);
auto CvtPk = B.buildInstr(CvtOpcode);
CvtPk.addDef(CvtDst);
@@ -331,13 +340,16 @@
auto min = std::min(MatchInfo.Cmp1, MatchInfo.Cmp2);
auto max = std::max(MatchInfo.Cmp1, MatchInfo.Cmp2);
- Register MinBoundaryDst = MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
+ Register MinBoundaryDst = MRI.createVirtualRegister(REG_CLASS);
+ MRI.setType(MinBoundaryDst, S32);
B.buildConstant(MinBoundaryDst, min);
- Register MaxBoundaryDst = MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
+ Register MaxBoundaryDst = MRI.createVirtualRegister(REG_CLASS);
+ MRI.setType(MaxBoundaryDst, S32);
B.buildConstant(MaxBoundaryDst, max);
- Register MedDst = MRI.createVirtualRegister(&AMDGPU::VGPR_32RegClass);
+ Register MedDst = MRI.createVirtualRegister(REG_CLASS);
+ MRI.setType(MedDst, S32);
auto Med = B.buildInstr(AMDGPU::V_MED3_I32);
Med.addDef(MedDst);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93706.313342.patch
Type: text/x-patch
Size: 1919 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201222/79997575/attachment.bin>
More information about the llvm-commits
mailing list