diff --git a/openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.cpp b/openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.cpp --- a/openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.cpp +++ b/openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.cpp @@ -279,8 +279,13 @@ uint32_t ThreadLimitClause[3]) const { assert(ThreadLimitClause[1] == 0 && ThreadLimitClause[2] == 0 && "Multi dimensional launch not supported yet."); - if (ThreadLimitClause[0] > 0 && isGenericMode()) - ThreadLimitClause[0] += GenericDevice.getWarpSize(); + + if (ThreadLimitClause[0] > 0 && isGenericMode()) { + if (ThreadLimitClause[0] == (uint32_t)-1) + ThreadLimitClause[0] = PreferredNumThreads; + else + ThreadLimitClause[0] += GenericDevice.getWarpSize(); + } return std::min(MaxNumThreads, (ThreadLimitClause[0] > 0) ? ThreadLimitClause[0]