@@ -107,7 +107,7 @@ class SIMemOpInfo final {
107
107
const MachineBasicBlock::iterator &MI);
108
108
// / \returns Atomic cmpxchg/rmw info if \p MI is an atomic cmpxchg or
109
109
// / rmw operation, "None" otherwise.
110
- static Optional<SIMemOpInfo> getAtomicCmpxchgInfo (
110
+ static Optional<SIMemOpInfo> getAtomicCmpxchgOrRmwInfo (
111
111
const MachineBasicBlock::iterator &MI);
112
112
113
113
// / \brief Reports unknown synchronization scope used in \p MI to LLVM
@@ -128,7 +128,7 @@ class SIMemoryLegalizer final : public MachineFunctionPass {
128
128
unsigned Vmcnt0Immediate = 0 ;
129
129
130
130
// / \brief Opcode for cache invalidation instruction (L1).
131
- unsigned Wbinvl1Opcode = 0 ;
131
+ unsigned VmemSIMDCacheInvalidateOpc = 0 ;
132
132
133
133
// / \brief List of atomic pseudo instructions.
134
134
std::list<MachineBasicBlock::iterator> AtomicPseudoMIs;
@@ -163,8 +163,8 @@ class SIMemoryLegalizer final : public MachineFunctionPass {
163
163
164
164
// / \brief Inserts "buffer_wbinvl1_vol" instruction \p Before or after \p MI.
165
165
// / Always returns true.
166
- bool insertBufferWbinvl1Vol (MachineBasicBlock::iterator &MI,
167
- bool Before = true ) const ;
166
+ bool insertVmemSIMDCacheInvalidate (MachineBasicBlock::iterator &MI,
167
+ bool Before = true ) const ;
168
168
// / \brief Inserts "s_waitcnt vmcnt(0)" instruction \p Before or after \p MI.
169
169
// / Always returns true.
170
170
bool insertWaitcntVmcnt0 (MachineBasicBlock::iterator &MI,
@@ -188,8 +188,8 @@ class SIMemoryLegalizer final : public MachineFunctionPass {
188
188
MachineBasicBlock::iterator &MI);
189
189
// / \brief Expands atomic cmpxchg or rmw operation \p MI. Returns true if
190
190
// / instructions are added/deleted or \p MI is modified, false otherwise.
191
- bool expandAtomicCmpxchg (const SIMemOpInfo &MOI,
192
- MachineBasicBlock::iterator &MI);
191
+ bool expandAtomicCmpxchgOrRmw (const SIMemOpInfo &MOI,
192
+ MachineBasicBlock::iterator &MI);
193
193
194
194
public:
195
195
static char ID;
@@ -297,7 +297,7 @@ Optional<SIMemOpInfo> SIMemOpInfo::getAtomicFenceInfo(
297
297
}
298
298
299
299
/* static */
300
- Optional<SIMemOpInfo> SIMemOpInfo::getAtomicCmpxchgInfo (
300
+ Optional<SIMemOpInfo> SIMemOpInfo::getAtomicCmpxchgOrRmwInfo (
301
301
const MachineBasicBlock::iterator &MI) {
302
302
assert (MI->getDesc ().TSFlags & SIInstrFlags::maybeAtomic);
303
303
@@ -322,15 +322,15 @@ void SIMemOpInfo::reportUnknownSyncScope(
322
322
CTX->diagnose (Diag);
323
323
}
324
324
325
- bool SIMemoryLegalizer::insertBufferWbinvl1Vol (MachineBasicBlock::iterator &MI,
326
- bool Before) const {
325
+ bool SIMemoryLegalizer::insertVmemSIMDCacheInvalidate (
326
+ MachineBasicBlock::iterator &MI, bool Before) const {
327
327
MachineBasicBlock &MBB = *MI->getParent ();
328
328
DebugLoc DL = MI->getDebugLoc ();
329
329
330
330
if (!Before)
331
331
++MI;
332
332
333
- BuildMI (MBB, MI, DL, TII->get (Wbinvl1Opcode ));
333
+ BuildMI (MBB, MI, DL, TII->get (VmemSIMDCacheInvalidateOpc ));
334
334
335
335
if (!Before)
336
336
--MI;
@@ -385,7 +385,7 @@ bool SIMemoryLegalizer::expandLoad(const SIMemOpInfo &MOI,
385
385
if (MOI.getOrdering () == AtomicOrdering::Acquire ||
386
386
MOI.getOrdering () == AtomicOrdering::SequentiallyConsistent) {
387
387
Changed |= insertWaitcntVmcnt0 (MI, false );
388
- Changed |= insertBufferWbinvl1Vol (MI, false );
388
+ Changed |= insertVmemSIMDCacheInvalidate (MI, false );
389
389
}
390
390
391
391
return Changed;
@@ -463,7 +463,7 @@ bool SIMemoryLegalizer::expandAtomicFence(const SIMemOpInfo &MOI,
463
463
if (MOI.getOrdering () == AtomicOrdering::Acquire ||
464
464
MOI.getOrdering () == AtomicOrdering::AcquireRelease ||
465
465
MOI.getOrdering () == AtomicOrdering::SequentiallyConsistent)
466
- Changed |= insertBufferWbinvl1Vol (MI);
466
+ Changed |= insertVmemSIMDCacheInvalidate (MI);
467
467
468
468
AtomicPseudoMIs.push_back (MI);
469
469
return Changed;
@@ -482,8 +482,8 @@ bool SIMemoryLegalizer::expandAtomicFence(const SIMemOpInfo &MOI,
482
482
return Changed;
483
483
}
484
484
485
- bool SIMemoryLegalizer::expandAtomicCmpxchg (const SIMemOpInfo &MOI,
486
- MachineBasicBlock::iterator &MI) {
485
+ bool SIMemoryLegalizer::expandAtomicCmpxchgOrRmw (const SIMemOpInfo &MOI,
486
+ MachineBasicBlock::iterator &MI) {
487
487
assert (MI->mayLoad () && MI->mayStore ());
488
488
489
489
bool Changed = false ;
@@ -503,7 +503,7 @@ bool SIMemoryLegalizer::expandAtomicCmpxchg(const SIMemOpInfo &MOI,
503
503
MOI.getFailureOrdering () == AtomicOrdering::Acquire ||
504
504
MOI.getFailureOrdering () == AtomicOrdering::SequentiallyConsistent) {
505
505
Changed |= insertWaitcntVmcnt0 (MI, false );
506
- Changed |= insertBufferWbinvl1Vol (MI, false );
506
+ Changed |= insertVmemSIMDCacheInvalidate (MI, false );
507
507
}
508
508
509
509
return Changed;
@@ -532,8 +532,9 @@ bool SIMemoryLegalizer::runOnMachineFunction(MachineFunction &MF) {
532
532
533
533
Vmcnt0Immediate =
534
534
AMDGPU::encodeWaitcnt (IV, 0 , getExpcntBitMask (IV), getLgkmcntBitMask (IV));
535
- Wbinvl1Opcode = ST.getGeneration () <= AMDGPUSubtarget::SOUTHERN_ISLANDS ?
536
- AMDGPU::BUFFER_WBINVL1 : AMDGPU::BUFFER_WBINVL1_VOL;
535
+ VmemSIMDCacheInvalidateOpc =
536
+ ST.getGeneration () <= AMDGPUSubtarget::SOUTHERN_ISLANDS ?
537
+ AMDGPU::BUFFER_WBINVL1 : AMDGPU::BUFFER_WBINVL1_VOL;
537
538
538
539
for (auto &MBB : MF) {
539
540
for (auto MI = MBB.begin (); MI != MBB.end (); ++MI) {
@@ -546,8 +547,8 @@ bool SIMemoryLegalizer::runOnMachineFunction(MachineFunction &MF) {
546
547
Changed |= expandStore (MOI.getValue (), MI);
547
548
else if (const auto &MOI = SIMemOpInfo::getAtomicFenceInfo (MI))
548
549
Changed |= expandAtomicFence (MOI.getValue (), MI);
549
- else if (const auto &MOI = SIMemOpInfo::getAtomicCmpxchgInfo (MI))
550
- Changed |= expandAtomicCmpxchg (MOI.getValue (), MI);
550
+ else if (const auto &MOI = SIMemOpInfo::getAtomicCmpxchgOrRmwInfo (MI))
551
+ Changed |= expandAtomicCmpxchgOrRmw (MOI.getValue (), MI);
551
552
}
552
553
}
553
554
0 commit comments