| /freebsd/contrib/llvm-project/clang/lib/CodeGen/Targets/ |
| H A D | AMDGPU.cpp | 530 auto *RMW = dyn_cast<llvm::AtomicRMWInst>(&AtomicInst); in setTargetAtomicMetadata() local 538 if (((RMW && RMW->getPointerAddressSpace() == llvm::AMDGPUAS::FLAT_ADDRESS) || in setTargetAtomicMetadata() 549 if (!RMW) in setTargetAtomicMetadata() 555 RMW->setMetadata("amdgpu.no.fine.grained.memory", Empty); in setTargetAtomicMetadata() 557 RMW->setMetadata("amdgpu.no.remote.memory", Empty); in setTargetAtomicMetadata() 559 RMW->getOperation() == llvm::AtomicRMWInst::FAdd && in setTargetAtomicMetadata() 560 RMW->getType()->isFloatTy()) in setTargetAtomicMetadata() 561 RMW->setMetadata("amdgpu.ignore.denormal.mode", Empty); in setTargetAtomicMetadata()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/ |
| H A D | AMDGPUSwLowerLDS.cpp | 649 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(&Inst)) { in getLDSMemoryInstructions() local 650 if (RMW->getPointerAddressSpace() == AMDGPUAS::LOCAL_ADDRESS) in getLDSMemoryInstructions() 708 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(Inst)) { in translateLDSMemoryOperationsToGlobalMemory() local 709 Value *RMWPtrOperand = RMW->getPointerOperand(); in translateLDSMemoryOperationsToGlobalMemory() 710 Value *RMWValOperand = RMW->getValOperand(); in translateLDSMemoryOperationsToGlobalMemory() 714 RMW->getOperation(), Replacement, RMWValOperand, RMW->getAlign(), in translateLDSMemoryOperationsToGlobalMemory() 715 RMW->getOrdering(), RMW->getSyncScopeID()); in translateLDSMemoryOperationsToGlobalMemory() 716 NewRMW->setVolatile(RMW->isVolatile()); in translateLDSMemoryOperationsToGlobalMemory() 718 RMW->replaceAllUsesWith(NewRMW); in translateLDSMemoryOperationsToGlobalMemory() 719 RMW->eraseFromParent(); in translateLDSMemoryOperationsToGlobalMemory()
|
| H A D | AMDGPUAsanInstrumentation.cpp | 230 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) { in getInterestingMemoryOperands() local 231 Interesting.emplace_back(I, RMW->getPointerOperandIndex(), true, in getInterestingMemoryOperands() 232 RMW->getValOperand()->getType(), std::nullopt); in getInterestingMemoryOperands()
|
| H A D | R600ISelLowering.h | 119 shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const override;
|
| H A D | SIISelLowering.cpp | 17142 static bool atomicIgnoresDenormalModeOrFPModeIsFTZ(const AtomicRMWInst *RMW) { in atomicIgnoresDenormalModeOrFPModeIsFTZ() argument 17143 if (RMW->hasMetadata("amdgpu.ignore.denormal.mode")) in atomicIgnoresDenormalModeOrFPModeIsFTZ() 17146 const fltSemantics &Flt = RMW->getType()->getScalarType()->getFltSemantics(); in atomicIgnoresDenormalModeOrFPModeIsFTZ() 17147 auto DenormMode = RMW->getFunction()->getDenormalMode(Flt); in atomicIgnoresDenormalModeOrFPModeIsFTZ() 17152 return RMW->getFunction() in atomicIgnoresDenormalModeOrFPModeIsFTZ() 17157 static OptimizationRemark emitAtomicRMWLegalRemark(const AtomicRMWInst *RMW) { in emitAtomicRMWLegalRemark() argument 17158 LLVMContext &Ctx = RMW->getContext(); in emitAtomicRMWLegalRemark() 17160 Ctx.getSyncScopeName(RMW->getSyncScopeID()).value_or("system"); in emitAtomicRMWLegalRemark() 17162 return OptimizationRemark(DEBUG_TYPE, "Passed", RMW) in emitAtomicRMWLegalRemark() 17164 << RMW->getOperationName(RMW->getOperation()) in emitAtomicRMWLegalRemark() [all …]
|
| H A D | R600ISelLowering.cpp | 2181 R600TargetLowering::shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const { in shouldExpandAtomicRMWInIR() 2182 switch (RMW->getOperation()) { in shouldExpandAtomicRMWInIR() 2195 const DataLayout &DL = RMW->getFunction()->getDataLayout(); in shouldExpandAtomicRMWInIR() 2196 unsigned ValSize = DL.getTypeSizeInBits(RMW->getType()); in shouldExpandAtomicRMWInIR() 2202 if (auto *IntTy = dyn_cast<IntegerType>(RMW->getType())) { in shouldExpandAtomicRMWInIR()
|
| H A D | AMDGPUAttributor.cpp | 1430 else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) in runImpl() local 1431 Ptr = RMW->getPointerOperand(); in runImpl()
|
| H A D | AMDGPUPromoteAlloca.cpp | 1280 if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(UseInst)) { in collectUsesWithPtrTypes() local 1281 if (RMW->isVolatile()) in collectUsesWithPtrTypes()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/WebAssembly/ |
| H A D | WebAssemblyInstrAtomics.td | 367 // Truncating & zero-extending binary RMW patterns. 379 // Truncating & sign-extending binary RMW patterns. 382 // 64-bit) and select a zext RMW; the next instruction will be sext_inreg which 391 // 32->64 sext RMW gets selected as i32.atomic.rmw.***, i64.extend_i32_s 491 // Truncating & zero-extending ternary RMW patterns. 510 // Truncating & sign-extending ternary RMW patterns. 512 // zext RMW; the next instruction will be sext_inreg which is selected by 525 // 32->64 sext RMW gets selected as i32.atomic.rmw.***, i64.extend_i32_s
|
| /freebsd/contrib/llvm-project/llvm/lib/Analysis/ |
| H A D | AliasAnalysis.cpp | 538 ModRefInfo AAResults::getModRefInfo(const AtomicRMWInst *RMW, in getModRefInfo() argument 542 if (isStrongerThanMonotonic(RMW->getOrdering())) in getModRefInfo() 546 AliasResult AR = alias(MemoryLocation::get(RMW), Loc, AAQI, RMW); in getModRefInfo()
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/ |
| H A D | MemProfInstrumentation.cpp | 309 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) { in isInterestingMemoryAccess() local 313 Access.AccessTy = RMW->getValOperand()->getType(); in isInterestingMemoryAccess() 314 Access.Addr = RMW->getPointerOperand(); in isInterestingMemoryAccess()
|
| H A D | HWAddressSanitizer.cpp | 877 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) { in getInterestingMemoryOperands() local 878 if (!ClInstrumentAtomics || ignoreAccess(ORE, I, RMW->getPointerOperand())) in getInterestingMemoryOperands() 880 Interesting.emplace_back(I, RMW->getPointerOperandIndex(), true, in getInterestingMemoryOperands() 881 RMW->getValOperand()->getType(), std::nullopt); in getInterestingMemoryOperands() 905 if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) in getPointerOperandIndex() local 906 return RMW->getPointerOperandIndex(); in getPointerOperandIndex()
|
| H A D | AddressSanitizer.cpp | 1487 } else if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) { in getInterestingMemoryOperands() local 1488 if (!ClInstrumentAtomics || ignoreAccess(I, RMW->getPointerOperand())) in getInterestingMemoryOperands() 1490 Interesting.emplace_back(I, RMW->getPointerOperandIndex(), true, in getInterestingMemoryOperands() 1491 RMW->getValOperand()->getType(), std::nullopt); in getInterestingMemoryOperands()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/BPF/ |
| H A D | BPFCheckAndAdjustIR.cpp | 505 else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) in insertASpaceCasts() local 506 PtrOpNum = RMW->getPointerOperandIndex(); in insertASpaceCasts()
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ |
| H A D | InferAddressSpaces.cpp | 564 else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) in collectFlatAddressExpressions() local 565 PushPtrOperand(RMW->getPointerOperand()); in collectFlatAddressExpressions() 1123 if (auto *RMW = dyn_cast<AtomicRMWInst>(Inst)) in replaceIfSimplePointerUse() local 1124 return replaceSimplePointerUse(TTI, RMW, AddrSpace, OldV, NewV); in replaceIfSimplePointerUse()
|
| /freebsd/contrib/llvm-project/clang/lib/CodeGen/TargetBuiltins/ |
| H A D | AMDGPU.cpp | 1131 llvm::AtomicRMWInst *RMW = in EmitAMDGPUBuiltinExpr() local 1134 RMW->setVolatile(true); in EmitAMDGPUBuiltinExpr() 1141 RMW->setMetadata("amdgpu.no.fine.grained.memory", EmptyMD); in EmitAMDGPUBuiltinExpr() 1146 RMW->setMetadata("amdgpu.ignore.denormal.mode", EmptyMD); in EmitAMDGPUBuiltinExpr() 1149 return Builder.CreateBitCast(RMW, OrigTy); in EmitAMDGPUBuiltinExpr()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/M68k/ |
| H A D | M68kISelLowering.h | 105 shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const override;
|
| /freebsd/contrib/llvm-project/llvm/lib/IR/ |
| H A D | AutoUpgrade.cpp | 4413 AtomicRMWInst *RMW = in upgradeAMDGCNIntrinsicCall() local 4419 RMW->setMetadata("amdgpu.no.fine.grained.memory", EmptyMD); in upgradeAMDGCNIntrinsicCall() 4421 RMW->setMetadata("amdgpu.ignore.denormal.mode", EmptyMD); in upgradeAMDGCNIntrinsicCall() 4429 RMW->setMetadata(LLVMContext::MD_noalias_addrspace, RangeNotPrivate); in upgradeAMDGCNIntrinsicCall() 4433 RMW->setVolatile(true); in upgradeAMDGCNIntrinsicCall() 4435 return Builder.CreateBitCast(RMW, RetTy); in upgradeAMDGCNIntrinsicCall() 5732 void visitAtomicRMWInst(AtomicRMWInst &RMW) { in visitAtomicRMWInst() 5733 if (!RMW.isFloatingPointOperation()) in visitAtomicRMWInst() 5736 MDNode *Empty = MDNode::get(RMW.getContext(), {}); in visitAtomicRMWInst() 5737 RMW.setMetadata("amdgpu.no.fine.grained.host.memory", Empty); in visitAtomicRMWInst() [all …]
|
| /freebsd/contrib/llvm-project/clang/lib/CodeGen/ |
| H A D | CGAtomic.cpp | 2086 llvm::AtomicRMWInst *RMW = in emitAtomicRMWInst() local 2088 getTargetHooks().setTargetAtomicMetadata(*this, *RMW, AE); in emitAtomicRMWInst() 2089 return RMW; in emitAtomicRMWInst()
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/ |
| H A D | AliasAnalysis.h | 614 LLVM_ABI ModRefInfo getModRefInfo(const AtomicRMWInst *RMW,
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/SystemZ/ |
| H A D | SystemZISelLowering.h | 503 shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const override;
|
| H A D | SystemZISelLowering.cpp | 1248 SystemZTargetLowering::shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const { in shouldExpandAtomicRMWInIR() 1250 if (RMW->getType()->isIntegerTy(8) || RMW->getType()->isIntegerTy(16)) in shouldExpandAtomicRMWInIR() 1255 (RMW->getType()->isIntegerTy(32) || RMW->getType()->isIntegerTy(64)) && in shouldExpandAtomicRMWInIR() 1256 (RMW->getOperation() == AtomicRMWInst::BinOp::Add || in shouldExpandAtomicRMWInIR() 1257 RMW->getOperation() == AtomicRMWInst::BinOp::Sub || in shouldExpandAtomicRMWInIR() 1258 RMW->getOperation() == AtomicRMWInst::BinOp::And || in shouldExpandAtomicRMWInIR() 1259 RMW->getOperation() == AtomicRMWInst::BinOp::Or || in shouldExpandAtomicRMWInIR() 1260 RMW->getOperation() == AtomicRMWInst::BinOp::Xor)) in shouldExpandAtomicRMWInIR()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/X86/ |
| H A D | X86ScheduleBtVer2.td | 183 // A folded store needs a cycle on the SAGU for the store data, most RMW 184 // instructions don't need an extra uop. ALU RMW operations don't seem to
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ |
| H A D | TargetLoweringBase.cpp | 2374 if (const AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(&AI)) { in getAtomicMemOperandFlags() local 2375 if (RMW->isVolatile()) in getAtomicMemOperandFlags()
|
| H A D | CodeGenPrepare.cpp | 5586 if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(UserI)) { in FindAllMemoryUses() local 5589 MemoryUses.push_back({&U, RMW->getValOperand()->getType()}); in FindAllMemoryUses() 8780 if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) { in optimizeInst() local 8781 unsigned AS = RMW->getPointerAddressSpace(); in optimizeInst() 8782 return optimizeMemoryInst(I, RMW->getPointerOperand(), RMW->getType(), AS); in optimizeInst()
|