Skip to content

Commit 808bc11

Browse files
committed
[GlobalISel] Don't form zero/sign extending loads for atomics.
For importing patterns, we only support matching G_LOAD, not G_ZEXTLOAD or G_SEXTLOAD. Differential Revision: https://reviews.llvm.org/D101932
1 parent 1f65f42 commit 808bc11

File tree

2 files changed

+192
-225
lines changed

2 files changed

+192
-225
lines changed

llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,10 +482,13 @@ bool CombinerHelper::matchCombineExtendingLoads(MachineInstr &MI,
482482
if (UseMI.getOpcode() == TargetOpcode::G_SEXT ||
483483
UseMI.getOpcode() == TargetOpcode::G_ZEXT ||
484484
(UseMI.getOpcode() == TargetOpcode::G_ANYEXT)) {
485+
const auto &MMO = **MI.memoperands_begin();
486+
// For atomics, only form anyextending loads.
487+
if (MMO.isAtomic() && UseMI.getOpcode() != TargetOpcode::G_ANYEXT)
488+
continue;
485489
// Check for legality.
486490
if (LI) {
487491
LegalityQuery::MemDesc MMDesc;
488-
const auto &MMO = **MI.memoperands_begin();
489492
MMDesc.SizeInBits = MMO.getSizeInBits();
490493
MMDesc.AlignInBits = MMO.getAlign().value() * 8;
491494
MMDesc.Ordering = MMO.getOrdering();

0 commit comments

Comments
 (0)