@@ -88,34 +88,49 @@ void fir::setTuneCPU(mlir::ModuleOp mod, llvm::StringRef cpu) {
8888 mod->setAttr (tuneCpuName, mlir::StringAttr::get (ctx, cpu));
8989}
9090
91- static constexpr const char *ignoreDenormalModeName =
92- " fir.ignore.denormal.mode" ;
93- void fir::setIgnoreDenormalMode (mlir::ModuleOp mod) {
94- auto *ctx = mod.getContext ();
95- mod->setAttr (ignoreDenormalModeName, mlir::UnitAttr::get (ctx));
91+ static constexpr const char *atomicIgnoreDenormalModeName =
92+ " fir.atomic_ignore_denormal_mode" ;
93+ void fir::setAtomicIgnoreDenormalMode (mlir::ModuleOp mod, bool value) {
94+ if (value) {
95+ auto *ctx = mod.getContext ();
96+ mod->setAttr (atomicIgnoreDenormalModeName, mlir::UnitAttr::get (ctx));
97+ } else {
98+ if (mod->hasAttr (atomicIgnoreDenormalModeName))
99+ mod->removeAttr (atomicIgnoreDenormalModeName);
100+ }
96101}
97102
98- bool fir::getIgnoreDenormalMode (mlir::ModuleOp mod) {
99- return mod->hasAttrOfType <mlir::UnitAttr>(ignoreDenormalModeName );
103+ bool fir::getAtomicIgnoreDenormalMode (mlir::ModuleOp mod) {
104+ return mod->hasAttrOfType <mlir::UnitAttr>(atomicIgnoreDenormalModeName );
100105}
101106
102- static constexpr const char *fineGrainedMemoryName = " fir.fine.grained.memory" ;
103- void fir::setFineGrainedMemory (mlir::ModuleOp mod) {
104- auto *ctx = mod.getContext ();
105- mod->setAttr (fineGrainedMemoryName, mlir::UnitAttr::get (ctx));
107+ static constexpr const char *atomicFineGrainedMemoryName = " fir.atomic_fine_grained_memory" ;
108+ void fir::setAtomicFineGrainedMemory (mlir::ModuleOp mod, bool value) {
109+ if (value) {
110+ auto *ctx = mod.getContext ();
111+ mod->setAttr (atomicFineGrainedMemoryName, mlir::UnitAttr::get (ctx));
112+ } else {
113+ if (mod->hasAttr (atomicFineGrainedMemoryName))
114+ mod->removeAttr (atomicFineGrainedMemoryName);
115+ }
106116}
107117
108- bool fir::getFineGrainedMemory (mlir::ModuleOp mod) {
109- return mod->hasAttrOfType <mlir::UnitAttr>(fineGrainedMemoryName );
118+ bool fir::getAtomicFineGrainedMemory (mlir::ModuleOp mod) {
119+ return mod->hasAttrOfType <mlir::UnitAttr>(atomicFineGrainedMemoryName );
110120}
111- static constexpr const char *remoteMemoryName = " fir.remote.memory" ;
112- void fir::setRemoteMemory (mlir::ModuleOp mod) {
113- auto *ctx = mod.getContext ();
114- mod->setAttr (remoteMemoryName, mlir::UnitAttr::get (ctx));
121+ static constexpr const char *atomicRemoteMemoryName = " fir.atomic_remote_memory" ;
122+ void fir::setAtomicRemoteMemory (mlir::ModuleOp mod, bool value) {
123+ if (value) {
124+ auto *ctx = mod.getContext ();
125+ mod->setAttr (atomicRemoteMemoryName, mlir::UnitAttr::get (ctx));
126+ } else {
127+ if (mod->hasAttr (atomicRemoteMemoryName))
128+ mod->removeAttr (atomicRemoteMemoryName);
129+ }
115130}
116131
117- bool fir::getRemoteMemory (mlir::ModuleOp mod) {
118- return mod->hasAttrOfType <mlir::UnitAttr>(remoteMemoryName );
132+ bool fir::getAtomicRemoteMemory (mlir::ModuleOp mod) {
133+ return mod->hasAttrOfType <mlir::UnitAttr>(atomicRemoteMemoryName );
119134}
120135
121136llvm::StringRef fir::getTuneCPU (mlir::ModuleOp mod) {
0 commit comments