forked from OSchip/llvm-project
[OpenMP] Creating the `omp_target_num_teams` and `omp_target_thread_limit` attributes to outlined functions
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 values. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D106298
This commit is contained in:
parent
c49df15c27
commit
0276db1416
clang
lib/CodeGen
test/OpenMP
declare_target_codegen_globalization.cppnvptx_lambda_capturing.cppnvptx_multi_target_parallel_codegen.cppnvptx_target_codegen.cppnvptx_target_parallel_codegen.cppnvptx_target_parallel_num_threads_codegen.cppnvptx_target_teams_distribute_parallel_for_codegen.cppnvptx_target_teams_distribute_parallel_for_simd_codegen.cpptarget_map_codegen_03.cpptarget_num_teams_num_threads_attributes.cpptarget_parallel_codegen.cpptarget_parallel_debug_codegen.cpptarget_parallel_for_codegen.cpptarget_parallel_for_debug_codegen.cpptarget_parallel_for_simd_codegen.cpptarget_parallel_if_codegen.cpptarget_parallel_num_threads_codegen.cpptarget_teams_distribute_simd_codegen.cpptarget_teams_distribute_simd_collapse_codegen.cpptarget_teams_distribute_simd_dist_schedule_codegen.cpptarget_teams_distribute_simd_firstprivate_codegen.cpptarget_teams_distribute_simd_lastprivate_codegen.cpptarget_teams_distribute_simd_private_codegen.cpptarget_teams_distribute_simd_reduction_codegen.cpptarget_teams_num_teams_codegen.cpptarget_teams_thread_limit_codegen.cppteams_codegen.cpp
|
@ -6551,6 +6551,20 @@ void CGOpenMPRuntime::emitTargetOutlinedFunctionHelper(
|
|||
OffloadEntriesInfoManager.registerTargetRegionEntryInfo(
|
||||
DeviceID, FileID, ParentName, Line, OutlinedFn, OutlinedFnID,
|
||||
OffloadEntriesInfoManagerTy::OMPTargetRegionEntryTargetRegion);
|
||||
|
||||
// Add NumTeams and ThreadLimit attributes to the outlined GPU function
|
||||
int32_t DefaultValTeams = -1;
|
||||
getNumTeamsExprForTargetDirective(CGF, D, DefaultValTeams);
|
||||
if (DefaultValTeams > 0) {
|
||||
OutlinedFn->addFnAttr("omp_target_num_teams",
|
||||
std::to_string(DefaultValTeams));
|
||||
}
|
||||
int32_t DefaultValThreads = -1;
|
||||
getNumThreadsExprForTargetDirective(CGF, D, DefaultValThreads);
|
||||
if (DefaultValThreads > 0) {
|
||||
OutlinedFn->addFnAttr("omp_target_thread_limit",
|
||||
std::to_string(DefaultValThreads));
|
||||
}
|
||||
}
|
||||
|
||||
/// Checks if the expression is constant or does not have non-trivial function
|
||||
|
@ -6605,24 +6619,13 @@ const Stmt *CGOpenMPRuntime::getSingleCompoundChild(ASTContext &Ctx,
|
|||
return Child;
|
||||
}
|
||||
|
||||
/// Emit the number of teams for a target directive. Inspect the num_teams
|
||||
/// clause associated with a teams construct combined or closely nested
|
||||
/// with the target directive.
|
||||
///
|
||||
/// Emit a team of size one for directives such as 'target parallel' that
|
||||
/// have no associated teams construct.
|
||||
///
|
||||
/// Otherwise, return nullptr.
|
||||
static llvm::Value *
|
||||
emitNumTeamsForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D) {
|
||||
assert(!CGF.getLangOpts().OpenMPIsDevice &&
|
||||
"Clauses associated with the teams directive expected to be emitted "
|
||||
"only for the host!");
|
||||
const Expr *CGOpenMPRuntime::getNumTeamsExprForTargetDirective(
|
||||
CodeGenFunction &CGF, const OMPExecutableDirective &D,
|
||||
int32_t &DefaultVal) {
|
||||
|
||||
OpenMPDirectiveKind DirectiveKind = D.getDirectiveKind();
|
||||
assert(isOpenMPTargetExecutionDirective(DirectiveKind) &&
|
||||
"Expected target-based executable directive.");
|
||||
CGBuilderTy &Bld = CGF.Builder;
|
||||
switch (DirectiveKind) {
|
||||
case OMPD_target: {
|
||||
const auto *CS = D.getInnermostCapturedStmt();
|
||||
|
@ -6634,23 +6637,27 @@ emitNumTeamsForTargetDirective(CodeGenFunction &CGF,
|
|||
dyn_cast_or_null<OMPExecutableDirective>(ChildStmt)) {
|
||||
if (isOpenMPTeamsDirective(NestedDir->getDirectiveKind())) {
|
||||
if (NestedDir->hasClausesOfKind<OMPNumTeamsClause>()) {
|
||||
CGOpenMPInnerExprInfo CGInfo(CGF, *CS);
|
||||
CodeGenFunction::CGCapturedStmtRAII CapInfoRAII(CGF, &CGInfo);
|
||||
const Expr *NumTeams =
|
||||
NestedDir->getSingleClause<OMPNumTeamsClause>()->getNumTeams();
|
||||
llvm::Value *NumTeamsVal =
|
||||
CGF.EmitScalarExpr(NumTeams,
|
||||
/*IgnoreResultAssign*/ true);
|
||||
return Bld.CreateIntCast(NumTeamsVal, CGF.Int32Ty,
|
||||
/*isSigned=*/true);
|
||||
if (NumTeams->isIntegerConstantExpr(CGF.getContext()))
|
||||
if (auto Constant =
|
||||
NumTeams->getIntegerConstantExpr(CGF.getContext()))
|
||||
DefaultVal = Constant->getExtValue();
|
||||
return NumTeams;
|
||||
}
|
||||
return Bld.getInt32(0);
|
||||
DefaultVal = 0;
|
||||
return nullptr;
|
||||
}
|
||||
if (isOpenMPParallelDirective(NestedDir->getDirectiveKind()) ||
|
||||
isOpenMPSimdDirective(NestedDir->getDirectiveKind()))
|
||||
return Bld.getInt32(1);
|
||||
return Bld.getInt32(0);
|
||||
isOpenMPSimdDirective(NestedDir->getDirectiveKind())) {
|
||||
DefaultVal = 1;
|
||||
return nullptr;
|
||||
}
|
||||
DefaultVal = 1;
|
||||
return nullptr;
|
||||
}
|
||||
// A value of -1 is used to check if we need to emit no teams region
|
||||
DefaultVal = -1;
|
||||
return nullptr;
|
||||
}
|
||||
case OMPD_target_teams:
|
||||
|
@ -6659,22 +6666,22 @@ emitNumTeamsForTargetDirective(CodeGenFunction &CGF,
|
|||
case OMPD_target_teams_distribute_parallel_for:
|
||||
case OMPD_target_teams_distribute_parallel_for_simd: {
|
||||
if (D.hasClausesOfKind<OMPNumTeamsClause>()) {
|
||||
CodeGenFunction::RunCleanupsScope NumTeamsScope(CGF);
|
||||
const Expr *NumTeams =
|
||||
D.getSingleClause<OMPNumTeamsClause>()->getNumTeams();
|
||||
llvm::Value *NumTeamsVal =
|
||||
CGF.EmitScalarExpr(NumTeams,
|
||||
/*IgnoreResultAssign*/ true);
|
||||
return Bld.CreateIntCast(NumTeamsVal, CGF.Int32Ty,
|
||||
/*isSigned=*/true);
|
||||
if (NumTeams->isIntegerConstantExpr(CGF.getContext()))
|
||||
if (auto Constant = NumTeams->getIntegerConstantExpr(CGF.getContext()))
|
||||
DefaultVal = Constant->getExtValue();
|
||||
return NumTeams;
|
||||
}
|
||||
return Bld.getInt32(0);
|
||||
DefaultVal = 0;
|
||||
return nullptr;
|
||||
}
|
||||
case OMPD_target_parallel:
|
||||
case OMPD_target_parallel_for:
|
||||
case OMPD_target_parallel_for_simd:
|
||||
case OMPD_target_simd:
|
||||
return Bld.getInt32(1);
|
||||
DefaultVal = 1;
|
||||
return nullptr;
|
||||
case OMPD_parallel:
|
||||
case OMPD_for:
|
||||
case OMPD_parallel_for:
|
||||
|
@ -6740,6 +6747,48 @@ emitNumTeamsForTargetDirective(CodeGenFunction &CGF,
|
|||
llvm_unreachable("Unexpected directive kind.");
|
||||
}
|
||||
|
||||
llvm::Value *CGOpenMPRuntime::emitNumTeamsForTargetDirective(
|
||||
CodeGenFunction &CGF, const OMPExecutableDirective &D) {
|
||||
assert(!CGF.getLangOpts().OpenMPIsDevice &&
|
||||
"Clauses associated with the teams directive expected to be emitted "
|
||||
"only for the host!");
|
||||
CGBuilderTy &Bld = CGF.Builder;
|
||||
int32_t DefaultNT = -1;
|
||||
const Expr *NumTeams = getNumTeamsExprForTargetDirective(CGF, D, DefaultNT);
|
||||
if (NumTeams != nullptr) {
|
||||
OpenMPDirectiveKind DirectiveKind = D.getDirectiveKind();
|
||||
|
||||
switch (DirectiveKind) {
|
||||
case OMPD_target: {
|
||||
const auto *CS = D.getInnermostCapturedStmt();
|
||||
CGOpenMPInnerExprInfo CGInfo(CGF, *CS);
|
||||
CodeGenFunction::CGCapturedStmtRAII CapInfoRAII(CGF, &CGInfo);
|
||||
llvm::Value *NumTeamsVal = CGF.EmitScalarExpr(NumTeams,
|
||||
/*IgnoreResultAssign*/ true);
|
||||
return Bld.CreateIntCast(NumTeamsVal, CGF.Int32Ty,
|
||||
/*isSigned=*/true);
|
||||
}
|
||||
case OMPD_target_teams:
|
||||
case OMPD_target_teams_distribute:
|
||||
case OMPD_target_teams_distribute_simd:
|
||||
case OMPD_target_teams_distribute_parallel_for:
|
||||
case OMPD_target_teams_distribute_parallel_for_simd: {
|
||||
CodeGenFunction::RunCleanupsScope NumTeamsScope(CGF);
|
||||
llvm::Value *NumTeamsVal = CGF.EmitScalarExpr(NumTeams,
|
||||
/*IgnoreResultAssign*/ true);
|
||||
return Bld.CreateIntCast(NumTeamsVal, CGF.Int32Ty,
|
||||
/*isSigned=*/true);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (DefaultNT == -1) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return Bld.getInt32(DefaultNT);
|
||||
}
|
||||
|
||||
static llvm::Value *getNumThreads(CodeGenFunction &CGF, const CapturedStmt *CS,
|
||||
llvm::Value *DefaultThreadLimitVal) {
|
||||
const Stmt *Child = CGOpenMPRuntime::getSingleCompoundChild(
|
||||
|
@ -6832,17 +6881,130 @@ static llvm::Value *getNumThreads(CodeGenFunction &CGF, const CapturedStmt *CS,
|
|||
: CGF.Builder.getInt32(0);
|
||||
}
|
||||
|
||||
/// Emit the number of threads for a target directive. Inspect the
|
||||
/// thread_limit clause associated with a teams construct combined or closely
|
||||
/// nested with the target directive.
|
||||
///
|
||||
/// Emit the num_threads clause for directives such as 'target parallel' that
|
||||
/// have no associated teams construct.
|
||||
///
|
||||
/// Otherwise, return nullptr.
|
||||
static llvm::Value *
|
||||
emitNumThreadsForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D) {
|
||||
const Expr *CGOpenMPRuntime::getNumThreadsExprForTargetDirective(
|
||||
CodeGenFunction &CGF, const OMPExecutableDirective &D,
|
||||
int32_t &DefaultVal) {
|
||||
OpenMPDirectiveKind DirectiveKind = D.getDirectiveKind();
|
||||
assert(isOpenMPTargetExecutionDirective(DirectiveKind) &&
|
||||
"Expected target-based executable directive.");
|
||||
|
||||
switch (DirectiveKind) {
|
||||
case OMPD_target:
|
||||
// Teams have no clause thread_limit
|
||||
return nullptr;
|
||||
case OMPD_target_teams:
|
||||
case OMPD_target_teams_distribute:
|
||||
if (D.hasClausesOfKind<OMPThreadLimitClause>()) {
|
||||
const auto *ThreadLimitClause = D.getSingleClause<OMPThreadLimitClause>();
|
||||
const Expr *ThreadLimit = ThreadLimitClause->getThreadLimit();
|
||||
if (ThreadLimit->isIntegerConstantExpr(CGF.getContext()))
|
||||
if (auto Constant =
|
||||
ThreadLimit->getIntegerConstantExpr(CGF.getContext()))
|
||||
DefaultVal = Constant->getExtValue();
|
||||
return ThreadLimit;
|
||||
}
|
||||
return nullptr;
|
||||
case OMPD_target_parallel:
|
||||
case OMPD_target_parallel_for:
|
||||
case OMPD_target_parallel_for_simd:
|
||||
case OMPD_target_teams_distribute_parallel_for:
|
||||
case OMPD_target_teams_distribute_parallel_for_simd: {
|
||||
Expr *ThreadLimit = nullptr;
|
||||
Expr *NumThreads = nullptr;
|
||||
if (D.hasClausesOfKind<OMPThreadLimitClause>()) {
|
||||
const auto *ThreadLimitClause = D.getSingleClause<OMPThreadLimitClause>();
|
||||
ThreadLimit = ThreadLimitClause->getThreadLimit();
|
||||
if (ThreadLimit->isIntegerConstantExpr(CGF.getContext()))
|
||||
if (auto Constant =
|
||||
ThreadLimit->getIntegerConstantExpr(CGF.getContext()))
|
||||
DefaultVal = Constant->getExtValue();
|
||||
}
|
||||
if (D.hasClausesOfKind<OMPNumThreadsClause>()) {
|
||||
const auto *NumThreadsClause = D.getSingleClause<OMPNumThreadsClause>();
|
||||
NumThreads = NumThreadsClause->getNumThreads();
|
||||
if (NumThreads->isIntegerConstantExpr(CGF.getContext())) {
|
||||
if (auto Constant =
|
||||
NumThreads->getIntegerConstantExpr(CGF.getContext())) {
|
||||
if (Constant->getExtValue() < DefaultVal) {
|
||||
DefaultVal = Constant->getExtValue();
|
||||
ThreadLimit = NumThreads;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ThreadLimit;
|
||||
}
|
||||
case OMPD_target_teams_distribute_simd:
|
||||
case OMPD_target_simd:
|
||||
DefaultVal = 1;
|
||||
return nullptr;
|
||||
case OMPD_parallel:
|
||||
case OMPD_for:
|
||||
case OMPD_parallel_for:
|
||||
case OMPD_parallel_master:
|
||||
case OMPD_parallel_sections:
|
||||
case OMPD_for_simd:
|
||||
case OMPD_parallel_for_simd:
|
||||
case OMPD_cancel:
|
||||
case OMPD_cancellation_point:
|
||||
case OMPD_ordered:
|
||||
case OMPD_threadprivate:
|
||||
case OMPD_allocate:
|
||||
case OMPD_task:
|
||||
case OMPD_simd:
|
||||
case OMPD_tile:
|
||||
case OMPD_unroll:
|
||||
case OMPD_sections:
|
||||
case OMPD_section:
|
||||
case OMPD_single:
|
||||
case OMPD_master:
|
||||
case OMPD_critical:
|
||||
case OMPD_taskyield:
|
||||
case OMPD_barrier:
|
||||
case OMPD_taskwait:
|
||||
case OMPD_taskgroup:
|
||||
case OMPD_atomic:
|
||||
case OMPD_flush:
|
||||
case OMPD_depobj:
|
||||
case OMPD_scan:
|
||||
case OMPD_teams:
|
||||
case OMPD_target_data:
|
||||
case OMPD_target_exit_data:
|
||||
case OMPD_target_enter_data:
|
||||
case OMPD_distribute:
|
||||
case OMPD_distribute_simd:
|
||||
case OMPD_distribute_parallel_for:
|
||||
case OMPD_distribute_parallel_for_simd:
|
||||
case OMPD_teams_distribute:
|
||||
case OMPD_teams_distribute_simd:
|
||||
case OMPD_teams_distribute_parallel_for:
|
||||
case OMPD_teams_distribute_parallel_for_simd:
|
||||
case OMPD_target_update:
|
||||
case OMPD_declare_simd:
|
||||
case OMPD_declare_variant:
|
||||
case OMPD_begin_declare_variant:
|
||||
case OMPD_end_declare_variant:
|
||||
case OMPD_declare_target:
|
||||
case OMPD_end_declare_target:
|
||||
case OMPD_declare_reduction:
|
||||
case OMPD_declare_mapper:
|
||||
case OMPD_taskloop:
|
||||
case OMPD_taskloop_simd:
|
||||
case OMPD_master_taskloop:
|
||||
case OMPD_master_taskloop_simd:
|
||||
case OMPD_parallel_master_taskloop:
|
||||
case OMPD_parallel_master_taskloop_simd:
|
||||
case OMPD_requires:
|
||||
case OMPD_unknown:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
llvm_unreachable("Unsupported directive kind.");
|
||||
}
|
||||
|
||||
llvm::Value *CGOpenMPRuntime::emitNumThreadsForTargetDirective(
|
||||
CodeGenFunction &CGF, const OMPExecutableDirective &D) {
|
||||
assert(!CGF.getLangOpts().OpenMPIsDevice &&
|
||||
"Clauses associated with the teams directive expected to be emitted "
|
||||
"only for the host!");
|
||||
|
|
|
@ -340,6 +340,35 @@ protected:
|
|||
llvm::Value *emitUpdateLocation(CodeGenFunction &CGF, SourceLocation Loc,
|
||||
unsigned Flags = 0);
|
||||
|
||||
/// Emit the number of teams for a target directive. Inspect the num_teams
|
||||
/// clause associated with a teams construct combined or closely nested
|
||||
/// with the target directive.
|
||||
///
|
||||
/// Emit a team of size one for directives such as 'target parallel' that
|
||||
/// have no associated teams construct.
|
||||
///
|
||||
/// Otherwise, return nullptr.
|
||||
const Expr *getNumTeamsExprForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D,
|
||||
int32_t &DefaultVal);
|
||||
llvm::Value *emitNumTeamsForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D);
|
||||
/// Emit the number of threads for a target directive. Inspect the
|
||||
/// thread_limit clause associated with a teams construct combined or closely
|
||||
/// nested with the target directive.
|
||||
///
|
||||
/// Emit the num_threads clause for directives such as 'target parallel' that
|
||||
/// have no associated teams construct.
|
||||
///
|
||||
/// Otherwise, return nullptr.
|
||||
const Expr *
|
||||
getNumThreadsExprForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D,
|
||||
int32_t &DefaultVal);
|
||||
llvm::Value *
|
||||
emitNumThreadsForTargetDirective(CodeGenFunction &CGF,
|
||||
const OMPExecutableDirective &D);
|
||||
|
||||
/// Returns pointer to ident_t type.
|
||||
llvm::Type *getIdentTyPointerTy();
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ int maini1() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -58,15 +58,15 @@ int maini1() {
|
|||
// CHECK1-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: store i32* [[A]], i32** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load i32*, i32** [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3fooRi(i32* nonnull align 4 dereferenceable(4) [[B]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call i32 @_Z3barv() #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3fooRi(i32* nonnull align 4 dereferenceable(4) [[B]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK1-NEXT: [[CALL1:%.*]] = call i32 @_Z3barv() #[[ATTR4]]
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 [[CALL]], [[CALL1]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[TMP0]], align 4
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z3fooRi
|
||||
// CHECK1-SAME: (i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-SAME: (i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: store i32* [[A]], i32** [[A_ADDR]], align 8
|
||||
|
@ -76,11 +76,11 @@ int maini1() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z3barv
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-SAME: () #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A:%.*]] = call i8* @__kmpc_alloc_shared(i64 4)
|
||||
// CHECK1-NEXT: [[A_ON_STACK:%.*]] = bitcast i8* [[A]] to i32*
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3fooRi(i32* nonnull align 4 dereferenceable(4) [[A_ON_STACK]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3fooRi(i32* nonnull align 4 dereferenceable(4) [[A_ON_STACK]]) #[[ATTR4]]
|
||||
// CHECK1-NEXT: call void @__kmpc_free_shared(i8* [[A]], i64 4)
|
||||
// CHECK1-NEXT: ret i32 [[CALL]]
|
||||
//
|
||||
|
|
|
@ -397,7 +397,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l43
|
||||
// CHECK1-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[ARGC_ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[B_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -630,7 +630,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN1S3fooEv_l29
|
||||
// CHECK1-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK1-NEXT: [[L_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -715,7 +715,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIZN1S3fooEvEUlvE_EiRKT__l18
|
||||
// CHECK1-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[T_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK1-NEXT: [[TMP:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -805,7 +805,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN1S3fooEv_l29
|
||||
// CHECK2-SAME: (%struct.S* [[THIS:%.*]], %class.anon* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (%struct.S* [[THIS:%.*]], %class.anon* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK2-NEXT: [[L_ADDR:%.*]] = alloca %class.anon*, align 8
|
||||
|
@ -937,7 +937,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l43
|
||||
// CHECK2-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon.0* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon.0* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[ARGC_ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[B_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1072,7 +1072,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIZN1S3fooEvEUlvE_EiRKT__l18
|
||||
// CHECK2-SAME: (%class.anon* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (%class.anon* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[T_ADDR:%.*]] = alloca %class.anon*, align 8
|
||||
// CHECK2-NEXT: [[TMP:%.*]] = alloca %class.anon*, align 8
|
||||
|
@ -1193,7 +1193,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l43
|
||||
// CHECK3-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[ARGC_ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK3-NEXT: [[B_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1374,7 +1374,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN1S3fooEv_l29
|
||||
// CHECK3-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK3-NEXT: [[L_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -1436,7 +1436,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIZN1S3fooEvEUlvE_EiRKT__l18
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[T_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK3-NEXT: [[TMP:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -1557,7 +1557,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l43
|
||||
// CHECK4-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32* nonnull align 4 dereferenceable(4) [[ARGC:%.*]], i32* nonnull align 4 dereferenceable(4) [[B:%.*]], i32* nonnull align 4 dereferenceable(4) [[C:%.*]], i32* [[D:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], %class.anon* nonnull align 8 dereferenceable(40) [[L:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[ARGC_ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK4-NEXT: [[B_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1738,7 +1738,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN1S3fooEv_l29
|
||||
// CHECK4-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (%struct.S* [[THIS:%.*]], %class.anon.0* nonnull align 8 dereferenceable(8) [[L:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S*, align 8
|
||||
// CHECK4-NEXT: [[L_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
@ -1800,7 +1800,7 @@ int main(int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIZN1S3fooEvEUlvE_EiRKT__l18
|
||||
// CHECK4-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (%class.anon.0* nonnull align 8 dereferenceable(8) [[T:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[T_ADDR:%.*]] = alloca %class.anon.0*, align 8
|
||||
// CHECK4-NEXT: [[TMP:%.*]] = alloca %class.anon.0*, align 8
|
||||
|
|
|
@ -43,18 +43,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_Z3usev() #[[ATTR5:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_Z3usev() #[[ATTR6:[0-9]+]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z3usev
|
||||
// CHECK1-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3:[0-9]+]])
|
||||
|
@ -64,13 +64,13 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
|
||||
// CHECK1-SAME: () #[[ATTR0]] {
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK1-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK1-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK1: user_code.entry:
|
||||
// CHECK1-NEXT: call void @_Z3usev() #[[ATTR5]]
|
||||
// CHECK1-NEXT: call void @_Z3usev() #[[ATTR6]]
|
||||
// CHECK1-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK1-NEXT: ret void
|
||||
// CHECK1: worker.exit:
|
||||
|
@ -78,18 +78,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_Z4workv() #[[ATTR5]]
|
||||
// CHECK1-NEXT: call void @_Z4workv() #[[ATTR6]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK1-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -99,7 +99,7 @@ int main() {
|
|||
// CHECK1-NEXT: store i16 [[TMP0]], i16* [[DOTADDR]], align 2
|
||||
// CHECK1-NEXT: store i32 [[TMP1]], i32* [[DOTADDR1]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_get_shared_variables(i8*** [[GLOBAL_ARGS]])
|
||||
// CHECK1-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -121,18 +121,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
|
||||
// CHECK2-NEXT: call void @_Z3usev() #[[ATTR5:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_Z3usev() #[[ATTR6:[0-9]+]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_Z3usev
|
||||
// CHECK2-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 4
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3:[0-9]+]])
|
||||
|
@ -142,13 +142,13 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
|
||||
// CHECK2-SAME: () #[[ATTR0]] {
|
||||
// CHECK2-SAME: () #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK2-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK2-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK2: user_code.entry:
|
||||
// CHECK2-NEXT: call void @_Z3usev() #[[ATTR5]]
|
||||
// CHECK2-NEXT: call void @_Z3usev() #[[ATTR6]]
|
||||
// CHECK2-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK2-NEXT: ret void
|
||||
// CHECK2: worker.exit:
|
||||
|
@ -156,18 +156,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK2-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
|
||||
// CHECK2-NEXT: call void @_Z4workv() #[[ATTR5]]
|
||||
// CHECK2-NEXT: call void @_Z4workv() #[[ATTR6]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK2-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK2-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -177,7 +177,7 @@ int main() {
|
|||
// CHECK2-NEXT: store i16 [[TMP0]], i16* [[DOTADDR]], align 2
|
||||
// CHECK2-NEXT: store i32 [[TMP1]], i32* [[DOTADDR1]], align 4
|
||||
// CHECK2-NEXT: call void @__kmpc_get_shared_variables(i8*** [[GLOBAL_ARGS]])
|
||||
// CHECK2-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -199,18 +199,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_Z3usev() #[[ATTR5:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_Z3usev() #[[ATTR6:[0-9]+]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_Z3usev
|
||||
// CHECK3-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3:[0-9]+]])
|
||||
|
@ -220,13 +220,13 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
|
||||
// CHECK3-SAME: () #[[ATTR0]] {
|
||||
// CHECK3-SAME: () #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK3-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK3-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK3: user_code.entry:
|
||||
// CHECK3-NEXT: call void @_Z3usev() #[[ATTR5]]
|
||||
// CHECK3-NEXT: call void @_Z3usev() #[[ATTR6]]
|
||||
// CHECK3-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK3-NEXT: ret void
|
||||
// CHECK3: worker.exit:
|
||||
|
@ -234,18 +234,18 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_Z4workv() #[[ATTR5]]
|
||||
// CHECK3-NEXT: call void @_Z4workv() #[[ATTR6]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK3-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK3-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -255,6 +255,6 @@ int main() {
|
|||
// CHECK3-NEXT: store i16 [[TMP0]], i16* [[DOTADDR]], align 2
|
||||
// CHECK3-NEXT: store i32 [[TMP1]], i32* [[DOTADDR1]], align 4
|
||||
// CHECK3-NEXT: call void @__kmpc_get_shared_variables(i8*** [[GLOBAL_ARGS]])
|
||||
// CHECK3-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
|
|
|
@ -173,7 +173,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 8 dereferenceable(8) [[PTR1:%.*]], i32** nonnull align 8 dereferenceable(8) [[PTR2:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 8 dereferenceable(8) [[PTR1:%.*]], i32** nonnull align 8 dereferenceable(8) [[PTR2:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -193,7 +193,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l39
|
||||
// CHECK1-SAME: () #[[ATTR0]] {
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK1-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
|
@ -206,7 +206,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l47
|
||||
// CHECK1-SAME: (i64 [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[AA:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[AA_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: store i64 [[AA]], i64* [[AA_ADDR]], align 8
|
||||
|
@ -232,7 +232,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l53
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i64 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i64 [[VLA1:%.*]], i64 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i64 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i64 [[VLA1:%.*]], i64 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[B_ADDR:%.*]] = alloca [10 x float]*, align 8
|
||||
|
@ -301,7 +301,7 @@ void unreachable_call() {
|
|||
// CHECK1-NEXT: [[ADD20:%.*]] = add nsw i32 [[CONV19]], 1
|
||||
// CHECK1-NEXT: [[CONV21:%.*]] = trunc i32 [[ADD20]] to i8
|
||||
// CHECK1-NEXT: store i8 [[CONV21]], i8* [[Y]], align 8
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR5:[0-9]+]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK1-NEXT: [[TMP17:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK1-NEXT: [[ADD22:%.*]] = add nsw i64 [[TMP17]], 1
|
||||
// CHECK1-NEXT: store i64 [[ADD22]], i64* [[CALL]], align 8
|
||||
|
@ -312,7 +312,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK1-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 8
|
||||
// CHECK1-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -324,7 +324,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZL7fstatici_l90
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[AA:%.*]], i64 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[AA:%.*]], i64 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[AA_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -366,7 +366,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l108
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]], i64 [[B:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]], i64 [[B:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -405,7 +405,7 @@ void unreachable_call() {
|
|||
// CHECK1-NEXT: [[TMP8:%.*]] = load double, double* [[A7]], align 8
|
||||
// CHECK1-NEXT: [[CONV8:%.*]] = fptosi double [[TMP8]] to i32
|
||||
// CHECK1-NEXT: [[A9:%.*]] = getelementptr inbounds [[STRUCT_S1]], %struct.S1* [[TMP0]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV8]], double* nonnull align 8 dereferenceable(8) [[A9]]) #[[ATTR5]]
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV8]], double* nonnull align 8 dereferenceable(8) [[A9]]) #[[ATTR6]]
|
||||
// CHECK1-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK1-NEXT: ret void
|
||||
// CHECK1: worker.exit:
|
||||
|
@ -413,7 +413,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z3baziRd
|
||||
// CHECK1-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca double*, align 8
|
||||
// CHECK1-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [2 x i8*], align 8
|
||||
|
@ -437,13 +437,13 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z16unreachable_callv_l142
|
||||
// CHECK1-SAME: () #[[ATTR0]] {
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK1-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK1-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK1: user_code.entry:
|
||||
// CHECK1-NEXT: call void @_Z6asserti(i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @_Z6asserti(i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: unreachable
|
||||
// CHECK1: worker.exit:
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -453,7 +453,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l74
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[AA_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -487,7 +487,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -510,7 +510,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK1-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -527,7 +527,7 @@ void unreachable_call() {
|
|||
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8*, i8** [[TMP2]], i64 1
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = bitcast i8** [[TMP6]] to double**
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load double*, double** [[TMP7]], align 8
|
||||
// CHECK1-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR1:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -560,7 +560,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR1:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR2:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR1:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR2:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -580,7 +580,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l39
|
||||
// CHECK2-SAME: () #[[ATTR0]] {
|
||||
// CHECK2-SAME: () #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK2-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
|
@ -593,7 +593,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l47
|
||||
// CHECK2-SAME: (i32 [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32 [[AA:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: store i32 [[AA]], i32* [[AA_ADDR]], align 4
|
||||
|
@ -619,7 +619,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l53
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i32 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i32 [[VLA1:%.*]], i32 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i32 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i32 [[VLA1:%.*]], i32 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[B_ADDR:%.*]] = alloca [10 x float]*, align 4
|
||||
|
@ -687,7 +687,7 @@ void unreachable_call() {
|
|||
// CHECK2-NEXT: [[ADD19:%.*]] = add nsw i32 [[CONV18]], 1
|
||||
// CHECK2-NEXT: [[CONV20:%.*]] = trunc i32 [[ADD19]] to i8
|
||||
// CHECK2-NEXT: store i8 [[CONV20]], i8* [[Y]], align 8
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR5:[0-9]+]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK2-NEXT: [[TMP17:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK2-NEXT: [[ADD21:%.*]] = add nsw i64 [[TMP17]], 1
|
||||
// CHECK2-NEXT: store i64 [[ADD21]], i64* [[CALL]], align 8
|
||||
|
@ -698,7 +698,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK2-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 4
|
||||
// CHECK2-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -710,7 +710,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZL7fstatici_l90
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], i32 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], i32 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -751,7 +751,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l108
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]], i32 [[B:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]], i32 [[B:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK2-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -789,7 +789,7 @@ void unreachable_call() {
|
|||
// CHECK2-NEXT: [[TMP8:%.*]] = load double, double* [[A6]], align 8
|
||||
// CHECK2-NEXT: [[CONV7:%.*]] = fptosi double [[TMP8]] to i32
|
||||
// CHECK2-NEXT: [[A8:%.*]] = getelementptr inbounds [[STRUCT_S1]], %struct.S1* [[TMP0]], i32 0, i32 0
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV7]], double* nonnull align 8 dereferenceable(8) [[A8]]) #[[ATTR5]]
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV7]], double* nonnull align 8 dereferenceable(8) [[A8]]) #[[ATTR6]]
|
||||
// CHECK2-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK2-NEXT: ret void
|
||||
// CHECK2: worker.exit:
|
||||
|
@ -797,7 +797,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_Z3baziRd
|
||||
// CHECK2-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK2-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca double*, align 4
|
||||
// CHECK2-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [2 x i8*], align 4
|
||||
|
@ -821,13 +821,13 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z16unreachable_callv_l142
|
||||
// CHECK2-SAME: () #[[ATTR0]] {
|
||||
// CHECK2-SAME: () #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK2-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK2-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK2: user_code.entry:
|
||||
// CHECK2-NEXT: call void @_Z6asserti(i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @_Z6asserti(i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: unreachable
|
||||
// CHECK2: worker.exit:
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -837,7 +837,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l74
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -870,7 +870,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -893,7 +893,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK2-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK2-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -910,7 +910,7 @@ void unreachable_call() {
|
|||
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8*, i8** [[TMP2]], i32 1
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = bitcast i8** [[TMP6]] to double**
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load double*, double** [[TMP7]], align 4
|
||||
// CHECK2-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR1:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -943,7 +943,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR1:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR2:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR1:%.*]], i32** nonnull align 4 dereferenceable(4) [[PTR2:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -963,7 +963,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l39
|
||||
// CHECK3-SAME: () #[[ATTR0]] {
|
||||
// CHECK3-SAME: () #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK3-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
|
@ -976,7 +976,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l47
|
||||
// CHECK3-SAME: (i32 [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[AA:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: store i32 [[AA]], i32* [[AA_ADDR]], align 4
|
||||
|
@ -1002,7 +1002,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooi_l53
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i32 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i32 [[VLA1:%.*]], i32 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], [10 x float]* nonnull align 4 dereferenceable(40) [[B:%.*]], i32 [[VLA:%.*]], float* nonnull align 4 dereferenceable(4) [[BN:%.*]], [5 x [10 x double]]* nonnull align 8 dereferenceable(400) [[C:%.*]], i32 [[VLA1:%.*]], i32 [[VLA3:%.*]], double* nonnull align 8 dereferenceable(8) [[CN:%.*]], %struct.TT* nonnull align 8 dereferenceable(16) [[D:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[B_ADDR:%.*]] = alloca [10 x float]*, align 4
|
||||
|
@ -1070,7 +1070,7 @@ void unreachable_call() {
|
|||
// CHECK3-NEXT: [[ADD19:%.*]] = add nsw i32 [[CONV18]], 1
|
||||
// CHECK3-NEXT: [[CONV20:%.*]] = trunc i32 [[ADD19]] to i8
|
||||
// CHECK3-NEXT: store i8 [[CONV20]], i8* [[Y]], align 8
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR5:[0-9]+]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(8) i64* @_ZN2TTIxcEixEi(%struct.TT* nonnull align 8 dereferenceable(16) [[TMP7]], i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK3-NEXT: [[TMP17:%.*]] = load i64, i64* [[CALL]], align 8
|
||||
// CHECK3-NEXT: [[ADD21:%.*]] = add nsw i64 [[TMP17]], 1
|
||||
// CHECK3-NEXT: store i64 [[ADD21]], i64* [[CALL]], align 8
|
||||
|
@ -1081,7 +1081,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_ZN2TTIxcEixEi
|
||||
// CHECK3-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-SAME: (%struct.TT* nonnull align 8 dereferenceable(16) [[THIS:%.*]], i32 [[I:%.*]]) #[[ATTR3:[0-9]+]] comdat align 2 {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.TT*, align 4
|
||||
// CHECK3-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1093,7 +1093,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZL7fstatici_l90
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], i32 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], i32 [[AAA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1134,7 +1134,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l108
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]], i32 [[B:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]], i32 [[B:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i16* nonnull align 2 dereferenceable(2) [[C:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1172,7 +1172,7 @@ void unreachable_call() {
|
|||
// CHECK3-NEXT: [[TMP8:%.*]] = load double, double* [[A6]], align 8
|
||||
// CHECK3-NEXT: [[CONV7:%.*]] = fptosi double [[TMP8]] to i32
|
||||
// CHECK3-NEXT: [[A8:%.*]] = getelementptr inbounds [[STRUCT_S1]], %struct.S1* [[TMP0]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV7]], double* nonnull align 8 dereferenceable(8) [[A8]]) #[[ATTR5]]
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_Z3baziRd(i32 [[CONV7]], double* nonnull align 8 dereferenceable(8) [[A8]]) #[[ATTR6]]
|
||||
// CHECK3-NEXT: call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i1 false, i1 true)
|
||||
// CHECK3-NEXT: ret void
|
||||
// CHECK3: worker.exit:
|
||||
|
@ -1180,7 +1180,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_Z3baziRd
|
||||
// CHECK3-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK3-SAME: (i32 [[F1:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca double*, align 4
|
||||
// CHECK3-NEXT: [[CAPTURED_VARS_ADDRS:%.*]] = alloca [2 x i8*], align 4
|
||||
|
@ -1204,13 +1204,13 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z16unreachable_callv_l142
|
||||
// CHECK3-SAME: () #[[ATTR0]] {
|
||||
// CHECK3-SAME: () #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i1 false, i1 true, i1 true)
|
||||
// CHECK3-NEXT: [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
|
||||
// CHECK3-NEXT: br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
|
||||
// CHECK3: user_code.entry:
|
||||
// CHECK3-NEXT: call void @_Z6asserti(i32 0) #[[ATTR6:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @_Z6asserti(i32 0) #[[ATTR7:[0-9]+]]
|
||||
// CHECK3-NEXT: unreachable
|
||||
// CHECK3: worker.exit:
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -1220,7 +1220,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l74
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[AA_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1253,7 +1253,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[F:%.*]], double* nonnull align 8 dereferenceable(8) [[A:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1276,7 +1276,7 @@ void unreachable_call() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
|
||||
// CHECK3-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-SAME: (i16 zeroext [[TMP0:%.*]], i32 [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTADDR:%.*]] = alloca i16, align 2
|
||||
// CHECK3-NEXT: [[DOTADDR1:%.*]] = alloca i32, align 4
|
||||
|
@ -1293,6 +1293,6 @@ void unreachable_call() {
|
|||
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8*, i8** [[TMP2]], i32 1
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = bitcast i8** [[TMP6]] to double**
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load double*, double** [[TMP7]], align 4
|
||||
// CHECK3-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR1:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]], i32* [[TMP5]], double* [[TMP8]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
|
|
|
@ -75,7 +75,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -128,7 +128,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -182,7 +182,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -235,7 +235,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -289,7 +289,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -342,7 +342,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -396,7 +396,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -449,7 +449,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -503,7 +503,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK5-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -556,7 +556,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK5-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -610,7 +610,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK6-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -663,7 +663,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK6-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
|
|
@ -70,7 +70,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -127,7 +127,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -181,7 +181,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -237,7 +237,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -291,7 +291,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -347,7 +347,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -401,7 +401,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -458,7 +458,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -512,7 +512,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK5-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -568,7 +568,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK5-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK5-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -622,7 +622,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__omp_outlined__
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]]) #[[ATTR1:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK6-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -678,7 +678,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@__omp_outlined__1
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR0]] {
|
||||
// CHECK6-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i16* nonnull align 2 dereferenceable(2) [[AA:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[B:%.*]]) #[[ATTR1]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK6-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
|
|
@ -98,7 +98,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -404,7 +404,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -642,7 +642,7 @@ int bar(int n){
|
|||
// CHECK5: .execute:
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -825,7 +825,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1042,7 +1042,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1356,7 +1356,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1614,7 +1614,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1920,7 +1920,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2158,7 +2158,7 @@ int bar(int n){
|
|||
// CHECK6: .execute:
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2341,7 +2341,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2558,7 +2558,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2872,7 +2872,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3130,7 +3130,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK7-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3431,7 +3431,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3669,7 +3669,7 @@ int bar(int n){
|
|||
// CHECK7: .execute:
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3852,7 +3852,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4069,7 +4069,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4383,7 +4383,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK7-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4641,7 +4641,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK8-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4942,7 +4942,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5180,7 +5180,7 @@ int bar(int n){
|
|||
// CHECK8: .execute:
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5363,7 +5363,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5580,7 +5580,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5894,7 +5894,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK8-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6156,7 +6156,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6478,7 +6478,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6725,7 +6725,7 @@ int bar(int n){
|
|||
// CHECK9: .execute:
|
||||
// CHECK9-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6916,7 +6916,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7145,7 +7145,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7461,7 +7461,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK9-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 8
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7733,7 +7733,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8050,7 +8050,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8297,7 +8297,7 @@ int bar(int n){
|
|||
// CHECK10: .execute:
|
||||
// CHECK10-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8488,7 +8488,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8717,7 +8717,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9033,7 +9033,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK10-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 8
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9305,7 +9305,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK11-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9627,7 +9627,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9874,7 +9874,7 @@ int bar(int n){
|
|||
// CHECK11: .execute:
|
||||
// CHECK11-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -10065,7 +10065,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -10294,7 +10294,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -10605,7 +10605,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK11-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 8
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -10877,7 +10877,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK12-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -11194,7 +11194,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -11441,7 +11441,7 @@ int bar(int n){
|
|||
// CHECK12: .execute:
|
||||
// CHECK12-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -11632,7 +11632,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -11861,7 +11861,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -12172,7 +12172,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK12-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 8
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -12440,7 +12440,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK13-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -12746,7 +12746,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -12984,7 +12984,7 @@ int bar(int n){
|
|||
// CHECK13: .execute:
|
||||
// CHECK13-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -13167,7 +13167,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -13384,7 +13384,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -13698,7 +13698,7 @@ int bar(int n){
|
|||
// CHECK13-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK13-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK13-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK13-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK13-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK13-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK13: .omp.deinit:
|
||||
// CHECK13-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -13956,7 +13956,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK14-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -14262,7 +14262,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -14500,7 +14500,7 @@ int bar(int n){
|
|||
// CHECK14: .execute:
|
||||
// CHECK14-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -14683,7 +14683,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -14900,7 +14900,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -15214,7 +15214,7 @@ int bar(int n){
|
|||
// CHECK14-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK14-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK14-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK14-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK14-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK14-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK14: .omp.deinit:
|
||||
// CHECK14-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -15472,7 +15472,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK15-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -15773,7 +15773,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -16011,7 +16011,7 @@ int bar(int n){
|
|||
// CHECK15: .execute:
|
||||
// CHECK15-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -16194,7 +16194,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -16411,7 +16411,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -16725,7 +16725,7 @@ int bar(int n){
|
|||
// CHECK15-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK15-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK15-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK15-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK15-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK15-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK15: .omp.deinit:
|
||||
// CHECK15-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -16983,7 +16983,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK16-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -17284,7 +17284,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -17522,7 +17522,7 @@ int bar(int n){
|
|||
// CHECK16: .execute:
|
||||
// CHECK16-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -17705,7 +17705,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -17922,7 +17922,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__8(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [10 x [10 x i32]]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -18236,7 +18236,7 @@ int bar(int n){
|
|||
// CHECK16-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK16-NEXT: [[TMP4:%.*]] = load i32*, i32** [[V_ADDR]], align 4
|
||||
// CHECK16-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK16-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR2]]
|
||||
// CHECK16-NEXT: call void @__omp_outlined__10(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32* [[TMP4]]) #[[ATTR3]]
|
||||
// CHECK16-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK16: .omp.deinit:
|
||||
// CHECK16-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -18795,7 +18795,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l34
|
||||
// CHECK1-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 8
|
||||
|
@ -20389,7 +20389,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l34
|
||||
// CHECK2-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK2-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 8
|
||||
|
@ -21961,7 +21961,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l34
|
||||
// CHECK3-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 4
|
||||
|
@ -23495,7 +23495,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l34
|
||||
// CHECK4-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK4-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 4
|
||||
|
|
|
@ -86,7 +86,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK4-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK4: .omp.deinit:
|
||||
// CHECK4-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -416,7 +416,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK4-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK4: .omp.deinit:
|
||||
// CHECK4-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -678,7 +678,7 @@ int bar(int n){
|
|||
// CHECK4: .execute:
|
||||
// CHECK4-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK4-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK4-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK4: .omp.deinit:
|
||||
// CHECK4-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -875,7 +875,7 @@ int bar(int n){
|
|||
// CHECK4-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK4-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK4-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK4: .omp.deinit:
|
||||
// CHECK4-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1114,7 +1114,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1439,7 +1439,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1701,7 +1701,7 @@ int bar(int n){
|
|||
// CHECK5: .execute:
|
||||
// CHECK5-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -1898,7 +1898,7 @@ int bar(int n){
|
|||
// CHECK5-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK5-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK5-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK5-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK5-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK5-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK5: .omp.deinit:
|
||||
// CHECK5-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2137,7 +2137,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2462,7 +2462,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2724,7 +2724,7 @@ int bar(int n){
|
|||
// CHECK6: .execute:
|
||||
// CHECK6-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -2921,7 +2921,7 @@ int bar(int n){
|
|||
// CHECK6-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK6-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK6-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK6-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK6-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK6-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK6: .omp.deinit:
|
||||
// CHECK6-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3164,7 +3164,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK7-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3510,7 +3510,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3781,7 +3781,7 @@ int bar(int n){
|
|||
// CHECK7: .execute:
|
||||
// CHECK7-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -3986,7 +3986,7 @@ int bar(int n){
|
|||
// CHECK7-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK7-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK7-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK7-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK7-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK7-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK7: .omp.deinit:
|
||||
// CHECK7-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4239,7 +4239,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4
|
||||
// CHECK8-NEXT: [[TMP5:%.*]] = load i64, i64* [[L_CASTED]], align 8
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i32]* [[TMP0]], i64 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4580,7 +4580,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i64 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -4851,7 +4851,7 @@ int bar(int n){
|
|||
// CHECK8: .execute:
|
||||
// CHECK8-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5056,7 +5056,7 @@ int bar(int n){
|
|||
// CHECK8-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4
|
||||
// CHECK8-NEXT: [[TMP3:%.*]] = load i64, i64* [[F_CASTED]], align 8
|
||||
// CHECK8-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK8-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK8-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i64 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK8-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK8: .omp.deinit:
|
||||
// CHECK8-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5305,7 +5305,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5635,7 +5635,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -5897,7 +5897,7 @@ int bar(int n){
|
|||
// CHECK9: .execute:
|
||||
// CHECK9-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6094,7 +6094,7 @@ int bar(int n){
|
|||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK9-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK9-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK9-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK9: .omp.deinit:
|
||||
// CHECK9-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6333,7 +6333,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6663,7 +6663,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -6925,7 +6925,7 @@ int bar(int n){
|
|||
// CHECK10: .execute:
|
||||
// CHECK10-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7122,7 +7122,7 @@ int bar(int n){
|
|||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK10-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK10-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK10-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK10: .omp.deinit:
|
||||
// CHECK10-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7361,7 +7361,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK11-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7686,7 +7686,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -7948,7 +7948,7 @@ int bar(int n){
|
|||
// CHECK11: .execute:
|
||||
// CHECK11-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8145,7 +8145,7 @@ int bar(int n){
|
|||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK11-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK11-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK11-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK11: .omp.deinit:
|
||||
// CHECK11-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8384,7 +8384,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP4]], i32* [[L_CASTED]], align 4
|
||||
// CHECK12-NEXT: [[TMP5:%.*]] = load i32, i32* [[L_CASTED]], align 4
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i32]* [[TMP0]], i32 [[TMP5]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8709,7 +8709,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__2(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], i32 [[TMP3]], [1000 x i16]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -8971,7 +8971,7 @@ int bar(int n){
|
|||
// CHECK12: .execute:
|
||||
// CHECK12-NEXT: [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3]])
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__4(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x i32]* [[TMP0]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9168,7 +9168,7 @@ int bar(int n){
|
|||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[F_CASTED]], align 4
|
||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[F_CASTED]], align 4
|
||||
// CHECK12-NEXT: store i32 [[TMP1]], i32* [[DOTTHREADID_TEMP_]], align 4
|
||||
// CHECK12-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR2]]
|
||||
// CHECK12-NEXT: call void @__omp_outlined__6(i32* [[DOTTHREADID_TEMP_]], i32* [[DOTZERO_ADDR]], [10 x [10 x i32]]* [[TMP0]], i32 [[TMP3]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: br label [[DOTOMP_DEINIT:%.*]]
|
||||
// CHECK12: .omp.deinit:
|
||||
// CHECK12-NEXT: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
@ -9732,7 +9732,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l32
|
||||
// CHECK1-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK1-SAME: (i64 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 8
|
||||
|
@ -10799,7 +10799,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l32
|
||||
// CHECK2-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK2-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 4
|
||||
|
@ -11837,7 +11837,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l32
|
||||
// CHECK3-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR0]] {
|
||||
// CHECK3-SAME: (i32 [[N:%.*]], [1000 x i16]* nonnull align 2 dereferenceable(2000) [[AA:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[AA_ADDR:%.*]] = alloca [1000 x i16]*, align 4
|
||||
|
|
|
@ -101,14 +101,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK1-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK1: omp_offload.failed:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK1: omp_offload.cont:
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK1-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -134,7 +134,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -184,14 +184,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK2-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK2: omp_offload.failed:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK2: omp_offload.cont:
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK2-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK2-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -217,7 +217,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -266,14 +266,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK3-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK3: omp_offload.failed:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK3: omp_offload.cont:
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK3-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -298,7 +298,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -347,14 +347,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK4-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK4: omp_offload.failed:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK4: omp_offload.cont:
|
||||
// CHECK4-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK4-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -379,7 +379,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -429,14 +429,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK5-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK5: omp_offload.failed:
|
||||
// CHECK5-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK5-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK5-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK5: omp_offload.cont:
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK5-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK5-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK5-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -462,7 +462,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK5-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK5-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK5-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK5-NEXT: entry:
|
||||
// CHECK5-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK5-NEXT: ret void
|
||||
|
@ -512,14 +512,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK6-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK6-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK6: omp_offload.failed:
|
||||
// CHECK6-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK6-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK6-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK6: omp_offload.cont:
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK6-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK6-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK6-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -545,7 +545,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK6-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK6-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK6-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK6-NEXT: entry:
|
||||
// CHECK6-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK6-NEXT: ret void
|
||||
|
@ -594,14 +594,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK7-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK7-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK7: omp_offload.failed:
|
||||
// CHECK7-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK7-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK7-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK7: omp_offload.cont:
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK7-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK7-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK7-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -626,7 +626,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK7-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK7-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK7-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK7-NEXT: entry:
|
||||
// CHECK7-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK7-NEXT: ret void
|
||||
|
@ -675,14 +675,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK8-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK8-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK8: omp_offload.failed:
|
||||
// CHECK8-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK8-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK8-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK8: omp_offload.cont:
|
||||
// CHECK8-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK8-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK8-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK8-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -707,7 +707,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK8-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK8-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK8-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK8-NEXT: entry:
|
||||
// CHECK8-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK8-NEXT: ret void
|
||||
|
@ -757,14 +757,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK9-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK9: omp_offload.failed:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK9: omp_offload.cont:
|
||||
// CHECK9-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK9-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK9-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK9-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -790,7 +790,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK9-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK9-NEXT: ret void
|
||||
|
@ -840,14 +840,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK10-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK10: omp_offload.failed:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i64 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK10: omp_offload.cont:
|
||||
// CHECK10-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK10-SAME: (i64 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK10-SAME: (i64 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[I_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK10-NEXT: store i64 [[I]], i64* [[I_ADDR]], align 8
|
||||
|
@ -873,7 +873,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK10-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK10-NEXT: ret void
|
||||
|
@ -922,14 +922,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK11-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK11: omp_offload.failed:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK11: omp_offload.cont:
|
||||
// CHECK11-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK11-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK11-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -954,7 +954,7 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK11-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK11-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK11-NEXT: ret void
|
||||
|
@ -1003,14 +1003,14 @@ void implicit_maps_nested_integer (int a){
|
|||
// CHECK12-NEXT: [[TMP11:%.*]] = icmp ne i32 [[TMP10]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP11]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK12: omp_offload.failed:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48(i32 [[TMP2]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK12: omp_offload.cont:
|
||||
// CHECK12-NEXT: ret void
|
||||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z28implicit_maps_nested_integeri_l48
|
||||
// CHECK12-SAME: (i32 [[I:%.*]]) #[[ATTR1]] {
|
||||
// CHECK12-SAME: (i32 [[I:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
|
||||
|
@ -1035,9 +1035,8 @@ void implicit_maps_nested_integer (int a){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK12-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK12-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK12-NEXT: ret void
|
||||
//
|
||||
//
|
|
@ -0,0 +1,175 @@
|
|||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK1
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK1
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK1
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK1
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK2
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK2
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK2
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK2
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK3
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK3
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK3
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK3
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK4
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK4
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK4
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK4
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK5
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK5
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK5
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK5
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK6
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK6
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK6
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK6
|
||||
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK7
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK7
|
||||
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK7
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s
|
||||
// RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap %s -check-prefix=CHECK7
|
||||
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
||||
|
||||
#ifndef HEADER
|
||||
#define HEADER
|
||||
|
||||
// COM: Checking for default target and thread limit: CHECK1
|
||||
|
||||
void default_val_num_teams() {
|
||||
#pragma omp target simd
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
// COM: Check for num_teams(22) all the same: CHECK2
|
||||
void foo1() {
|
||||
#pragma omp target teams num_teams(22)
|
||||
{ int a_var; }
|
||||
}
|
||||
|
||||
void foo2() {
|
||||
#pragma omp target teams distribute num_teams(22)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
void foo3() {
|
||||
#pragma omp target teams distribute parallel for num_teams(22)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
// COM: Check for num_teams differently: CHECK3
|
||||
void bar1() {
|
||||
#pragma omp target teams num_teams(22)
|
||||
{ int a_var; }
|
||||
}
|
||||
|
||||
void bar2() {
|
||||
#pragma omp target teams distribute num_teams(33)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
void bar3() {
|
||||
#pragma omp target teams distribute parallel for num_teams(44)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
// COM: Check for const int expression: CHECK4
|
||||
void const_int() {
|
||||
const int NT = 22;
|
||||
#pragma omp target teams num_teams(NT)
|
||||
{ int a_var; }
|
||||
}
|
||||
|
||||
// COM: Checking for num threads: CHECK5
|
||||
void thread_limit() {
|
||||
#pragma omp target teams thread_limit(22)
|
||||
{ int a_var; }
|
||||
}
|
||||
|
||||
// COM: Checking for num threads and thread limit: CHECK6
|
||||
void num_threads() {
|
||||
#pragma omp target teams distribute parallel for thread_limit(22) num_threads(11)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
// COM: Checking for thread_limit and num_teams: CHECK6
|
||||
void threads_and_teams() {
|
||||
#pragma omp target teams distribute parallel for thread_limit(22) num_teams(33)
|
||||
for (int i = 0; i < 22; i++)
|
||||
int a_var;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}default_val_num_teams{{[^(]*}}
|
||||
// CHECK1-SAME: () #[[ATTR_OUTLINED_DEF_SIMD:[0-9]+]] {
|
||||
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}foo1{{[^(]*}}
|
||||
// CHECK2-SAME: () #[[ATTR_OUTLINED_CHECK2:[0-9]+]] {
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}foo2{{[^(]*}}
|
||||
// CHECK2-SAME: () #[[ATTR_OUTLINED_CHECK2:[0-9]+]] {
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}foo3{{[^(]*}}
|
||||
// CHECK2-SAME: () #[[ATTR_OUTLINED_CHECK2:[0-9]+]] {
|
||||
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}bar1{{[^(]*}}
|
||||
// CHECK3-SAME: () #[[ATTR_OUTLINED_CHECK3_1:[0-9]+]] {
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}bar2{{[^(]*}}
|
||||
// CHECK3-SAME: () #[[ATTR_OUTLINED_CHECK3_2:[0-9]+]] {
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}bar3{{[^(]*}}
|
||||
// CHECK3-SAME: () #[[ATTR_OUTLINED_CHECK3_3:[0-9]+]] {
|
||||
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}const_int{{[^(]*}}
|
||||
// CHECK4-SAME: () #[[ATTR_OUTLINED_CHECK4:[0-9]+]] {
|
||||
|
||||
// CHECK5-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}thread_limit{{[^(]*}}
|
||||
// CHECK5-SAME: () #[[ATTR_OUTLINED_CHECK5:[0-9]+]] {
|
||||
|
||||
// CHECK6-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}num_threads{{[^(]*}}
|
||||
// CHECK6-SAME: () #[[ATTR_OUTLINED_CHECK6:[0-9]+]] {
|
||||
|
||||
// CHECK7-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+.*}}threads_and_teams{{[^(]*}}
|
||||
// CHECK7-SAME: () #[[ATTR_OUTLINED_CHECK7:[0-9]+]] {
|
||||
|
||||
|
||||
|
||||
// CHECK1: attributes #[[ATTR_OUTLINED_DEF_SIMD]] = {{{.*"omp_target_num_teams"="1".*"omp_target_thread_limit"="1".*}}}
|
||||
|
||||
// CHECK2: attributes #[[ATTR_OUTLINED_CHECK2]] = {{{.*"omp_target_num_teams"="22".*}}}
|
||||
|
||||
// CHECK3: attributes #[[ATTR_OUTLINED_CHECK3_1]] = {{{.*"omp_target_num_teams"="22".*}}}
|
||||
// CHECK3: attributes #[[ATTR_OUTLINED_CHECK3_2]] = {{{.*"omp_target_num_teams"="33".*}}}
|
||||
// CHECK3: attributes #[[ATTR_OUTLINED_CHECK3_3]] = {{{.*"omp_target_num_teams"="44".*}}}
|
||||
|
||||
// CHECK4: attributes #[[ATTR_OUTLINED_CHECK4]] = {{{.*"omp_target_num_teams"="22".*}}}
|
||||
|
||||
// CHECK5: attributes #[[ATTR_OUTLINED_CHECK5]] = {{{.*"omp_target_thread_limit"="22".*}}}
|
||||
|
||||
// CHECK6: attributes #[[ATTR_OUTLINED_CHECK6]] = {{{.*"omp_target_thread_limit"="11".*}}}
|
||||
|
||||
// CHECK7: attributes #[[ATTR_OUTLINED_CHECK7]] = {{{.*"omp_target_num_teams"="33".*"omp_target_thread_limit"="22".*}}}
|
File diff suppressed because it is too large
Load Diff
|
@ -256,7 +256,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR0]] !dbg [[DBG115:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR4:[0-9]+]] !dbg [[DBG98:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -466,7 +466,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l37
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR0]] !dbg [[DBG192:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR4]] !dbg [[DBG168:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -687,7 +687,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l51
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR0]] !dbg [[DBG270:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR4]] !dbg [[DBG232:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -326,7 +326,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l13
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] !dbg [[DBG123:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR4:[0-9]+]] !dbg [[DBG106:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -615,7 +615,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l27
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR0]] !dbg [[DBG214:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i64 [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR4]] !dbg [[DBG190:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -909,7 +909,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l41
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR0]] !dbg [[DBG307:![0-9]+]] {
|
||||
// CHECK1-SAME: ([10 x [10 x [10 x i32]]]* nonnull align 4 dereferenceable(4000) [[C:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], [10 x [10 x i32]]* nonnull align 4 dereferenceable(400) [[B:%.*]], i8* nonnull align 1 dereferenceable(1) [[BB:%.*]]) #[[ATTR4]] !dbg [[DBG269:![0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[C_ADDR:%.*]] = alloca [10 x [10 x [10 x i32]]]*, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -129,7 +129,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK1: omp_offload.failed:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK1: omp_offload.cont:
|
||||
// CHECK1-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -150,7 +150,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -190,40 +190,40 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK1-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 456
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 456
|
||||
// CHECK1-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 456
|
||||
// CHECK1-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK1-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK1-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK1-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_SS:%.*]], %struct.SS* [[TMP0]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [123 x [456 x i32]], [123 x [456 x i32]]* [[A]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[IDXPROM7:%.*]] = sext i32 [[TMP12]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX8:%.*]] = getelementptr inbounds [456 x i32], [456 x i32]* [[ARRAYIDX]], i64 0, i64 [[IDXPROM7]]
|
||||
// CHECK1-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4
|
||||
// CHECK1-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -240,7 +240,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -281,7 +281,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK2: omp_offload.failed:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK2: omp_offload.cont:
|
||||
// CHECK2-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -302,7 +302,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -342,40 +342,40 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK2-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 456
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 456
|
||||
// CHECK2-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 456
|
||||
// CHECK2-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK2-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK2-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK2-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_SS:%.*]], %struct.SS* [[TMP0]], i32 0, i32 0
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [123 x [456 x i32]], [123 x [456 x i32]]* [[A]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[IDXPROM7:%.*]] = sext i32 [[TMP12]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX8:%.*]] = getelementptr inbounds [456 x i32], [456 x i32]* [[ARRAYIDX]], i64 0, i64 [[IDXPROM7]]
|
||||
// CHECK2-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4
|
||||
// CHECK2-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -392,7 +392,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -433,7 +433,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK3: omp_offload.failed:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK3: omp_offload.cont:
|
||||
// CHECK3-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -454,7 +454,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -494,38 +494,38 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK3-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 456
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 456
|
||||
// CHECK3-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 456
|
||||
// CHECK3-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK3-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK3-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK3-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_SS:%.*]], %struct.SS* [[TMP0]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [123 x [456 x i32]], [123 x [456 x i32]]* [[A]], i32 0, i32 [[TMP11]]
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [456 x i32], [456 x i32]* [[ARRAYIDX]], i32 0, i32 [[TMP12]]
|
||||
// CHECK3-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4
|
||||
// CHECK3-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -542,7 +542,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -583,7 +583,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK4: omp_offload.failed:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK4: omp_offload.cont:
|
||||
// CHECK4-NEXT: [[A3:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -604,7 +604,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -644,38 +644,38 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK4-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 456
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 456
|
||||
// CHECK4-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 456
|
||||
// CHECK4-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK4-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK4-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK4-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_SS:%.*]], %struct.SS* [[TMP0]], i32 0, i32 0
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [123 x [456 x i32]], [123 x [456 x i32]]* [[A]], i32 0, i32 [[TMP11]]
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [456 x i32], [456 x i32]* [[ARRAYIDX]], i32 0, i32 [[TMP12]]
|
||||
// CHECK4-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4
|
||||
// CHECK4-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -692,7 +692,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -1100,7 +1100,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP51:%.*]] = icmp ne i32 [[TMP50]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP51]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK9: omp_offload.failed:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i64 [[TMP7]], i64 [[TMP9]], i64 [[TMP1]], i64 [[TMP3]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i64 [[TMP7]], i64 [[TMP9]], i64 [[TMP1]], i64 [[TMP3]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK9: omp_offload.cont:
|
||||
// CHECK9-NEXT: [[TMP52:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -1145,7 +1145,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[M:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[M:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1230,13 +1230,13 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: store i64 [[TMP16]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK9: omp.inner.for.cond:
|
||||
// CHECK9-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8
|
||||
// CHECK9-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[CMP16:%.*]] = icmp sle i64 [[TMP17]], [[TMP18]]
|
||||
// CHECK9-NEXT: br i1 [[CMP16]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK9: omp.inner.for.body:
|
||||
// CHECK9-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK9-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[SUB17:%.*]] = sub nsw i32 [[TMP20]], 0
|
||||
// CHECK9-NEXT: [[DIV18:%.*]] = sdiv i32 [[SUB17]], 1
|
||||
// CHECK9-NEXT: [[MUL19:%.*]] = mul nsw i32 1, [[DIV18]]
|
||||
|
@ -1245,16 +1245,16 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[MUL22:%.*]] = mul nsw i64 [[DIV21]], 1
|
||||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i64 0, [[MUL22]]
|
||||
// CHECK9-NEXT: [[CONV23:%.*]] = trunc i64 [[ADD]] to i32
|
||||
// CHECK9-NEXT: store i32 [[CONV23]], i32* [[I13]], align 4
|
||||
// CHECK9-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK9-NEXT: store i32 [[CONV23]], i32* [[I13]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[SUB24:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK9-NEXT: [[DIV25:%.*]] = sdiv i32 [[SUB24]], 1
|
||||
// CHECK9-NEXT: [[MUL26:%.*]] = mul nsw i32 1, [[DIV25]]
|
||||
// CHECK9-NEXT: [[CONV27:%.*]] = sext i32 [[MUL26]] to i64
|
||||
// CHECK9-NEXT: [[DIV28:%.*]] = sdiv i64 [[TMP22]], [[CONV27]]
|
||||
// CHECK9-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK9-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[SUB29:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK9-NEXT: [[DIV30:%.*]] = sdiv i32 [[SUB29]], 1
|
||||
// CHECK9-NEXT: [[MUL31:%.*]] = mul nsw i32 1, [[DIV30]]
|
||||
|
@ -1264,23 +1264,23 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[MUL35:%.*]] = mul nsw i64 [[SUB34]], 1
|
||||
// CHECK9-NEXT: [[ADD36:%.*]] = add nsw i64 0, [[MUL35]]
|
||||
// CHECK9-NEXT: [[CONV37:%.*]] = trunc i64 [[ADD36]] to i32
|
||||
// CHECK9-NEXT: store i32 [[CONV37]], i32* [[J14]], align 4
|
||||
// CHECK9-NEXT: [[TMP25:%.*]] = load i32, i32* [[I13]], align 4
|
||||
// CHECK9-NEXT: store i32 [[CONV37]], i32* [[J14]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[TMP25:%.*]] = load i32, i32* [[I13]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP25]] to i64
|
||||
// CHECK9-NEXT: [[TMP26:%.*]] = mul nsw i64 [[IDXPROM]], [[TMP1]]
|
||||
// CHECK9-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[TMP2]], i64 [[TMP26]]
|
||||
// CHECK9-NEXT: [[TMP27:%.*]] = load i32, i32* [[J14]], align 4
|
||||
// CHECK9-NEXT: [[TMP27:%.*]] = load i32, i32* [[J14]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[IDXPROM38:%.*]] = sext i32 [[TMP27]] to i64
|
||||
// CHECK9-NEXT: [[ARRAYIDX39:%.*]] = getelementptr inbounds i32, i32* [[ARRAYIDX]], i64 [[IDXPROM38]]
|
||||
// CHECK9-NEXT: store i32 0, i32* [[ARRAYIDX39]], align 4
|
||||
// CHECK9-NEXT: store i32 0, i32* [[ARRAYIDX39]], align 4, !llvm.access.group !5
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK9: omp.inner.for.inc:
|
||||
// CHECK9-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: [[ADD40:%.*]] = add nsw i64 [[TMP28]], 1
|
||||
// CHECK9-NEXT: store i64 [[ADD40]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK9-NEXT: store i64 [[ADD40]], i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK9: omp.inner.for.end:
|
||||
// CHECK9-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK9: omp.loop.exit:
|
||||
|
@ -1311,7 +1311,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_Z5tmainIiLi10ELi2EEiT_
|
||||
// CHECK9-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK9-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK9-NEXT: [[A:%.*]] = alloca [10 x [2 x i32]], align 4
|
||||
|
@ -1336,7 +1336,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK9: omp_offload.failed:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK9: omp_offload.cont:
|
||||
// CHECK9-NEXT: ret i32 0
|
||||
|
@ -1353,7 +1353,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1393,39 +1393,39 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK9: omp.inner.for.cond:
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK9-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK9: omp.inner.for.body:
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 2
|
||||
// CHECK9-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 2
|
||||
// CHECK9-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 2
|
||||
// CHECK9-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK9-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK9-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK9-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK9-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK9-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* [[TMP0]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[IDXPROM7:%.*]] = sext i32 [[TMP12]] to i64
|
||||
// CHECK9-NEXT: [[ARRAYIDX8:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[ARRAYIDX]], i64 0, i64 [[IDXPROM7]]
|
||||
// CHECK9-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4
|
||||
// CHECK9-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK9: omp.inner.for.inc:
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK9-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK9-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK9: omp.inner.for.end:
|
||||
// CHECK9-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK9: omp.loop.exit:
|
||||
|
@ -1442,7 +1442,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK9-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK9-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK9-NEXT: ret void
|
||||
|
@ -1570,7 +1570,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP51:%.*]] = icmp ne i32 [[TMP50]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP51]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK10: omp_offload.failed:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i64 [[TMP7]], i64 [[TMP9]], i64 [[TMP1]], i64 [[TMP3]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i64 [[TMP7]], i64 [[TMP9]], i64 [[TMP1]], i64 [[TMP3]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK10: omp_offload.cont:
|
||||
// CHECK10-NEXT: [[TMP52:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -1615,7 +1615,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[M:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[M:%.*]], i64 [[VLA:%.*]], i64 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1700,13 +1700,13 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: store i64 [[TMP16]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK10: omp.inner.for.cond:
|
||||
// CHECK10-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8
|
||||
// CHECK10-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[CMP16:%.*]] = icmp sle i64 [[TMP17]], [[TMP18]]
|
||||
// CHECK10-NEXT: br i1 [[CMP16]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK10: omp.inner.for.body:
|
||||
// CHECK10-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK10-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[SUB17:%.*]] = sub nsw i32 [[TMP20]], 0
|
||||
// CHECK10-NEXT: [[DIV18:%.*]] = sdiv i32 [[SUB17]], 1
|
||||
// CHECK10-NEXT: [[MUL19:%.*]] = mul nsw i32 1, [[DIV18]]
|
||||
|
@ -1715,16 +1715,16 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[MUL22:%.*]] = mul nsw i64 [[DIV21]], 1
|
||||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i64 0, [[MUL22]]
|
||||
// CHECK10-NEXT: [[CONV23:%.*]] = trunc i64 [[ADD]] to i32
|
||||
// CHECK10-NEXT: store i32 [[CONV23]], i32* [[I13]], align 4
|
||||
// CHECK10-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK10-NEXT: store i32 [[CONV23]], i32* [[I13]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[SUB24:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK10-NEXT: [[DIV25:%.*]] = sdiv i32 [[SUB24]], 1
|
||||
// CHECK10-NEXT: [[MUL26:%.*]] = mul nsw i32 1, [[DIV25]]
|
||||
// CHECK10-NEXT: [[CONV27:%.*]] = sext i32 [[MUL26]] to i64
|
||||
// CHECK10-NEXT: [[DIV28:%.*]] = sdiv i64 [[TMP22]], [[CONV27]]
|
||||
// CHECK10-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4
|
||||
// CHECK10-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_5]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[SUB29:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK10-NEXT: [[DIV30:%.*]] = sdiv i32 [[SUB29]], 1
|
||||
// CHECK10-NEXT: [[MUL31:%.*]] = mul nsw i32 1, [[DIV30]]
|
||||
|
@ -1734,23 +1734,23 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[MUL35:%.*]] = mul nsw i64 [[SUB34]], 1
|
||||
// CHECK10-NEXT: [[ADD36:%.*]] = add nsw i64 0, [[MUL35]]
|
||||
// CHECK10-NEXT: [[CONV37:%.*]] = trunc i64 [[ADD36]] to i32
|
||||
// CHECK10-NEXT: store i32 [[CONV37]], i32* [[J14]], align 4
|
||||
// CHECK10-NEXT: [[TMP25:%.*]] = load i32, i32* [[I13]], align 4
|
||||
// CHECK10-NEXT: store i32 [[CONV37]], i32* [[J14]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[TMP25:%.*]] = load i32, i32* [[I13]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP25]] to i64
|
||||
// CHECK10-NEXT: [[TMP26:%.*]] = mul nsw i64 [[IDXPROM]], [[TMP1]]
|
||||
// CHECK10-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[TMP2]], i64 [[TMP26]]
|
||||
// CHECK10-NEXT: [[TMP27:%.*]] = load i32, i32* [[J14]], align 4
|
||||
// CHECK10-NEXT: [[TMP27:%.*]] = load i32, i32* [[J14]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[IDXPROM38:%.*]] = sext i32 [[TMP27]] to i64
|
||||
// CHECK10-NEXT: [[ARRAYIDX39:%.*]] = getelementptr inbounds i32, i32* [[ARRAYIDX]], i64 [[IDXPROM38]]
|
||||
// CHECK10-NEXT: store i32 0, i32* [[ARRAYIDX39]], align 4
|
||||
// CHECK10-NEXT: store i32 0, i32* [[ARRAYIDX39]], align 4, !llvm.access.group !5
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK10: omp.inner.for.inc:
|
||||
// CHECK10-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: [[ADD40:%.*]] = add nsw i64 [[TMP28]], 1
|
||||
// CHECK10-NEXT: store i64 [[ADD40]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK10-NEXT: store i64 [[ADD40]], i64* [[DOTOMP_IV]], align 8, !llvm.access.group !5
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK10: omp.inner.for.end:
|
||||
// CHECK10-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK10: omp.loop.exit:
|
||||
|
@ -1781,7 +1781,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_Z5tmainIiLi10ELi2EEiT_
|
||||
// CHECK10-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK10-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK10-NEXT: [[A:%.*]] = alloca [10 x [2 x i32]], align 4
|
||||
|
@ -1806,7 +1806,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK10: omp_offload.failed:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK10: omp_offload.cont:
|
||||
// CHECK10-NEXT: ret i32 0
|
||||
|
@ -1823,7 +1823,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1863,39 +1863,39 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK10: omp.inner.for.cond:
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK10-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK10: omp.inner.for.body:
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 2
|
||||
// CHECK10-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 2
|
||||
// CHECK10-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 2
|
||||
// CHECK10-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK10-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK10-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK10-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK10-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK10-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* [[TMP0]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[IDXPROM7:%.*]] = sext i32 [[TMP12]] to i64
|
||||
// CHECK10-NEXT: [[ARRAYIDX8:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[ARRAYIDX]], i64 0, i64 [[IDXPROM7]]
|
||||
// CHECK10-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4
|
||||
// CHECK10-NEXT: store i32 0, i32* [[ARRAYIDX8]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK10: omp.inner.for.inc:
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK10-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK10-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK10: omp.inner.for.end:
|
||||
// CHECK10-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK10: omp.loop.exit:
|
||||
|
@ -1912,7 +1912,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK10-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK10-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK10-NEXT: ret void
|
||||
|
@ -2037,7 +2037,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK11: omp_offload.failed:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i32 [[TMP5]], i32 [[TMP7]], i32 [[TMP0]], i32 [[TMP1]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i32 [[TMP5]], i32 [[TMP7]], i32 [[TMP0]], i32 [[TMP1]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK11: omp_offload.cont:
|
||||
// CHECK11-NEXT: [[TMP51:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -2078,7 +2078,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[M:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[M:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2161,13 +2161,13 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: store i64 [[TMP16]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK11: omp.inner.for.cond:
|
||||
// CHECK11-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8
|
||||
// CHECK11-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[CMP14:%.*]] = icmp sle i64 [[TMP17]], [[TMP18]]
|
||||
// CHECK11-NEXT: br i1 [[CMP14]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK11: omp.inner.for.body:
|
||||
// CHECK11-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK11-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[SUB15:%.*]] = sub nsw i32 [[TMP20]], 0
|
||||
// CHECK11-NEXT: [[DIV16:%.*]] = sdiv i32 [[SUB15]], 1
|
||||
// CHECK11-NEXT: [[MUL17:%.*]] = mul nsw i32 1, [[DIV16]]
|
||||
|
@ -2176,16 +2176,16 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[MUL20:%.*]] = mul nsw i64 [[DIV19]], 1
|
||||
// CHECK11-NEXT: [[ADD:%.*]] = add nsw i64 0, [[MUL20]]
|
||||
// CHECK11-NEXT: [[CONV21:%.*]] = trunc i64 [[ADD]] to i32
|
||||
// CHECK11-NEXT: store i32 [[CONV21]], i32* [[I11]], align 4
|
||||
// CHECK11-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK11-NEXT: store i32 [[CONV21]], i32* [[I11]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[SUB22:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK11-NEXT: [[DIV23:%.*]] = sdiv i32 [[SUB22]], 1
|
||||
// CHECK11-NEXT: [[MUL24:%.*]] = mul nsw i32 1, [[DIV23]]
|
||||
// CHECK11-NEXT: [[CONV25:%.*]] = sext i32 [[MUL24]] to i64
|
||||
// CHECK11-NEXT: [[DIV26:%.*]] = sdiv i64 [[TMP22]], [[CONV25]]
|
||||
// CHECK11-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK11-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[SUB27:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK11-NEXT: [[DIV28:%.*]] = sdiv i32 [[SUB27]], 1
|
||||
// CHECK11-NEXT: [[MUL29:%.*]] = mul nsw i32 1, [[DIV28]]
|
||||
|
@ -2195,21 +2195,21 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[MUL33:%.*]] = mul nsw i64 [[SUB32]], 1
|
||||
// CHECK11-NEXT: [[ADD34:%.*]] = add nsw i64 0, [[MUL33]]
|
||||
// CHECK11-NEXT: [[CONV35:%.*]] = trunc i64 [[ADD34]] to i32
|
||||
// CHECK11-NEXT: store i32 [[CONV35]], i32* [[J12]], align 4
|
||||
// CHECK11-NEXT: [[TMP25:%.*]] = load i32, i32* [[I11]], align 4
|
||||
// CHECK11-NEXT: store i32 [[CONV35]], i32* [[J12]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP25:%.*]] = load i32, i32* [[I11]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[TMP26:%.*]] = mul nsw i32 [[TMP25]], [[TMP1]]
|
||||
// CHECK11-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[TMP2]], i32 [[TMP26]]
|
||||
// CHECK11-NEXT: [[TMP27:%.*]] = load i32, i32* [[J12]], align 4
|
||||
// CHECK11-NEXT: [[TMP27:%.*]] = load i32, i32* [[J12]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds i32, i32* [[ARRAYIDX]], i32 [[TMP27]]
|
||||
// CHECK11-NEXT: store i32 0, i32* [[ARRAYIDX36]], align 4
|
||||
// CHECK11-NEXT: store i32 0, i32* [[ARRAYIDX36]], align 4, !llvm.access.group !6
|
||||
// CHECK11-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK11: omp.body.continue:
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK11: omp.inner.for.inc:
|
||||
// CHECK11-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: [[ADD37:%.*]] = add nsw i64 [[TMP28]], 1
|
||||
// CHECK11-NEXT: store i64 [[ADD37]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK11-NEXT: store i64 [[ADD37]], i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK11: omp.inner.for.end:
|
||||
// CHECK11-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK11: omp.loop.exit:
|
||||
|
@ -2240,7 +2240,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_Z5tmainIiLi10ELi2EEiT_
|
||||
// CHECK11-SAME: (i32 [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK11-SAME: (i32 [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[A:%.*]] = alloca [10 x [2 x i32]], align 4
|
||||
|
@ -2265,7 +2265,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK11: omp_offload.failed:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK11: omp_offload.cont:
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
|
@ -2282,7 +2282,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2322,37 +2322,37 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK11: omp.inner.for.cond:
|
||||
// CHECK11-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK11-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK11-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK11: omp.inner.for.body:
|
||||
// CHECK11-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 2
|
||||
// CHECK11-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK11-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK11-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK11-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 2
|
||||
// CHECK11-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 2
|
||||
// CHECK11-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK11-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK11-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK11-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK11-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK11-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* [[TMP0]], i32 0, i32 [[TMP11]]
|
||||
// CHECK11-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK11-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[ARRAYIDX]], i32 0, i32 [[TMP12]]
|
||||
// CHECK11-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4
|
||||
// CHECK11-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK11: omp.body.continue:
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK11: omp.inner.for.inc:
|
||||
// CHECK11-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK11-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK11-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK11-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK11: omp.inner.for.end:
|
||||
// CHECK11-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK11: omp.loop.exit:
|
||||
|
@ -2369,7 +2369,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK11-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK11-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK11-NEXT: ret void
|
||||
|
@ -2494,7 +2494,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK12: omp_offload.failed:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i32 [[TMP5]], i32 [[TMP7]], i32 [[TMP0]], i32 [[TMP1]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l80(i32 [[TMP5]], i32 [[TMP7]], i32 [[TMP0]], i32 [[TMP1]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK12: omp_offload.cont:
|
||||
// CHECK12-NEXT: [[TMP51:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -2535,7 +2535,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[M:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[M:%.*]], i32 [[VLA:%.*]], i32 [[VLA1:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2618,13 +2618,13 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: store i64 [[TMP16]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK12: omp.inner.for.cond:
|
||||
// CHECK12-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8
|
||||
// CHECK12-NEXT: [[TMP17:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP18:%.*]] = load i64, i64* [[DOTOMP_UB]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[CMP14:%.*]] = icmp sle i64 [[TMP17]], [[TMP18]]
|
||||
// CHECK12-NEXT: br i1 [[CMP14]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK12: omp.inner.for.body:
|
||||
// CHECK12-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK12-NEXT: [[TMP19:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP20:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[SUB15:%.*]] = sub nsw i32 [[TMP20]], 0
|
||||
// CHECK12-NEXT: [[DIV16:%.*]] = sdiv i32 [[SUB15]], 1
|
||||
// CHECK12-NEXT: [[MUL17:%.*]] = mul nsw i32 1, [[DIV16]]
|
||||
|
@ -2633,16 +2633,16 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[MUL20:%.*]] = mul nsw i64 [[DIV19]], 1
|
||||
// CHECK12-NEXT: [[ADD:%.*]] = add nsw i64 0, [[MUL20]]
|
||||
// CHECK12-NEXT: [[CONV21:%.*]] = trunc i64 [[ADD]] to i32
|
||||
// CHECK12-NEXT: store i32 [[CONV21]], i32* [[I11]], align 4
|
||||
// CHECK12-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK12-NEXT: store i32 [[CONV21]], i32* [[I11]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP21:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP22:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP23:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[SUB22:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK12-NEXT: [[DIV23:%.*]] = sdiv i32 [[SUB22]], 1
|
||||
// CHECK12-NEXT: [[MUL24:%.*]] = mul nsw i32 1, [[DIV23]]
|
||||
// CHECK12-NEXT: [[CONV25:%.*]] = sext i32 [[MUL24]] to i64
|
||||
// CHECK12-NEXT: [[DIV26:%.*]] = sdiv i64 [[TMP22]], [[CONV25]]
|
||||
// CHECK12-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4
|
||||
// CHECK12-NEXT: [[TMP24:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR_4]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[SUB27:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK12-NEXT: [[DIV28:%.*]] = sdiv i32 [[SUB27]], 1
|
||||
// CHECK12-NEXT: [[MUL29:%.*]] = mul nsw i32 1, [[DIV28]]
|
||||
|
@ -2652,21 +2652,21 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[MUL33:%.*]] = mul nsw i64 [[SUB32]], 1
|
||||
// CHECK12-NEXT: [[ADD34:%.*]] = add nsw i64 0, [[MUL33]]
|
||||
// CHECK12-NEXT: [[CONV35:%.*]] = trunc i64 [[ADD34]] to i32
|
||||
// CHECK12-NEXT: store i32 [[CONV35]], i32* [[J12]], align 4
|
||||
// CHECK12-NEXT: [[TMP25:%.*]] = load i32, i32* [[I11]], align 4
|
||||
// CHECK12-NEXT: store i32 [[CONV35]], i32* [[J12]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP25:%.*]] = load i32, i32* [[I11]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[TMP26:%.*]] = mul nsw i32 [[TMP25]], [[TMP1]]
|
||||
// CHECK12-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[TMP2]], i32 [[TMP26]]
|
||||
// CHECK12-NEXT: [[TMP27:%.*]] = load i32, i32* [[J12]], align 4
|
||||
// CHECK12-NEXT: [[TMP27:%.*]] = load i32, i32* [[J12]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds i32, i32* [[ARRAYIDX]], i32 [[TMP27]]
|
||||
// CHECK12-NEXT: store i32 0, i32* [[ARRAYIDX36]], align 4
|
||||
// CHECK12-NEXT: store i32 0, i32* [[ARRAYIDX36]], align 4, !llvm.access.group !6
|
||||
// CHECK12-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK12: omp.body.continue:
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK12: omp.inner.for.inc:
|
||||
// CHECK12-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: [[TMP28:%.*]] = load i64, i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: [[ADD37:%.*]] = add nsw i64 [[TMP28]], 1
|
||||
// CHECK12-NEXT: store i64 [[ADD37]], i64* [[DOTOMP_IV]], align 8
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK12-NEXT: store i64 [[ADD37]], i64* [[DOTOMP_IV]], align 8, !llvm.access.group !6
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK12: omp.inner.for.end:
|
||||
// CHECK12-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK12: omp.loop.exit:
|
||||
|
@ -2697,7 +2697,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_Z5tmainIiLi10ELi2EEiT_
|
||||
// CHECK12-SAME: (i32 [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK12-SAME: (i32 [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[A:%.*]] = alloca [10 x [2 x i32]], align 4
|
||||
|
@ -2722,7 +2722,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK12: omp_offload.failed:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10ELi2EEiT__l67([10 x [2 x i32]]* [[A]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK12: omp_offload.cont:
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
|
@ -2739,7 +2739,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x [2 x i32]]* nonnull align 4 dereferenceable(80) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2779,37 +2779,37 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK12: omp.inner.for.cond:
|
||||
// CHECK12-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK12-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK12-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK12: omp.inner.for.body:
|
||||
// CHECK12-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[DIV:%.*]] = sdiv i32 [[TMP8]], 2
|
||||
// CHECK12-NEXT: [[MUL:%.*]] = mul nsw i32 [[DIV]], 1
|
||||
// CHECK12-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK12-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK12-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[TMP9:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[TMP10:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[DIV3:%.*]] = sdiv i32 [[TMP10]], 2
|
||||
// CHECK12-NEXT: [[MUL4:%.*]] = mul nsw i32 [[DIV3]], 2
|
||||
// CHECK12-NEXT: [[SUB:%.*]] = sub nsw i32 [[TMP9]], [[MUL4]]
|
||||
// CHECK12-NEXT: [[MUL5:%.*]] = mul nsw i32 [[SUB]], 1
|
||||
// CHECK12-NEXT: [[ADD6:%.*]] = add nsw i32 0, [[MUL5]]
|
||||
// CHECK12-NEXT: store i32 [[ADD6]], i32* [[J]], align 4
|
||||
// CHECK12-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK12-NEXT: store i32 [[ADD6]], i32* [[J]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x [2 x i32]], [10 x [2 x i32]]* [[TMP0]], i32 0, i32 [[TMP11]]
|
||||
// CHECK12-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4
|
||||
// CHECK12-NEXT: [[TMP12:%.*]] = load i32, i32* [[J]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[ARRAYIDX]], i32 0, i32 [[TMP12]]
|
||||
// CHECK12-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4
|
||||
// CHECK12-NEXT: store i32 0, i32* [[ARRAYIDX7]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK12: omp.body.continue:
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK12: omp.inner.for.inc:
|
||||
// CHECK12-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK12-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK12-NEXT: store i32 [[ADD8]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK12-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK12: omp.inner.for.end:
|
||||
// CHECK12-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK12: omp.loop.exit:
|
||||
|
@ -2826,7 +2826,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK12-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK12-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK12-NEXT: ret void
|
||||
|
|
|
@ -164,7 +164,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK1: omp_offload.failed:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK1: omp_offload.cont:
|
||||
// CHECK1-NEXT: [[A2:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -183,7 +183,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED7:%.*]], label [[OMP_OFFLOAD_CONT8:%.*]]
|
||||
// CHECK1: omp_offload.failed7:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT8]]
|
||||
// CHECK1: omp_offload.cont8:
|
||||
// CHECK1-NEXT: [[A9:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -202,7 +202,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK1-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED14:%.*]], label [[OMP_OFFLOAD_CONT15:%.*]]
|
||||
// CHECK1: omp_offload.failed14:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT15]]
|
||||
// CHECK1: omp_offload.cont15:
|
||||
// CHECK1-NEXT: [[A16:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -222,7 +222,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -307,7 +307,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -392,7 +392,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..4
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -484,7 +484,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -532,7 +532,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK2: omp_offload.failed:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK2: omp_offload.cont:
|
||||
// CHECK2-NEXT: [[A2:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -551,7 +551,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED7:%.*]], label [[OMP_OFFLOAD_CONT8:%.*]]
|
||||
// CHECK2: omp_offload.failed7:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT8]]
|
||||
// CHECK2: omp_offload.cont8:
|
||||
// CHECK2-NEXT: [[A9:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -570,7 +570,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK2-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED14:%.*]], label [[OMP_OFFLOAD_CONT15:%.*]]
|
||||
// CHECK2: omp_offload.failed14:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT15]]
|
||||
// CHECK2: omp_offload.cont15:
|
||||
// CHECK2-NEXT: [[A16:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -590,7 +590,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -675,7 +675,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -760,7 +760,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..4
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -852,7 +852,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -900,7 +900,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK3: omp_offload.failed:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK3: omp_offload.cont:
|
||||
// CHECK3-NEXT: [[A2:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -919,7 +919,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED7:%.*]], label [[OMP_OFFLOAD_CONT8:%.*]]
|
||||
// CHECK3: omp_offload.failed7:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT8]]
|
||||
// CHECK3: omp_offload.cont8:
|
||||
// CHECK3-NEXT: [[A9:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -938,7 +938,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK3-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED14:%.*]], label [[OMP_OFFLOAD_CONT15:%.*]]
|
||||
// CHECK3: omp_offload.failed14:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT15]]
|
||||
// CHECK3: omp_offload.cont15:
|
||||
// CHECK3-NEXT: [[A16:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -958,7 +958,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1042,7 +1042,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1126,7 +1126,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..4
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1217,7 +1217,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -1265,7 +1265,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK4: omp_offload.failed:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR2:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l28(%struct.SS* [[THIS1]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK4: omp_offload.cont:
|
||||
// CHECK4-NEXT: [[A2:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -1284,7 +1284,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED7:%.*]], label [[OMP_OFFLOAD_CONT8:%.*]]
|
||||
// CHECK4: omp_offload.failed7:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l32(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT8]]
|
||||
// CHECK4: omp_offload.cont8:
|
||||
// CHECK4-NEXT: [[A9:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -1303,7 +1303,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK4-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED14:%.*]], label [[OMP_OFFLOAD_CONT15:%.*]]
|
||||
// CHECK4: omp_offload.failed14:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l36(%struct.SS* [[THIS1]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT15]]
|
||||
// CHECK4: omp_offload.cont15:
|
||||
// CHECK4-NEXT: [[A16:%.*]] = getelementptr inbounds [[STRUCT_SS]], %struct.SS* [[THIS1]], i32 0, i32 0
|
||||
|
@ -1323,7 +1323,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1407,7 +1407,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1491,7 +1491,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..4
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1582,7 +1582,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -2180,7 +2180,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP32]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK9: omp_offload.failed:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i64 [[TMP4]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i64 [[TMP4]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK9: omp_offload.cont:
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -2236,7 +2236,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED16:%.*]], label [[OMP_OFFLOAD_CONT17:%.*]]
|
||||
// CHECK9: omp_offload.failed16:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i64 [[TMP34]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i64 [[TMP34]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT17]]
|
||||
// CHECK9: omp_offload.cont17:
|
||||
// CHECK9-NEXT: [[TMP63:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -2308,7 +2308,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP101:%.*]] = icmp ne i32 [[TMP100]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP101]], label [[OMP_OFFLOAD_FAILED33:%.*]], label [[OMP_OFFLOAD_CONT34:%.*]]
|
||||
// CHECK9: omp_offload.failed33:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i64 [[TMP65]], i64 [[TMP1]], i32* [[VLA]], i64 [[TMP67]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i64 [[TMP65]], i64 [[TMP1]], i32* [[VLA]], i64 [[TMP67]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT34]]
|
||||
// CHECK9: omp_offload.cont34:
|
||||
// CHECK9-NEXT: [[TMP102:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -2342,7 +2342,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2470,7 +2470,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2606,7 +2606,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2734,7 +2734,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@_Z5tmainIiLi10EEiT_
|
||||
// CHECK9-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK9-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK9-NEXT: [[A:%.*]] = alloca [10 x i32], align 4
|
||||
|
@ -2766,7 +2766,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK9: omp_offload.failed:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK9: omp_offload.cont:
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0
|
||||
|
@ -2784,7 +2784,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]
|
||||
// CHECK9: omp_offload.failed5:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT6]]
|
||||
// CHECK9: omp_offload.cont6:
|
||||
// CHECK9-NEXT: [[TMP18:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0
|
||||
|
@ -2802,7 +2802,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK9-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]
|
||||
// CHECK9: omp_offload.failed11:
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK9-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK9-NEXT: br label [[OMP_OFFLOAD_CONT12]]
|
||||
// CHECK9: omp_offload.cont12:
|
||||
// CHECK9-NEXT: ret i32 0
|
||||
|
@ -2819,7 +2819,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..5
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2903,7 +2903,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..7
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2987,7 +2987,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..10
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3078,7 +3078,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK9-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK9-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK9-NEXT: ret void
|
||||
|
@ -3182,7 +3182,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP32]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK10: omp_offload.failed:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i64 [[TMP4]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i64 [[TMP4]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK10: omp_offload.cont:
|
||||
// CHECK10-NEXT: [[TMP33:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -3238,7 +3238,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED16:%.*]], label [[OMP_OFFLOAD_CONT17:%.*]]
|
||||
// CHECK10: omp_offload.failed16:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i64 [[TMP34]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i64 [[TMP34]], i64 [[TMP1]], i32* [[VLA]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT17]]
|
||||
// CHECK10: omp_offload.cont17:
|
||||
// CHECK10-NEXT: [[TMP63:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -3310,7 +3310,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP101:%.*]] = icmp ne i32 [[TMP100]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP101]], label [[OMP_OFFLOAD_FAILED33:%.*]], label [[OMP_OFFLOAD_CONT34:%.*]]
|
||||
// CHECK10: omp_offload.failed33:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i64 [[TMP65]], i64 [[TMP1]], i32* [[VLA]], i64 [[TMP67]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i64 [[TMP65]], i64 [[TMP1]], i32* [[VLA]], i64 [[TMP67]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT34]]
|
||||
// CHECK10: omp_offload.cont34:
|
||||
// CHECK10-NEXT: [[TMP102:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -3344,7 +3344,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3472,7 +3472,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3608,7 +3608,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3736,7 +3736,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@_Z5tmainIiLi10EEiT_
|
||||
// CHECK10-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK10-SAME: (i32 signext [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK10-NEXT: [[A:%.*]] = alloca [10 x i32], align 4
|
||||
|
@ -3768,7 +3768,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK10: omp_offload.failed:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK10: omp_offload.cont:
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0
|
||||
|
@ -3786,7 +3786,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]
|
||||
// CHECK10: omp_offload.failed5:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT6]]
|
||||
// CHECK10: omp_offload.cont6:
|
||||
// CHECK10-NEXT: [[TMP18:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0
|
||||
|
@ -3804,7 +3804,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK10-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK10-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]
|
||||
// CHECK10: omp_offload.failed11:
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK10-NEXT: br label [[OMP_OFFLOAD_CONT12]]
|
||||
// CHECK10: omp_offload.cont12:
|
||||
// CHECK10-NEXT: ret i32 0
|
||||
|
@ -3821,7 +3821,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..5
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3905,7 +3905,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..7
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3989,7 +3989,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..10
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -4080,7 +4080,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK10-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK10-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK10-NEXT: ret void
|
||||
|
@ -4183,7 +4183,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP32]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK11: omp_offload.failed:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i32 [[TMP3]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i32 [[TMP3]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK11: omp_offload.cont:
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -4239,7 +4239,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP63:%.*]] = icmp ne i32 [[TMP62]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP63]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]
|
||||
// CHECK11: omp_offload.failed15:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i32 [[TMP34]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i32 [[TMP34]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT16]]
|
||||
// CHECK11: omp_offload.cont16:
|
||||
// CHECK11-NEXT: [[TMP64:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -4310,7 +4310,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP103:%.*]] = icmp ne i32 [[TMP102]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP103]], label [[OMP_OFFLOAD_FAILED30:%.*]], label [[OMP_OFFLOAD_CONT31:%.*]]
|
||||
// CHECK11: omp_offload.failed30:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i32 [[TMP66]], i32 [[TMP0]], i32* [[VLA]], i32 [[TMP68]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i32 [[TMP66]], i32 [[TMP0]], i32* [[VLA]], i32 [[TMP68]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT31]]
|
||||
// CHECK11: omp_offload.cont31:
|
||||
// CHECK11-NEXT: [[TMP104:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -4342,7 +4342,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -4466,7 +4466,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -4596,7 +4596,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -4721,7 +4721,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@_Z5tmainIiLi10EEiT_
|
||||
// CHECK11-SAME: (i32 [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK11-SAME: (i32 [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[A:%.*]] = alloca [10 x i32], align 4
|
||||
|
@ -4753,7 +4753,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK11: omp_offload.failed:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK11: omp_offload.cont:
|
||||
// CHECK11-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0
|
||||
|
@ -4771,7 +4771,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]
|
||||
// CHECK11: omp_offload.failed5:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT6]]
|
||||
// CHECK11: omp_offload.cont6:
|
||||
// CHECK11-NEXT: [[TMP18:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0
|
||||
|
@ -4789,7 +4789,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK11-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]
|
||||
// CHECK11: omp_offload.failed11:
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK11-NEXT: br label [[OMP_OFFLOAD_CONT12]]
|
||||
// CHECK11: omp_offload.cont12:
|
||||
// CHECK11-NEXT: ret i32 0
|
||||
|
@ -4806,7 +4806,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..5
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -4889,7 +4889,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..7
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -4972,7 +4972,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..10
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5062,7 +5062,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK11-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK11-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK11-NEXT: ret void
|
||||
|
@ -5165,7 +5165,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP32]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK12: omp_offload.failed:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i32 [[TMP3]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR3:[0-9]+]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l94(i32 [[TMP3]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR4:[0-9]+]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK12: omp_offload.cont:
|
||||
// CHECK12-NEXT: [[TMP33:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -5221,7 +5221,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP63:%.*]] = icmp ne i32 [[TMP62]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP63]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]
|
||||
// CHECK12: omp_offload.failed15:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i32 [[TMP34]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l98(i32 [[TMP34]], i32 [[TMP0]], i32* [[VLA]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT16]]
|
||||
// CHECK12: omp_offload.cont16:
|
||||
// CHECK12-NEXT: [[TMP64:%.*]] = load i32, i32* [[N]], align 4
|
||||
|
@ -5292,7 +5292,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP103:%.*]] = icmp ne i32 [[TMP102]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP103]], label [[OMP_OFFLOAD_FAILED30:%.*]], label [[OMP_OFFLOAD_CONT31:%.*]]
|
||||
// CHECK12: omp_offload.failed30:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i32 [[TMP66]], i32 [[TMP0]], i32* [[VLA]], i32 [[TMP68]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l102(i32 [[TMP66]], i32 [[TMP0]], i32* [[VLA]], i32 [[TMP68]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT31]]
|
||||
// CHECK12: omp_offload.cont31:
|
||||
// CHECK12-NEXT: [[TMP104:%.*]] = load i32, i32* [[ARGC_ADDR]], align 4
|
||||
|
@ -5324,7 +5324,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5448,7 +5448,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5578,7 +5578,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5703,7 +5703,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@_Z5tmainIiLi10EEiT_
|
||||
// CHECK12-SAME: (i32 [[ARGC:%.*]]) #[[ATTR4:[0-9]+]] comdat {
|
||||
// CHECK12-SAME: (i32 [[ARGC:%.*]]) #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[ARGC_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[A:%.*]] = alloca [10 x i32], align 4
|
||||
|
@ -5735,7 +5735,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK12: omp_offload.failed:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l76([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK12: omp_offload.cont:
|
||||
// CHECK12-NEXT: [[TMP9:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0
|
||||
|
@ -5753,7 +5753,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP17:%.*]] = icmp ne i32 [[TMP16]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP17]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]
|
||||
// CHECK12: omp_offload.failed5:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l80([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT6]]
|
||||
// CHECK12: omp_offload.cont6:
|
||||
// CHECK12-NEXT: [[TMP18:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0
|
||||
|
@ -5771,7 +5771,7 @@ int main (int argc, char **argv) {
|
|||
// CHECK12-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK12-NEXT: br i1 [[TMP26]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]
|
||||
// CHECK12: omp_offload.failed11:
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR3]]
|
||||
// CHECK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiLi10EEiT__l84([10 x i32]* [[A]]) #[[ATTR4]]
|
||||
// CHECK12-NEXT: br label [[OMP_OFFLOAD_CONT12]]
|
||||
// CHECK12: omp_offload.cont12:
|
||||
// CHECK12-NEXT: ret i32 0
|
||||
|
@ -5788,7 +5788,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..5
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5871,7 +5871,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..7
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -5954,7 +5954,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..10
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -6044,7 +6044,7 @@ int main (int argc, char **argv) {
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK12-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK12-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK12-NEXT: ret void
|
||||
|
|
|
@ -358,7 +358,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -435,40 +435,40 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[CMP7:%.*]] = icmp sle i32 [[TMP12]], [[TMP13]]
|
||||
// CHECK1-NEXT: br i1 [[CMP7]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK1: omp.inner.for.cond.cleanup:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP14]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[CONV]], align 8
|
||||
// CHECK1-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[CONV]], align 8, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP16]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK1-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK1-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[IDXPROM8:%.*]] = sext i32 [[TMP17]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR3]], i64 0, i64 [[IDXPROM8]]
|
||||
// CHECK1-NEXT: [[TMP18:%.*]] = bitcast %struct.S* [[ARRAYIDX9]] to i8*
|
||||
// CHECK1-NEXT: [[TMP19:%.*]] = bitcast %struct.S* [[VAR5]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i64 4, i1 false)
|
||||
// CHECK1-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = load i32, i32* [[CONV1]], align 8
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i64 4, i1 false), !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = load i32, i32* [[CONV1]], align 8, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD10:%.*]] = add nsw i32 [[TMP21]], [[TMP20]]
|
||||
// CHECK1-NEXT: store i32 [[ADD10]], i32* [[CONV1]], align 8
|
||||
// CHECK1-NEXT: store i32 [[ADD10]], i32* [[CONV1]], align 8, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD11:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -530,7 +530,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK1-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK1-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK1-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -711,7 +711,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -790,37 +790,37 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP12]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[CMP8:%.*]] = icmp sle i32 [[TMP13]], [[TMP14]]
|
||||
// CHECK1-NEXT: br i1 [[CMP8]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK1: omp.inner.for.cond.cleanup:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP15]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP16:%.*]] = load i32, i32* [[CONV]], align 8
|
||||
// CHECK1-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP16:%.*]] = load i32, i32* [[CONV]], align 8, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP17]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK1-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK1-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 8
|
||||
// CHECK1-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 8, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[IDXPROM9:%.*]] = sext i32 [[TMP19]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR3]], i64 0, i64 [[IDXPROM9]]
|
||||
// CHECK1-NEXT: [[TMP20:%.*]] = bitcast %struct.S.0* [[ARRAYIDX10]] to i8*
|
||||
// CHECK1-NEXT: [[TMP21:%.*]] = bitcast %struct.S.0* [[TMP18]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i64 4, i1 false)
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i64 4, i1 false), !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[ADD11:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -1162,7 +1162,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1239,40 +1239,40 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[CMP7:%.*]] = icmp sle i32 [[TMP12]], [[TMP13]]
|
||||
// CHECK2-NEXT: br i1 [[CMP7]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK2: omp.inner.for.cond.cleanup:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP14]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[CONV]], align 8
|
||||
// CHECK2-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[CONV]], align 8, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP16]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK2-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK2-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[IDXPROM8:%.*]] = sext i32 [[TMP17]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR3]], i64 0, i64 [[IDXPROM8]]
|
||||
// CHECK2-NEXT: [[TMP18:%.*]] = bitcast %struct.S* [[ARRAYIDX9]] to i8*
|
||||
// CHECK2-NEXT: [[TMP19:%.*]] = bitcast %struct.S* [[VAR5]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i64 4, i1 false)
|
||||
// CHECK2-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = load i32, i32* [[CONV1]], align 8
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i64 4, i1 false), !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = load i32, i32* [[CONV1]], align 8, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD10:%.*]] = add nsw i32 [[TMP21]], [[TMP20]]
|
||||
// CHECK2-NEXT: store i32 [[ADD10]], i32* [[CONV1]], align 8
|
||||
// CHECK2-NEXT: store i32 [[ADD10]], i32* [[CONV1]], align 8, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD11:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -1334,7 +1334,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK2-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK2-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -1515,7 +1515,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i64 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1594,37 +1594,37 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP12]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[CMP8:%.*]] = icmp sle i32 [[TMP13]], [[TMP14]]
|
||||
// CHECK2-NEXT: br i1 [[CMP8]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK2: omp.inner.for.cond.cleanup:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP15]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP16:%.*]] = load i32, i32* [[CONV]], align 8
|
||||
// CHECK2-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP16:%.*]] = load i32, i32* [[CONV]], align 8, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP17]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK2-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK2-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 8
|
||||
// CHECK2-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 8, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[IDXPROM9:%.*]] = sext i32 [[TMP19]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR3]], i64 0, i64 [[IDXPROM9]]
|
||||
// CHECK2-NEXT: [[TMP20:%.*]] = bitcast %struct.S.0* [[ARRAYIDX10]] to i8*
|
||||
// CHECK2-NEXT: [[TMP21:%.*]] = bitcast %struct.S.0* [[TMP18]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i64 4, i1 false)
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i64 4, i1 false), !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[ADD11:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD11]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -1960,7 +1960,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i32 [[SIVAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i32 [[SIVAR:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2035,38 +2035,38 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[CMP6:%.*]] = icmp sle i32 [[TMP12]], [[TMP13]]
|
||||
// CHECK3-NEXT: br i1 [[CMP6]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK3: omp.inner.for.cond.cleanup:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP14]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC1]], i32 0, i32 [[TMP16]]
|
||||
// CHECK3-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK3-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR2]], i32 0, i32 [[TMP17]]
|
||||
// CHECK3-NEXT: [[TMP18:%.*]] = bitcast %struct.S* [[ARRAYIDX7]] to i8*
|
||||
// CHECK3-NEXT: [[TMP19:%.*]] = bitcast %struct.S* [[VAR4]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i32 4, i1 false)
|
||||
// CHECK3-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = load i32, i32* [[SIVAR_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i32 4, i1 false), !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = load i32, i32* [[SIVAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP21]], [[TMP20]]
|
||||
// CHECK3-NEXT: store i32 [[ADD8]], i32* [[SIVAR_ADDR]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD8]], i32* [[SIVAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -2128,7 +2128,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK3-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK3-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -2306,7 +2306,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2384,35 +2384,35 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP12]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[CMP8:%.*]] = icmp sle i32 [[TMP13]], [[TMP14]]
|
||||
// CHECK3-NEXT: br i1 [[CMP8]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK3: omp.inner.for.cond.cleanup:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP15]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP16:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP16:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i32 0, i32 [[TMP17]]
|
||||
// CHECK3-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK3-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 4
|
||||
// CHECK3-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR3]], i32 0, i32 [[TMP19]]
|
||||
// CHECK3-NEXT: [[TMP20:%.*]] = bitcast %struct.S.0* [[ARRAYIDX9]] to i8*
|
||||
// CHECK3-NEXT: [[TMP21:%.*]] = bitcast %struct.S.0* [[TMP18]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i32 4, i1 false)
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i32 4, i1 false), !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ADD10:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD10]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD10]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -2748,7 +2748,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i32 [[SIVAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S* nonnull align 4 dereferenceable(4) [[VAR:%.*]], i32 [[SIVAR:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2823,38 +2823,38 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP11]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[CMP6:%.*]] = icmp sle i32 [[TMP12]], [[TMP13]]
|
||||
// CHECK4-NEXT: br i1 [[CMP6]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK4: omp.inner.for.cond.cleanup:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP14]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP16:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC1]], i32 0, i32 [[TMP16]]
|
||||
// CHECK4-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK4-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP15]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR2]], i32 0, i32 [[TMP17]]
|
||||
// CHECK4-NEXT: [[TMP18:%.*]] = bitcast %struct.S* [[ARRAYIDX7]] to i8*
|
||||
// CHECK4-NEXT: [[TMP19:%.*]] = bitcast %struct.S* [[VAR4]] to i8*
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i32 4, i1 false)
|
||||
// CHECK4-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP21:%.*]] = load i32, i32* [[SIVAR_ADDR]], align 4
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP18]], i8* align 4 [[TMP19]], i32 4, i1 false), !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP20:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP21:%.*]] = load i32, i32* [[SIVAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD8:%.*]] = add nsw i32 [[TMP21]], [[TMP20]]
|
||||
// CHECK4-NEXT: store i32 [[ADD8]], i32* [[SIVAR_ADDR]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD8]], i32* [[SIVAR_ADDR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD9:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD9]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -2916,7 +2916,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK4-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK4-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -3094,7 +3094,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR4]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [2 x i32]* nonnull align 4 dereferenceable(8) [[VEC:%.*]], i32 [[T_VAR:%.*]], [2 x %struct.S.0]* nonnull align 4 dereferenceable(8) [[S_ARR:%.*]], %struct.S.0* nonnull align 4 dereferenceable(4) [[VAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -3172,35 +3172,35 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP12]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[CMP8:%.*]] = icmp sle i32 [[TMP13]], [[TMP14]]
|
||||
// CHECK4-NEXT: br i1 [[CMP8]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK4: omp.inner.for.cond.cleanup:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP15]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP16:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4
|
||||
// CHECK4-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP16:%.*]] = load i32, i32* [[T_VAR_ADDR]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP17:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC2]], i32 0, i32 [[TMP17]]
|
||||
// CHECK4-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK4-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 4
|
||||
// CHECK4-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP16]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP18:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP7]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP19:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR3]], i32 0, i32 [[TMP19]]
|
||||
// CHECK4-NEXT: [[TMP20:%.*]] = bitcast %struct.S.0* [[ARRAYIDX9]] to i8*
|
||||
// CHECK4-NEXT: [[TMP21:%.*]] = bitcast %struct.S.0* [[TMP18]] to i8*
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i32 4, i1 false)
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP20]], i8* align 4 [[TMP21]], i32 4, i1 false), !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP22:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ADD10:%.*]] = add nsw i32 [[TMP22]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD10]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD10]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -4777,7 +4777,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[G:%.*]], i64 [[G1:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[G:%.*]], i64 [[G1:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR6:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -4824,35 +4824,35 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK9: omp.inner.for.cond:
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[CMP4:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK9-NEXT: br i1 [[CMP4]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK9: omp.inner.for.body:
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK9-NEXT: store i32 1, i32* [[CONV]], align 8
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP]], align 8
|
||||
// CHECK9-NEXT: store volatile i32 1, i32* [[TMP8]], align 4
|
||||
// CHECK9-NEXT: store i32 2, i32* [[CONV2]], align 8
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32 1, i32* [[CONV]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store volatile i32 1, i32* [[TMP8]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32 2, i32* [[CONV2]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[CONV]], i32** [[TMP9]], align 8
|
||||
// CHECK9-NEXT: store i32* [[CONV]], i32** [[TMP9]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 1
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32*, i32** [[TMP]], align 8
|
||||
// CHECK9-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32*, i32** [[TMP]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 2
|
||||
// CHECK9-NEXT: store i32* [[CONV2]], i32** [[TMP12]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]])
|
||||
// CHECK9-NEXT: store i32* [[CONV2]], i32** [[TMP12]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK9: omp.inner.for.inc:
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK9-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK9-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK9: omp.inner.for.end:
|
||||
// CHECK9-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK9: omp.loop.exit:
|
||||
|
@ -5041,7 +5041,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[G:%.*]], i64 [[G1:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR5]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[G:%.*]], i64 [[G1:%.*]], i64 [[SIVAR:%.*]]) #[[ATTR6:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -5088,35 +5088,35 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK10: omp.inner.for.cond:
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[CMP4:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK10-NEXT: br i1 [[CMP4]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK10: omp.inner.for.body:
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK10-NEXT: store i32 1, i32* [[CONV]], align 8
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP]], align 8
|
||||
// CHECK10-NEXT: store volatile i32 1, i32* [[TMP8]], align 4
|
||||
// CHECK10-NEXT: store i32 2, i32* [[CONV2]], align 8
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32 1, i32* [[CONV]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32*, i32** [[TMP]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store volatile i32 1, i32* [[TMP8]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32 2, i32* [[CONV2]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[CONV]], i32** [[TMP9]], align 8
|
||||
// CHECK10-NEXT: store i32* [[CONV]], i32** [[TMP9]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 1
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32*, i32** [[TMP]], align 8
|
||||
// CHECK10-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32*, i32** [[TMP]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 2
|
||||
// CHECK10-NEXT: store i32* [[CONV2]], i32** [[TMP12]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]])
|
||||
// CHECK10-NEXT: store i32* [[CONV2]], i32** [[TMP12]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK10: omp.inner.for.inc:
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK10-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK10-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK10: omp.inner.for.end:
|
||||
// CHECK10-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK10: omp.loop.exit:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -258,7 +258,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -309,40 +309,40 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[CMP1:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK1-NEXT: br i1 [[CMP1]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK1: omp.inner.for.cond.cleanup:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP9]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK1-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[IDXPROM2:%.*]] = sext i32 [[TMP10]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX3:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR]], i64 0, i64 [[IDXPROM2]]
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = bitcast %struct.S* [[ARRAYIDX3]] to i8*
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[VAR]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i64 4, i1 false)
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i64 4, i1 false), !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP14]], [[TMP13]]
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[SIVAR]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[SIVAR]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP15]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -371,7 +371,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK1-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK1-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK1-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -446,7 +446,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -500,37 +500,37 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK1-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK1: omp.inner.for.cond.cleanup:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP9]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK1-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 8
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 8, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[IDXPROM4:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK1-NEXT: [[ARRAYIDX5:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR]], i64 0, i64 [[IDXPROM4]]
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = bitcast %struct.S.0* [[ARRAYIDX5]] to i8*
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = bitcast %struct.S.0* [[TMP10]] to i8*
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i64 4, i1 false)
|
||||
// CHECK1-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i64 4, i1 false), !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[ADD6:%.*]] = add nsw i32 [[TMP14]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD6]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD6]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -760,7 +760,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -811,40 +811,40 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[CMP1:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK2-NEXT: br i1 [[CMP1]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK2: omp.inner.for.cond.cleanup:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP9]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK2-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[IDXPROM2:%.*]] = sext i32 [[TMP10]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX3:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR]], i64 0, i64 [[IDXPROM2]]
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = bitcast %struct.S* [[ARRAYIDX3]] to i8*
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[VAR]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i64 4, i1 false)
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i64 4, i1 false), !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP14]], [[TMP13]]
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[SIVAR]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[SIVAR]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP15]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -873,7 +873,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK2-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK2-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -948,7 +948,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1002,37 +1002,37 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK2-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK2: omp.inner.for.cond.cleanup:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP9]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i64 0, i64 [[IDXPROM]]
|
||||
// CHECK2-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 8
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 8, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[IDXPROM4:%.*]] = sext i32 [[TMP11]] to i64
|
||||
// CHECK2-NEXT: [[ARRAYIDX5:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR]], i64 0, i64 [[IDXPROM4]]
|
||||
// CHECK2-NEXT: [[TMP12:%.*]] = bitcast %struct.S.0* [[ARRAYIDX5]] to i8*
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = bitcast %struct.S.0* [[TMP10]] to i8*
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i64 4, i1 false)
|
||||
// CHECK2-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i64 4, i1 false), !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[ADD6:%.*]] = add nsw i32 [[TMP14]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD6]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD6]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -1262,7 +1262,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1313,38 +1313,38 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[CMP1:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK3-NEXT: br i1 [[CMP1]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK3: omp.inner.for.cond.cleanup:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i32 0, i32 [[TMP9]]
|
||||
// CHECK3-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR]], i32 0, i32 [[TMP10]]
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = bitcast %struct.S* [[ARRAYIDX2]] to i8*
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[VAR]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i32 4, i1 false)
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i32 4, i1 false), !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP14]], [[TMP13]]
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[SIVAR]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[SIVAR]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP15]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -1373,7 +1373,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK3-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK3-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -1448,7 +1448,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1502,35 +1502,35 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK3-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK3: omp.inner.for.cond.cleanup:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i32 0, i32 [[TMP9]]
|
||||
// CHECK3-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 4
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR]], i32 0, i32 [[TMP11]]
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = bitcast %struct.S.0* [[ARRAYIDX4]] to i8*
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = bitcast %struct.S.0* [[TMP10]] to i8*
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i32 4, i1 false)
|
||||
// CHECK3-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i32 4, i1 false), !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP14]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -1760,7 +1760,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1811,38 +1811,38 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[CMP1:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK4-NEXT: br i1 [[CMP1]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK4: omp.inner.for.cond.cleanup:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i32 0, i32 [[TMP9]]
|
||||
// CHECK4-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x %struct.S], [2 x %struct.S]* [[S_ARR]], i32 0, i32 [[TMP10]]
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = bitcast %struct.S* [[ARRAYIDX2]] to i8*
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = bitcast %struct.S* [[VAR]] to i8*
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i32 4, i1 false)
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP11]], i8* align 4 [[TMP12]], i32 4, i1 false), !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[SIVAR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP14]], [[TMP13]]
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[SIVAR]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[SIVAR]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP15:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP15]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -1871,7 +1871,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK4-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK4-SAME: () #[[ATTR7:[0-9]+]] comdat {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[TEST:%.*]] = alloca [[STRUCT_S_0:%.*]], align 4
|
||||
|
@ -1946,7 +1946,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..3
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR4]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -2000,35 +2000,35 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK4-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_COND_CLEANUP:%.*]]
|
||||
// CHECK4: omp.inner.for.cond.cleanup:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[T_VAR]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], [2 x i32]* [[VEC]], i32 0, i32 [[TMP9]]
|
||||
// CHECK4-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 4
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: store i32 [[TMP8]], i32* [[ARRAYIDX]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load %struct.S.0*, %struct.S.0** [[_TMP2]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds [2 x %struct.S.0], [2 x %struct.S.0]* [[S_ARR]], i32 0, i32 [[TMP11]]
|
||||
// CHECK4-NEXT: [[TMP12:%.*]] = bitcast %struct.S.0* [[ARRAYIDX4]] to i8*
|
||||
// CHECK4-NEXT: [[TMP13:%.*]] = bitcast %struct.S.0* [[TMP10]] to i8*
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i32 4, i1 false)
|
||||
// CHECK4-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 [[TMP12]], i8* align 4 [[TMP13]], i32 4, i1 false), !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP14:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ADD5:%.*]] = add nsw i32 [[TMP14]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD5]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -3774,7 +3774,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR6:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -3817,35 +3817,35 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK9: omp.inner.for.cond:
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK9-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK9: omp.inner.for.body:
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK9-NEXT: store i32 1, i32* [[G]], align 4
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32*, i32** [[_TMP2]], align 8
|
||||
// CHECK9-NEXT: store volatile i32 1, i32* [[TMP8]], align 4
|
||||
// CHECK9-NEXT: store i32 2, i32* [[SIVAR]], align 4
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32 1, i32* [[G]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32*, i32** [[_TMP2]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store volatile i32 1, i32* [[TMP8]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32 2, i32* [[SIVAR]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[G]], i32** [[TMP9]], align 8
|
||||
// CHECK9-NEXT: store i32* [[G]], i32** [[TMP9]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 1
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32*, i32** [[_TMP2]], align 8
|
||||
// CHECK9-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = load i32*, i32** [[_TMP2]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 2
|
||||
// CHECK9-NEXT: store i32* [[SIVAR]], i32** [[TMP12]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]])
|
||||
// CHECK9-NEXT: store i32* [[SIVAR]], i32** [[TMP12]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK9: omp.inner.for.inc:
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK9-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK9-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK9: omp.inner.for.end:
|
||||
// CHECK9-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK9: omp.loop.exit:
|
||||
|
@ -4007,7 +4007,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR5]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]]) #[[ATTR6:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -4050,35 +4050,35 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[TMP4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK10: omp.inner.for.cond:
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[CMP3:%.*]] = icmp sle i32 [[TMP5]], [[TMP6]]
|
||||
// CHECK10-NEXT: br i1 [[CMP3]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK10: omp.inner.for.body:
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1
|
||||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK10-NEXT: store i32 1, i32* [[G]], align 4
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32*, i32** [[_TMP2]], align 8
|
||||
// CHECK10-NEXT: store volatile i32 1, i32* [[TMP8]], align 4
|
||||
// CHECK10-NEXT: store i32 2, i32* [[SIVAR]], align 4
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32 1, i32* [[G]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32*, i32** [[_TMP2]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store volatile i32 1, i32* [[TMP8]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32 2, i32* [[SIVAR]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[G]], i32** [[TMP9]], align 8
|
||||
// CHECK10-NEXT: store i32* [[G]], i32** [[TMP9]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 1
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32*, i32** [[_TMP2]], align 8
|
||||
// CHECK10-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = load i32*, i32** [[_TMP2]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: store i32* [[TMP11]], i32** [[TMP10]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 2
|
||||
// CHECK10-NEXT: store i32* [[SIVAR]], i32** [[TMP12]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]])
|
||||
// CHECK10-NEXT: store i32* [[SIVAR]], i32** [[TMP12]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(24) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK10: omp.inner.for.inc:
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP13:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP13]], 1
|
||||
// CHECK10-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK10-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK10: omp.inner.for.end:
|
||||
// CHECK10-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK10: omp.loop.exit:
|
||||
|
|
|
@ -102,7 +102,7 @@ int main() {
|
|||
// CHECK1-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK1: omp_offload.failed:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR2:[0-9]+]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR3:[0-9]+]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK1: omp_offload.cont:
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = call signext i32 @_Z5tmainIiET_v()
|
||||
|
@ -120,7 +120,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -161,27 +161,27 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK1-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK1-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -219,7 +219,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK1-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -243,7 +243,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK1-SAME: () #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK1-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[T_VAR:%.*]] = alloca i32, align 4
|
||||
// CHECK1-NEXT: [[VEC:%.*]] = alloca [2 x i32], align 4
|
||||
|
@ -269,7 +269,7 @@ int main() {
|
|||
// CHECK1-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP9]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK1: omp_offload.failed:
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR2]]
|
||||
// CHECK1-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR3]]
|
||||
// CHECK1-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK1: omp_offload.cont:
|
||||
// CHECK1-NEXT: ret i32 0
|
||||
|
@ -286,7 +286,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -327,27 +327,27 @@ int main() {
|
|||
// CHECK1-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK1: omp.inner.for.cond:
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK1-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK1: omp.inner.for.body:
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK1-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4
|
||||
// CHECK1-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK1: omp.body.continue:
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK1: omp.inner.for.inc:
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK1-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK1-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK1: omp.inner.for.end:
|
||||
// CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK1: omp.loop.exit:
|
||||
|
@ -385,7 +385,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func.2
|
||||
// CHECK1-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3]] {
|
||||
// CHECK1-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -409,7 +409,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR8:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -439,7 +439,7 @@ int main() {
|
|||
// CHECK2-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK2: omp_offload.failed:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR2:[0-9]+]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR3:[0-9]+]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK2: omp_offload.cont:
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = call signext i32 @_Z5tmainIiET_v()
|
||||
|
@ -457,7 +457,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -498,27 +498,27 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK2-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK2-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP4:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !5
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP6:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -556,7 +556,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK2-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -580,7 +580,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK2-SAME: () #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK2-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[T_VAR:%.*]] = alloca i32, align 4
|
||||
// CHECK2-NEXT: [[VEC:%.*]] = alloca [2 x i32], align 4
|
||||
|
@ -606,7 +606,7 @@ int main() {
|
|||
// CHECK2-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP9]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK2: omp_offload.failed:
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR2]]
|
||||
// CHECK2-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR3]]
|
||||
// CHECK2-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK2: omp_offload.cont:
|
||||
// CHECK2-NEXT: ret i32 0
|
||||
|
@ -623,7 +623,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -664,27 +664,27 @@ int main() {
|
|||
// CHECK2-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK2: omp.inner.for.cond:
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK2-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK2-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK2: omp.inner.for.body:
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK2-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4
|
||||
// CHECK2-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK2: omp.body.continue:
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK2: omp.inner.for.inc:
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
|
||||
// CHECK2-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !11
|
||||
// CHECK2-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
|
||||
// CHECK2: omp.inner.for.end:
|
||||
// CHECK2-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK2: omp.loop.exit:
|
||||
|
@ -722,7 +722,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func.2
|
||||
// CHECK2-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3]] {
|
||||
// CHECK2-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK2-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -746,7 +746,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR8:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -776,7 +776,7 @@ int main() {
|
|||
// CHECK3-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK3: omp_offload.failed:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR2:[0-9]+]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR3:[0-9]+]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK3: omp_offload.cont:
|
||||
// CHECK3-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
|
@ -794,7 +794,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -835,27 +835,27 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK3-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -893,7 +893,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK3-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 4
|
||||
// CHECK3-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 4
|
||||
|
@ -917,7 +917,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK3-SAME: () #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK3-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[T_VAR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[VEC:%.*]] = alloca [2 x i32], align 4
|
||||
|
@ -943,7 +943,7 @@ int main() {
|
|||
// CHECK3-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP9]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK3: omp_offload.failed:
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR2]]
|
||||
// CHECK3-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR3]]
|
||||
// CHECK3-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK3: omp_offload.cont:
|
||||
// CHECK3-NEXT: ret i32 0
|
||||
|
@ -960,7 +960,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1001,27 +1001,27 @@ int main() {
|
|||
// CHECK3-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK3: omp.inner.for.cond:
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK3-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK3: omp.inner.for.body:
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK3-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4
|
||||
// CHECK3-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK3: omp.body.continue:
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK3: omp.inner.for.inc:
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK3-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK3-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK3: omp.inner.for.end:
|
||||
// CHECK3-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK3: omp.loop.exit:
|
||||
|
@ -1059,7 +1059,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func.2
|
||||
// CHECK3-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3]] {
|
||||
// CHECK3-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 4
|
||||
// CHECK3-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 4
|
||||
|
@ -1083,7 +1083,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR8:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -1113,7 +1113,7 @@ int main() {
|
|||
// CHECK4-NEXT: [[TMP8:%.*]] = icmp ne i32 [[TMP7]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP8]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK4: omp_offload.failed:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR2:[0-9]+]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l60(i32* @_ZZ4mainE5sivar) #[[ATTR3:[0-9]+]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK4: omp_offload.cont:
|
||||
// CHECK4-NEXT: [[CALL:%.*]] = call i32 @_Z5tmainIiET_v()
|
||||
|
@ -1131,7 +1131,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1172,27 +1172,27 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK4-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !6
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP7:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -1230,7 +1230,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK4-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 4
|
||||
// CHECK4-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 4
|
||||
|
@ -1254,7 +1254,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@_Z5tmainIiET_v
|
||||
// CHECK4-SAME: () #[[ATTR5:[0-9]+]] comdat {
|
||||
// CHECK4-SAME: () #[[ATTR6:[0-9]+]] comdat {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[T_VAR:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[VEC:%.*]] = alloca [2 x i32], align 4
|
||||
|
@ -1280,7 +1280,7 @@ int main() {
|
|||
// CHECK4-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
|
||||
// CHECK4-NEXT: br i1 [[TMP9]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]
|
||||
// CHECK4: omp_offload.failed:
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR2]]
|
||||
// CHECK4-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z5tmainIiET_v_l32(i32* [[T_VAR]]) #[[ATTR3]]
|
||||
// CHECK4-NEXT: br label [[OMP_OFFLOAD_CONT]]
|
||||
// CHECK4: omp_offload.cont:
|
||||
// CHECK4-NEXT: ret i32 0
|
||||
|
@ -1297,7 +1297,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..1
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[T_VAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
|
||||
|
@ -1338,27 +1338,27 @@ int main() {
|
|||
// CHECK4-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK4: omp.inner.for.cond:
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK4-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK4-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK4: omp.inner.for.body:
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK4-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[TMP10:%.*]] = load i32, i32* [[T_VAR1]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4
|
||||
// CHECK4-NEXT: store i32 [[ADD3]], i32* [[T_VAR1]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK4: omp.body.continue:
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK4: omp.inner.for.inc:
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: [[TMP11:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP11]], 1
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP9:![0-9]+]]
|
||||
// CHECK4-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !12
|
||||
// CHECK4-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
|
||||
// CHECK4: omp.inner.for.end:
|
||||
// CHECK4-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK4: omp.loop.exit:
|
||||
|
@ -1396,7 +1396,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func.2
|
||||
// CHECK4-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR3]] {
|
||||
// CHECK4-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 4
|
||||
// CHECK4-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 4
|
||||
|
@ -1420,7 +1420,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR8:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -1847,7 +1847,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -1889,30 +1889,30 @@ int main() {
|
|||
// CHECK9-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK9: omp.inner.for.cond:
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK9-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK9: omp.inner.for.body:
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK9-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK9-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK9-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK9-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK9-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8, !llvm.access.group !4
|
||||
// CHECK9-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK9: omp.body.continue:
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK9: omp.inner.for.inc:
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP12]], 1
|
||||
// CHECK9-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK9-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK9-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK9: omp.inner.for.end:
|
||||
// CHECK9-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK9: omp.loop.exit:
|
||||
|
@ -1950,7 +1950,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK9-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK9-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK9-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -1974,7 +1974,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK9-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK9-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK9-NEXT: ret void
|
||||
|
@ -2001,7 +2001,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined.
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32* nonnull align 4 dereferenceable(4) [[SIVAR:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
|
||||
|
@ -2043,30 +2043,30 @@ int main() {
|
|||
// CHECK10-NEXT: store i32 [[TMP5]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND:%.*]]
|
||||
// CHECK10: omp.inner.for.cond:
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4
|
||||
// CHECK10-NEXT: [[TMP6:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP7:%.*]] = load i32, i32* [[DOTOMP_UB]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[CMP2:%.*]] = icmp sle i32 [[TMP6]], [[TMP7]]
|
||||
// CHECK10-NEXT: br i1 [[CMP2]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
|
||||
// CHECK10: omp.inner.for.body:
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP8:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP8]], 1
|
||||
// CHECK10-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]]
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4
|
||||
// CHECK10-NEXT: store i32 [[ADD]], i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP10:%.*]] = load i32, i32* [[SIVAR1]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[ADD3:%.*]] = add nsw i32 [[TMP10]], [[TMP9]]
|
||||
// CHECK10-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4
|
||||
// CHECK10-NEXT: store i32 [[ADD3]], i32* [[SIVAR1]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[CLASS_ANON_0]], %class.anon.0* [[REF_TMP]], i32 0, i32 0
|
||||
// CHECK10-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]])
|
||||
// CHECK10-NEXT: store i32* [[SIVAR1]], i32** [[TMP11]], align 8, !llvm.access.group !4
|
||||
// CHECK10-NEXT: call void @"_ZZZ4mainENK3$_0clEvENKUlvE_clEv"(%class.anon.0* nonnull align 8 dereferenceable(8) [[REF_TMP]]), !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_BODY_CONTINUE:%.*]]
|
||||
// CHECK10: omp.body.continue:
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_INC:%.*]]
|
||||
// CHECK10: omp.inner.for.inc:
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: [[TMP12:%.*]] = load i32, i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: [[ADD4:%.*]] = add nsw i32 [[TMP12]], 1
|
||||
// CHECK10-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP3:![0-9]+]]
|
||||
// CHECK10-NEXT: store i32 [[ADD4]], i32* [[DOTOMP_IV]], align 4, !llvm.access.group !4
|
||||
// CHECK10-NEXT: br label [[OMP_INNER_FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
|
||||
// CHECK10: omp.inner.for.end:
|
||||
// CHECK10-NEXT: br label [[OMP_LOOP_EXIT:%.*]]
|
||||
// CHECK10: omp.loop.exit:
|
||||
|
@ -2104,7 +2104,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp.reduction.reduction_func
|
||||
// CHECK10-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR4:[0-9]+]] {
|
||||
// CHECK10-SAME: (i8* [[TMP0:%.*]], i8* [[TMP1:%.*]]) #[[ATTR5:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[DOTADDR:%.*]] = alloca i8*, align 8
|
||||
// CHECK10-NEXT: [[DOTADDR1:%.*]] = alloca i8*, align 8
|
||||
|
@ -2128,7 +2128,7 @@ int main() {
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK10-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
// CHECK10-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK10-NEXT: ret void
|
||||
|
|
|
@ -482,7 +482,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -555,7 +555,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK1-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -625,7 +625,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -939,7 +939,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1012,7 +1012,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK2-SAME: () #[[ATTR1]] {
|
||||
// CHECK2-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK2-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -1082,7 +1082,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -1387,7 +1387,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1458,7 +1458,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK3-SAME: () #[[ATTR1]] {
|
||||
// CHECK3-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK3-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -1525,7 +1525,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -1830,7 +1830,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK4-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1901,7 +1901,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK4-SAME: () #[[ATTR1]] {
|
||||
// CHECK4-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK4-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -1968,7 +1968,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -2066,7 +2066,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK9-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK9-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2093,7 +2093,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK9-SAME: () #[[ATTR0]] {
|
||||
// CHECK9-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK9-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -2254,7 +2254,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK10-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK10-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK10-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2281,7 +2281,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK10-SAME: () #[[ATTR0]] {
|
||||
// CHECK10-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK10-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -2436,7 +2436,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK11-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK11-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2463,7 +2463,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK11-SAME: () #[[ATTR0]] {
|
||||
// CHECK11-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK11-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -2615,7 +2615,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK12-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK12-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK12-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2642,7 +2642,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK12-SAME: () #[[ATTR0]] {
|
||||
// CHECK12-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK12-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -3016,7 +3016,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK17-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK17-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -3089,7 +3089,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK17-SAME: () #[[ATTR1]] {
|
||||
// CHECK17-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK17-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -3159,7 +3159,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK17-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK17-NEXT: ret void
|
||||
|
@ -3473,7 +3473,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK18-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK18-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -3546,7 +3546,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK18-SAME: () #[[ATTR1]] {
|
||||
// CHECK18-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK18-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -3616,7 +3616,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK18-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK18-NEXT: ret void
|
||||
|
@ -3921,7 +3921,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK19-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK19-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -3992,7 +3992,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK19-SAME: () #[[ATTR1]] {
|
||||
// CHECK19-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK19-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -4059,7 +4059,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK19-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK19-NEXT: ret void
|
||||
|
@ -4364,7 +4364,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK20-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK20-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4435,7 +4435,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK20-SAME: () #[[ATTR1]] {
|
||||
// CHECK20-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK20-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -4502,7 +4502,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK20-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK20-NEXT: ret void
|
||||
|
@ -4600,7 +4600,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK25-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK25-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK25-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4627,7 +4627,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK25-SAME: () #[[ATTR0]] {
|
||||
// CHECK25-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK25-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -4788,7 +4788,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK26-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK26-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK26-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4815,7 +4815,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK26-SAME: () #[[ATTR0]] {
|
||||
// CHECK26-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK26-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -4970,7 +4970,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK27-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK27-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK27-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4997,7 +4997,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK27-SAME: () #[[ATTR0]] {
|
||||
// CHECK27-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK27-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
@ -5149,7 +5149,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK28-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK28-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK28-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -5176,7 +5176,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK28-SAME: () #[[ATTR0]] {
|
||||
// CHECK28-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK28-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 20, i32 0)
|
||||
|
|
|
@ -500,7 +500,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -577,7 +577,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK1-SAME: () #[[ATTR1]] {
|
||||
// CHECK1-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK1-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -596,7 +596,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK1-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK1-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -647,7 +647,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK1-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK1-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK1-NEXT: ret void
|
||||
|
@ -979,7 +979,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1056,7 +1056,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK2-SAME: () #[[ATTR1]] {
|
||||
// CHECK2-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK2-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -1075,7 +1075,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK2-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK2-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK2-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -1126,7 +1126,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK2-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK2-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK2-NEXT: entry:
|
||||
// CHECK2-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK2-NEXT: ret void
|
||||
|
@ -1448,7 +1448,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1522,7 +1522,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK3-SAME: () #[[ATTR1]] {
|
||||
// CHECK3-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK3-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -1541,7 +1541,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK3-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK3-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -1589,7 +1589,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK3-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK3-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK3-NEXT: ret void
|
||||
|
@ -1911,7 +1911,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK4-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -1985,7 +1985,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK4-SAME: () #[[ATTR1]] {
|
||||
// CHECK4-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK4-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -2004,7 +2004,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK4-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK4-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK4-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2052,7 +2052,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK4-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK4-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK4-NEXT: entry:
|
||||
// CHECK4-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK4-NEXT: ret void
|
||||
|
@ -2154,7 +2154,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK9-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK9-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2181,7 +2181,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK9-SAME: () #[[ATTR0]] {
|
||||
// CHECK9-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK9-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -2200,7 +2200,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK9-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK9-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK9-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK9-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -2346,7 +2346,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK10-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK10-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK10-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2373,7 +2373,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK10-SAME: () #[[ATTR0]] {
|
||||
// CHECK10-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK10-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -2392,7 +2392,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK10-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK10-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK10-NEXT: entry:
|
||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK10-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -2531,7 +2531,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK11-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK11-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2558,7 +2558,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK11-SAME: () #[[ATTR0]] {
|
||||
// CHECK11-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK11-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -2577,7 +2577,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK11-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK11-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK11-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -2713,7 +2713,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK12-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK12-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK12-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -2740,7 +2740,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK12-SAME: () #[[ATTR0]] {
|
||||
// CHECK12-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK12-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -2759,7 +2759,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK12-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK12-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK12-NEXT: entry:
|
||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK12-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3132,7 +3132,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK17-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK17-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -3209,7 +3209,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK17-SAME: () #[[ATTR1]] {
|
||||
// CHECK17-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK17-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -3228,7 +3228,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK17-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK17-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK17-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -3279,7 +3279,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK17-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK17-NEXT: ret void
|
||||
|
@ -3611,7 +3611,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK18-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK18-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -3688,7 +3688,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK18-SAME: () #[[ATTR1]] {
|
||||
// CHECK18-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK18-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -3707,7 +3707,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK18-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK18-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK18-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -3758,7 +3758,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK18-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK18-NEXT: ret void
|
||||
|
@ -4080,7 +4080,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK19-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK19-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4154,7 +4154,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK19-SAME: () #[[ATTR1]] {
|
||||
// CHECK19-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK19-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -4173,7 +4173,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK19-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK19-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK19-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4221,7 +4221,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK19-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK19-NEXT: ret void
|
||||
|
@ -4543,7 +4543,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK20-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR1]] {
|
||||
// CHECK20-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4617,7 +4617,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK20-SAME: () #[[ATTR1]] {
|
||||
// CHECK20-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK20-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -4636,7 +4636,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK20-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR1]] {
|
||||
// CHECK20-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK20-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -4684,7 +4684,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK20-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK20-NEXT: ret void
|
||||
|
@ -4786,7 +4786,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK25-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK25-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK25-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -4813,7 +4813,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK25-SAME: () #[[ATTR0]] {
|
||||
// CHECK25-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK25-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -4832,7 +4832,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK25-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK25-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK25-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK25-NEXT: entry:
|
||||
// CHECK25-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK25-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -4978,7 +4978,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK26-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK26-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 8
|
||||
// CHECK26-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -5005,7 +5005,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK26-SAME: () #[[ATTR0]] {
|
||||
// CHECK26-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK26-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -5024,7 +5024,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK26-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK26-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK26-SAME: (i64 [[A:%.*]], i64 [[B:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK26-NEXT: entry:
|
||||
// CHECK26-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK26-NEXT: [[B_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -5163,7 +5163,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK27-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK27-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK27-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -5190,7 +5190,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK27-SAME: () #[[ATTR0]] {
|
||||
// CHECK27-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK27-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -5209,7 +5209,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK27-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK27-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK27-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK27-NEXT: entry:
|
||||
// CHECK27-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK27-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -5345,7 +5345,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2S12r1Ei_l126
|
||||
// CHECK28-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR0]] {
|
||||
// CHECK28-SAME: (%struct.S1* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.S1*, align 4
|
||||
// CHECK28-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
|
@ -5372,7 +5372,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l88
|
||||
// CHECK28-SAME: () #[[ATTR0]] {
|
||||
// CHECK28-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB1]])
|
||||
// CHECK28-NEXT: call void @__kmpc_push_num_teams(%struct.ident_t* @[[GLOB1]], i32 [[TMP0]], i32 0, i32 20)
|
||||
|
@ -5391,7 +5391,7 @@ int bar(int n){
|
|||
//
|
||||
//
|
||||
// CHECK28-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z9ftemplateIiET_i_l93
|
||||
// CHECK28-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR0]] {
|
||||
// CHECK28-SAME: (i32 [[A:%.*]], i32 [[B:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR2]] {
|
||||
// CHECK28-NEXT: entry:
|
||||
// CHECK28-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK28-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
|
|
|
@ -3110,7 +3110,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l169
|
||||
// CHECK17-SAME: (%struct.SS* [[THIS:%.*]], i64 [[COMP:%.*]]) #[[ATTR1]] {
|
||||
// CHECK17-SAME: (%struct.SS* [[THIS:%.*]], i64 [[COMP:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK17-NEXT: [[COMP_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -3145,7 +3145,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK17-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK17-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK17-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK17-NEXT: entry:
|
||||
// CHECK17-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK17-NEXT: ret void
|
||||
|
@ -3279,7 +3279,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l169
|
||||
// CHECK18-SAME: (%struct.SS* [[THIS:%.*]], i64 [[COMP:%.*]]) #[[ATTR1]] {
|
||||
// CHECK18-SAME: (%struct.SS* [[THIS:%.*]], i64 [[COMP:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8
|
||||
// CHECK18-NEXT: [[COMP_ADDR:%.*]] = alloca i64, align 8
|
||||
|
@ -3314,7 +3314,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK18-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK18-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK18-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK18-NEXT: entry:
|
||||
// CHECK18-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK18-NEXT: ret void
|
||||
|
@ -3445,7 +3445,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l169
|
||||
// CHECK19-SAME: (%struct.SS* [[THIS:%.*]], i32 [[COMP:%.*]]) #[[ATTR1]] {
|
||||
// CHECK19-SAME: (%struct.SS* [[THIS:%.*]], i32 [[COMP:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK19-NEXT: [[COMP_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3479,7 +3479,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK19-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK19-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK19-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK19-NEXT: entry:
|
||||
// CHECK19-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK19-NEXT: ret void
|
||||
|
@ -3610,7 +3610,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2SSIiLi123ELx456EE3fooEv_l169
|
||||
// CHECK20-SAME: (%struct.SS* [[THIS:%.*]], i32 [[COMP:%.*]]) #[[ATTR1]] {
|
||||
// CHECK20-SAME: (%struct.SS* [[THIS:%.*]], i32 [[COMP:%.*]]) #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4
|
||||
// CHECK20-NEXT: [[COMP_ADDR:%.*]] = alloca i32, align 4
|
||||
|
@ -3644,7 +3644,7 @@ void foo() {
|
|||
//
|
||||
//
|
||||
// CHECK20-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg
|
||||
// CHECK20-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
// CHECK20-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
// CHECK20-NEXT: entry:
|
||||
// CHECK20-NEXT: call void @__tgt_register_requires(i64 1)
|
||||
// CHECK20-NEXT: ret void
|
||||
|
|
Loading…
Reference in New Issue