The device runtime contains several calls to kmpc_get_hardware_num_threads_in_block
and kmpc_get_hardware_num_blocks. If the thread_limit and the num_teams are constant,
these calls can be folded to the constant value.
In commit D106033 we have the optimization phase. This commit adds the attributes to
the outlined function for the grid size. the two attributes are omp_target_num_teams and
omp_target_thread_limit. These values are added as long as they are constant.
Two functions are created getNumThreadsExprForTargetDirective and
getNumTeamsExprForTargetDirective. The original functions emitNumTeamsForTargetDirective
and emitNumThreadsForTargetDirective identify the expresion and emit the code.
However, for the Device version of the outlined function, we cannot emit anything.
Therefore, this is a first attempt to separate emision of code from deduction of the