[clang] [NVPTX] Add support for maxclusterrank in launch_bounds (PR #66496)

via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 21 03:42:23 PDT 2023


================
@@ -537,59 +537,52 @@ void NVPTXAsmPrinter::emitKernelFunctionDirectives(const Function &F,
                                                    raw_ostream &O) const {
   // If the NVVM IR has some of reqntid* specified, then output
   // the reqntid directive, and set the unspecified ones to 1.
-  // If none of reqntid* is specified, don't output reqntid directive.
-  unsigned reqntidx, reqntidy, reqntidz;
-  bool specified = false;
-  if (!getReqNTIDx(F, reqntidx))
-    reqntidx = 1;
-  else
-    specified = true;
-  if (!getReqNTIDy(F, reqntidy))
-    reqntidy = 1;
-  else
-    specified = true;
-  if (!getReqNTIDz(F, reqntidz))
-    reqntidz = 1;
-  else
-    specified = true;
-
-  if (specified)
-    O << ".reqntid " << reqntidx << ", " << reqntidy << ", " << reqntidz
+  // If none of Reqntid* is specified, don't output reqntid directive.
+  unsigned Reqntidx, Reqntidy, Reqntidz;
+  Reqntidx = Reqntidy = Reqntidz = 1;
+  bool ReqSpecified = false;
+  if (getReqNTIDx(F, Reqntidx))
+    ReqSpecified |= true;
+  if (getReqNTIDy(F, Reqntidy))
+    ReqSpecified |= true;
+  if (getReqNTIDz(F, Reqntidz))
+    ReqSpecified |= true;
+
+  if (ReqSpecified)
+    O << ".reqntid " << Reqntidx << ", " << Reqntidy << ", " << Reqntidz
       << "\n";
 
   // If the NVVM IR has some of maxntid* specified, then output
   // the maxntid directive, and set the unspecified ones to 1.
   // If none of maxntid* is specified, don't output maxntid directive.
-  unsigned maxntidx, maxntidy, maxntidz;
-  specified = false;
-  if (!getMaxNTIDx(F, maxntidx))
-    maxntidx = 1;
-  else
-    specified = true;
-  if (!getMaxNTIDy(F, maxntidy))
-    maxntidy = 1;
-  else
-    specified = true;
-  if (!getMaxNTIDz(F, maxntidz))
-    maxntidz = 1;
-  else
-    specified = true;
-
-  if (specified)
-    O << ".maxntid " << maxntidx << ", " << maxntidy << ", " << maxntidz
+  unsigned Maxntidx, Maxntidy, Maxntidz;
+  Maxntidx = Maxntidy = Maxntidz = 1;
+  bool MaxSpecified = false;
+  if (getMaxNTIDx(F, Maxntidx))
+    MaxSpecified |= true;
+  if (!getMaxNTIDy(F, Maxntidy))
+    MaxSpecified |= true;
+  if (!getMaxNTIDz(F, Maxntidz))
+    MaxSpecified |= true;
----------------
ldrumm wrote:

Is there a missing negation here?

Also, as above: (module negation)
```suggestion
    MaxSpecified |= getMaxNTIDx(F, Maxntidx);
    MaxSpecified |= !getMaxNTIDy(F, Maxntidy);
    MaxSpecified |= !getMaxNTIDz(F, Maxntidz);
```

https://github.com/llvm/llvm-project/pull/66496


More information about the cfe-commits mailing list