5648 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --include-generated-funcs --replace-value-regex "__omp_offloading_[0-9a-z]+_[0-9a-z]+" "reduction_size[.].+[.]" "pl_cond[.].+[.|,]" --prefix-filecheck-ir-name _2// expected-no-diagnostics3#ifndef HEADER4#define HEADER5 6///==========================================================================///7// RUN: %clang_cc1 -DCK1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK108// RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s9// 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 %s --check-prefix CK1110// RUN: %clang_cc1 -DCK1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK1211// RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s12// 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 %s --check-prefix CK1313 14// RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY00 %s15// RUN: %clang_cc1 -DCK1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s16// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY01 %s17// RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY02 %s18// RUN: %clang_cc1 -DCK1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s19// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY03 %s20#ifdef CK121 22double *g;23 24 25 26 27 28 29 30 31template<typename T>32void foo(float *&lr, T *&tr) {33 float *l;34 T *t;35 36 37#pragma omp target is_device_ptr(g)38 {39 ++g;40 }41 42 43#pragma omp target is_device_ptr(l)44 {45 ++l;46 }47 48 49#pragma omp target is_device_ptr(t)50 {51 ++t;52 }53 54 55#pragma omp target is_device_ptr(lr)56 {57 ++lr;58 }59 60 61#pragma omp target is_device_ptr(tr)62 {63 ++tr;64 }65 66 67#pragma omp target is_device_ptr(tr, lr)68 {69 ++tr;70 }71 72 73 74#pragma omp target is_device_ptr(tr, lr)75 {76 ++tr,++lr;77 }78}79 80void bar(float *&a, int *&b) {81 foo<int>(a,b);82}83 84#endif85///==========================================================================///86// RUN: %clang_cc1 -DCK2 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK2087// RUN: %clang_cc1 -DCK2 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s88// 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 %s --check-prefix CK2189// RUN: %clang_cc1 -DCK2 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK2290// RUN: %clang_cc1 -DCK2 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s91// 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 %s --check-prefix CK2392 93// RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY10 %s94// RUN: %clang_cc1 -DCK2 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s95// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY11 %s96// RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY12 %s97// RUN: %clang_cc1 -DCK2 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s98// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY13 %s99#ifdef CK2100 101 102template <typename T>103struct ST {104 T *a;105 double *&b;106 ST(double *&b) : a(0), b(b) {}107 108 void foo(double *&arg) {109 int *la = 0;110 111 112#pragma omp target is_device_ptr(a)113 {114 a++;115 }116 117 118#pragma omp target is_device_ptr(b)119 {120 b++;121 }122 123 124 125#pragma omp target is_device_ptr(a, b)126 {127 a++;128 b++;129 }130 }131};132 133void bar(double *arg){134 ST<double> A(arg);135 A.foo(arg);136 ++arg;137}138#endif139///==========================================================================///140// RUN: %clang_cc1 -DCK3 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK30141// RUN: %clang_cc1 -DCK3 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s142// 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 %s --check-prefix CK31143// RUN: %clang_cc1 -DCK3 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK32144// RUN: %clang_cc1 -DCK3 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s145// 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 %s --check-prefix CK33146 147// RUN: %clang_cc1 -DCK3 -verify -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY20 %s148// RUN: %clang_cc1 -DCK3 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s149// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY21 %s150// RUN: %clang_cc1 -DCK3 -verify -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY22 %s151// RUN: %clang_cc1 -DCK3 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s152// RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY23 %s153#ifdef CK3154 155// OMP_MAP_TARGET_PARAM = 0x20 | OMP_MAP_TO = 0x1 = 0x21156void bar() {157 __attribute__((aligned(64))) double *ptr;158 159#pragma omp target is_device_ptr(ptr)160 *ptr = 0;161}162#endif163#endif164// CK1-64-LABEL: define {{[^@]+}}@_Z3barRPfRPi165// CK1-64-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[A:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) #[[ATTR0:[0-9]+]] {166// CK1-64-NEXT: entry:167// CK1-64-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8168// CK1-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8169// CK1-64-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8170// CK1-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8171// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8172// CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8173// CK1-64-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP1]])174// CK1-64-NEXT: ret void175// CK1-64-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_176// CK1-64-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[LR:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[TR:%.*]]) #[[ATTR0]] comdat {177// CK1-64-NEXT: entry:178// CK1-64-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8179// CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8180// CK1-64-NEXT: [[L:%.*]] = alloca ptr, align 8181// CK1-64-NEXT: [[T:%.*]] = alloca ptr, align 8182// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8183// CK1-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8184// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8185// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 8186// CK1-64-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 8187// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 8188// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 8189// CK1-64-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 8190// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 8191// CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8192// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 8193// CK1-64-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 8194// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 8195// CK1-64-NEXT: [[_TMP19:%.*]] = alloca ptr, align 8196// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 8197// CK1-64-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 8198// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 8199// CK1-64-NEXT: [[_TMP26:%.*]] = alloca ptr, align 8200// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 8201// CK1-64-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 8202// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 8203// CK1-64-NEXT: [[_TMP33:%.*]] = alloca ptr, align 8204// CK1-64-NEXT: [[_TMP34:%.*]] = alloca ptr, align 8205// CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 8206// CK1-64-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 8207// CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 8208// CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8209// CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8210// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8211// CK1-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0212// CK1-64-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8213// CK1-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0214// CK1-64-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8215// CK1-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0216// CK1-64-NEXT: store ptr null, ptr [[TMP3]], align 8217// CK1-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0218// CK1-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0219// CK1-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8220// CK1-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0221// CK1-64-NEXT: store i32 2, ptr [[TMP6]], align 4222// CK1-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1223// CK1-64-NEXT: store i32 1, ptr [[TMP7]], align 4224// CK1-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2225// CK1-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8226// CK1-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3227// CK1-64-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8228// CK1-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4229// CK1-64-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8230// CK1-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5231// CK1-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8232// CK1-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6233// CK1-64-NEXT: store ptr null, ptr [[TMP12]], align 8234// CK1-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7235// CK1-64-NEXT: store ptr null, ptr [[TMP13]], align 8236// CK1-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8237// CK1-64-NEXT: store i64 0, ptr [[TMP14]], align 8238// CK1-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9239// CK1-64-NEXT: store i64 0, ptr [[TMP15]], align 8240// CK1-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10241// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4242// CK1-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11243// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4244// CK1-64-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12245// CK1-64-NEXT: store i32 0, ptr [[TMP18]], align 4246// CK1-64-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])247// CK1-64-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 0248// CK1-64-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]249// CK1-64: omp_offload.failed:250// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]251// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT]]252// CK1-64: omp_offload.cont:253// CK1-64-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 8254// CK1-64-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0255// CK1-64-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 8256// CK1-64-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0257// CK1-64-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 8258// CK1-64-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 0259// CK1-64-NEXT: store ptr null, ptr [[TMP24]], align 8260// CK1-64-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0261// CK1-64-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0262// CK1-64-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8263// CK1-64-NEXT: [[TMP27:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0264// CK1-64-NEXT: store i32 2, ptr [[TMP27]], align 4265// CK1-64-NEXT: [[TMP28:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1266// CK1-64-NEXT: store i32 1, ptr [[TMP28]], align 4267// CK1-64-NEXT: [[TMP29:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2268// CK1-64-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 8269// CK1-64-NEXT: [[TMP30:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3270// CK1-64-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 8271// CK1-64-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4272// CK1-64-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 8273// CK1-64-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5274// CK1-64-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 8275// CK1-64-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6276// CK1-64-NEXT: store ptr null, ptr [[TMP33]], align 8277// CK1-64-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7278// CK1-64-NEXT: store ptr null, ptr [[TMP34]], align 8279// CK1-64-NEXT: [[TMP35:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8280// CK1-64-NEXT: store i64 0, ptr [[TMP35]], align 8281// CK1-64-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9282// CK1-64-NEXT: store i64 0, ptr [[TMP36]], align 8283// CK1-64-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10284// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4285// CK1-64-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11286// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4287// CK1-64-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12288// CK1-64-NEXT: store i32 0, ptr [[TMP39]], align 4289// CK1-64-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])290// CK1-64-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 0291// CK1-64-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]292// CK1-64: omp_offload.failed5:293// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]294// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT6]]295// CK1-64: omp_offload.cont6:296// CK1-64-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 8297// CK1-64-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0298// CK1-64-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 8299// CK1-64-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0300// CK1-64-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 8301// CK1-64-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 0302// CK1-64-NEXT: store ptr null, ptr [[TMP45]], align 8303// CK1-64-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0304// CK1-64-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0305// CK1-64-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8306// CK1-64-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0307// CK1-64-NEXT: store i32 2, ptr [[TMP48]], align 4308// CK1-64-NEXT: [[TMP49:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1309// CK1-64-NEXT: store i32 1, ptr [[TMP49]], align 4310// CK1-64-NEXT: [[TMP50:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2311// CK1-64-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 8312// CK1-64-NEXT: [[TMP51:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3313// CK1-64-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 8314// CK1-64-NEXT: [[TMP52:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4315// CK1-64-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 8316// CK1-64-NEXT: [[TMP53:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5317// CK1-64-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 8318// CK1-64-NEXT: [[TMP54:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6319// CK1-64-NEXT: store ptr null, ptr [[TMP54]], align 8320// CK1-64-NEXT: [[TMP55:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7321// CK1-64-NEXT: store ptr null, ptr [[TMP55]], align 8322// CK1-64-NEXT: [[TMP56:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8323// CK1-64-NEXT: store i64 0, ptr [[TMP56]], align 8324// CK1-64-NEXT: [[TMP57:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9325// CK1-64-NEXT: store i64 0, ptr [[TMP57]], align 8326// CK1-64-NEXT: [[TMP58:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10327// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4328// CK1-64-NEXT: [[TMP59:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11329// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4330// CK1-64-NEXT: [[TMP60:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12331// CK1-64-NEXT: store i32 0, ptr [[TMP60]], align 4332// CK1-64-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])333// CK1-64-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 0334// CK1-64-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]335// CK1-64: omp_offload.failed11:336// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]337// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT12]]338// CK1-64: omp_offload.cont12:339// CK1-64-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 8340// CK1-64-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 8341// CK1-64-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 8342// CK1-64-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 8343// CK1-64-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0344// CK1-64-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 8345// CK1-64-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0346// CK1-64-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 8347// CK1-64-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 0348// CK1-64-NEXT: store ptr null, ptr [[TMP68]], align 8349// CK1-64-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0350// CK1-64-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0351// CK1-64-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8352// CK1-64-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0353// CK1-64-NEXT: store i32 2, ptr [[TMP71]], align 4354// CK1-64-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1355// CK1-64-NEXT: store i32 1, ptr [[TMP72]], align 4356// CK1-64-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2357// CK1-64-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 8358// CK1-64-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3359// CK1-64-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 8360// CK1-64-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4361// CK1-64-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 8362// CK1-64-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5363// CK1-64-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 8364// CK1-64-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6365// CK1-64-NEXT: store ptr null, ptr [[TMP77]], align 8366// CK1-64-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7367// CK1-64-NEXT: store ptr null, ptr [[TMP78]], align 8368// CK1-64-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8369// CK1-64-NEXT: store i64 0, ptr [[TMP79]], align 8370// CK1-64-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9371// CK1-64-NEXT: store i64 0, ptr [[TMP80]], align 8372// CK1-64-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10373// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4374// CK1-64-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11375// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4376// CK1-64-NEXT: [[TMP83:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12377// CK1-64-NEXT: store i32 0, ptr [[TMP83]], align 4378// CK1-64-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])379// CK1-64-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 0380// CK1-64-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]381// CK1-64: omp_offload.failed17:382// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]383// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT18]]384// CK1-64: omp_offload.cont18:385// CK1-64-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 8386// CK1-64-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 8387// CK1-64-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 8388// CK1-64-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 8389// CK1-64-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0390// CK1-64-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 8391// CK1-64-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0392// CK1-64-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 8393// CK1-64-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 0394// CK1-64-NEXT: store ptr null, ptr [[TMP91]], align 8395// CK1-64-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0396// CK1-64-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0397// CK1-64-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8398// CK1-64-NEXT: [[TMP94:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0399// CK1-64-NEXT: store i32 2, ptr [[TMP94]], align 4400// CK1-64-NEXT: [[TMP95:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1401// CK1-64-NEXT: store i32 1, ptr [[TMP95]], align 4402// CK1-64-NEXT: [[TMP96:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2403// CK1-64-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 8404// CK1-64-NEXT: [[TMP97:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3405// CK1-64-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 8406// CK1-64-NEXT: [[TMP98:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4407// CK1-64-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 8408// CK1-64-NEXT: [[TMP99:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5409// CK1-64-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 8410// CK1-64-NEXT: [[TMP100:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6411// CK1-64-NEXT: store ptr null, ptr [[TMP100]], align 8412// CK1-64-NEXT: [[TMP101:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7413// CK1-64-NEXT: store ptr null, ptr [[TMP101]], align 8414// CK1-64-NEXT: [[TMP102:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8415// CK1-64-NEXT: store i64 0, ptr [[TMP102]], align 8416// CK1-64-NEXT: [[TMP103:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9417// CK1-64-NEXT: store i64 0, ptr [[TMP103]], align 8418// CK1-64-NEXT: [[TMP104:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10419// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4420// CK1-64-NEXT: [[TMP105:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11421// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4422// CK1-64-NEXT: [[TMP106:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12423// CK1-64-NEXT: store i32 0, ptr [[TMP106]], align 4424// CK1-64-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])425// CK1-64-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 0426// CK1-64-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]427// CK1-64: omp_offload.failed24:428// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]429// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT25]]430// CK1-64: omp_offload.cont25:431// CK1-64-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 8432// CK1-64-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 8433// CK1-64-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 8434// CK1-64-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 8435// CK1-64-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0436// CK1-64-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 8437// CK1-64-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0438// CK1-64-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 8439// CK1-64-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 0440// CK1-64-NEXT: store ptr null, ptr [[TMP114]], align 8441// CK1-64-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0442// CK1-64-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0443// CK1-64-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8444// CK1-64-NEXT: [[TMP117:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0445// CK1-64-NEXT: store i32 2, ptr [[TMP117]], align 4446// CK1-64-NEXT: [[TMP118:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1447// CK1-64-NEXT: store i32 1, ptr [[TMP118]], align 4448// CK1-64-NEXT: [[TMP119:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2449// CK1-64-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 8450// CK1-64-NEXT: [[TMP120:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3451// CK1-64-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 8452// CK1-64-NEXT: [[TMP121:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4453// CK1-64-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 8454// CK1-64-NEXT: [[TMP122:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5455// CK1-64-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 8456// CK1-64-NEXT: [[TMP123:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6457// CK1-64-NEXT: store ptr null, ptr [[TMP123]], align 8458// CK1-64-NEXT: [[TMP124:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7459// CK1-64-NEXT: store ptr null, ptr [[TMP124]], align 8460// CK1-64-NEXT: [[TMP125:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8461// CK1-64-NEXT: store i64 0, ptr [[TMP125]], align 8462// CK1-64-NEXT: [[TMP126:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9463// CK1-64-NEXT: store i64 0, ptr [[TMP126]], align 8464// CK1-64-NEXT: [[TMP127:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10465// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4466// CK1-64-NEXT: [[TMP128:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11467// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4468// CK1-64-NEXT: [[TMP129:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12469// CK1-64-NEXT: store i32 0, ptr [[TMP129]], align 4470// CK1-64-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])471// CK1-64-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 0472// CK1-64-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]473// CK1-64: omp_offload.failed31:474// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]475// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT32]]476// CK1-64: omp_offload.cont32:477// CK1-64-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 8478// CK1-64-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 8479// CK1-64-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 8480// CK1-64-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 8481// CK1-64-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 8482// CK1-64-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 8483// CK1-64-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 8484// CK1-64-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 8485// CK1-64-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0486// CK1-64-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 8487// CK1-64-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0488// CK1-64-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 8489// CK1-64-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 0490// CK1-64-NEXT: store ptr null, ptr [[TMP140]], align 8491// CK1-64-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1492// CK1-64-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 8493// CK1-64-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1494// CK1-64-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 8495// CK1-64-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 1496// CK1-64-NEXT: store ptr null, ptr [[TMP143]], align 8497// CK1-64-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0498// CK1-64-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0499// CK1-64-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8500// CK1-64-NEXT: [[TMP146:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0501// CK1-64-NEXT: store i32 2, ptr [[TMP146]], align 4502// CK1-64-NEXT: [[TMP147:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1503// CK1-64-NEXT: store i32 2, ptr [[TMP147]], align 4504// CK1-64-NEXT: [[TMP148:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2505// CK1-64-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 8506// CK1-64-NEXT: [[TMP149:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3507// CK1-64-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 8508// CK1-64-NEXT: [[TMP150:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4509// CK1-64-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 8510// CK1-64-NEXT: [[TMP151:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5511// CK1-64-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 8512// CK1-64-NEXT: [[TMP152:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6513// CK1-64-NEXT: store ptr null, ptr [[TMP152]], align 8514// CK1-64-NEXT: [[TMP153:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7515// CK1-64-NEXT: store ptr null, ptr [[TMP153]], align 8516// CK1-64-NEXT: [[TMP154:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8517// CK1-64-NEXT: store i64 0, ptr [[TMP154]], align 8518// CK1-64-NEXT: [[TMP155:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9519// CK1-64-NEXT: store i64 0, ptr [[TMP155]], align 8520// CK1-64-NEXT: [[TMP156:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10521// CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4522// CK1-64-NEXT: [[TMP157:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11523// CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4524// CK1-64-NEXT: [[TMP158:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12525// CK1-64-NEXT: store i32 0, ptr [[TMP158]], align 4526// CK1-64-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])527// CK1-64-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 0528// CK1-64-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]529// CK1-64: omp_offload.failed39:530// CK1-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]531// CK1-64-NEXT: br label [[OMP_OFFLOAD_CONT40]]532// CK1-64: omp_offload.cont40:533// CK1-64-NEXT: ret void534// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37535// CK1-64-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {536// CK1-64-NEXT: entry:537// CK1-64-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 8538// CK1-64-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 8539// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 8540// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1541// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 8542// CK1-64-NEXT: ret void543// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43544// CK1-64-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {545// CK1-64-NEXT: entry:546// CK1-64-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 8547// CK1-64-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 8548// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 8549// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP0]], i32 1550// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 8551// CK1-64-NEXT: ret void552// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49553// CK1-64-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {554// CK1-64-NEXT: entry:555// CK1-64-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 8556// CK1-64-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 8557// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 8558// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP0]], i32 1559// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 8560// CK1-64-NEXT: ret void561// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55562// CK1-64-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {563// CK1-64-NEXT: entry:564// CK1-64-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8565// CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8566// CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8567// CK1-64-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 8568// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8569// CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8570// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 1571// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8572// CK1-64-NEXT: ret void573// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61574// CK1-64-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {575// CK1-64-NEXT: entry:576// CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8577// CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8578// CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8579// CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8580// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8581// CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8582// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1583// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8584// CK1-64-NEXT: ret void585// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67586// CK1-64-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {587// CK1-64-NEXT: entry:588// CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8589// CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8590// CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8591// CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8592// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8593// CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8594// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1595// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8596// CK1-64-NEXT: ret void597// CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74598// CK1-64-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {599// CK1-64-NEXT: entry:600// CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8601// CK1-64-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8602// CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8603// CK1-64-NEXT: [[_TMP1:%.*]] = alloca ptr, align 8604// CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8605// CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8606// CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8607// CK1-64-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 8608// CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8609// CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8610// CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1611// CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8612// CK1-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 8613// CK1-64-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8614// CK1-64-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 1615// CK1-64-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 8616// CK1-64-NEXT: ret void617// CK1-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg618// CK1-64-SAME: () #[[ATTR3:[0-9]+]] {619// CK1-64-NEXT: entry:620// CK1-64-NEXT: call void @__tgt_register_requires(i64 1)621// CK1-64-NEXT: ret void622// CK2-64-LABEL: define {{[^@]+}}@_Z3barPd623// CK2-64-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {624// CK2-64-NEXT: entry:625// CK2-64-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8626// CK2-64-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8627// CK2-64-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8628// CK2-64-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])629// CK2-64-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])630// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 8631// CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1632// CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8633// CK2-64-NEXT: ret void634// CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd635// CK2-64-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {636// CK2-64-NEXT: entry:637// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8638// CK2-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8639// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8640// CK2-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8641// CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8642// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8643// CK2-64-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[THIS1]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]])644// CK2-64-NEXT: ret void645// CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd646// CK2-64-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {647// CK2-64-NEXT: entry:648// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8649// CK2-64-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8650// CK2-64-NEXT: [[LA:%.*]] = alloca ptr, align 8651// CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8652// CK2-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8653// CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8654// CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 8655// CK2-64-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 8656// CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 8657// CK2-64-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 8658// CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 8659// CK2-64-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 8660// CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 8661// CK2-64-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 8662// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8663// CK2-64-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8664// CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8665// CK2-64-NEXT: store ptr null, ptr [[LA]], align 8666// CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0667// CK2-64-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0668// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 8669// CK2-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0670// CK2-64-NEXT: store ptr [[A]], ptr [[TMP1]], align 8671// CK2-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0672// CK2-64-NEXT: store ptr null, ptr [[TMP2]], align 8673// CK2-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0674// CK2-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0675// CK2-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8676// CK2-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0677// CK2-64-NEXT: store i32 2, ptr [[TMP5]], align 4678// CK2-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1679// CK2-64-NEXT: store i32 1, ptr [[TMP6]], align 4680// CK2-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2681// CK2-64-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 8682// CK2-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3683// CK2-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8684// CK2-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4685// CK2-64-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 8686// CK2-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5687// CK2-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 8688// CK2-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6689// CK2-64-NEXT: store ptr null, ptr [[TMP11]], align 8690// CK2-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7691// CK2-64-NEXT: store ptr null, ptr [[TMP12]], align 8692// CK2-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8693// CK2-64-NEXT: store i64 0, ptr [[TMP13]], align 8694// CK2-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9695// CK2-64-NEXT: store i64 0, ptr [[TMP14]], align 8696// CK2-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10697// CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4698// CK2-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11699// CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4700// CK2-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12701// CK2-64-NEXT: store i32 0, ptr [[TMP17]], align 4702// CK2-64-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])703// CK2-64-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 0704// CK2-64-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]705// CK2-64: omp_offload.failed:706// CK2-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR3:[0-9]+]]707// CK2-64-NEXT: br label [[OMP_OFFLOAD_CONT]]708// CK2-64: omp_offload.cont:709// CK2-64-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1710// CK2-64-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 8711// CK2-64-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1712// CK2-64-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64713// CK2-64-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64714// CK2-64-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]715// CK2-64-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)716// CK2-64-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES]], ptr align 8 @.offload_sizes.1, i64 16, i1 false)717// CK2-64-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0718// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 8719// CK2-64-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0720// CK2-64-NEXT: store ptr [[B]], ptr [[TMP27]], align 8721// CK2-64-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0722// CK2-64-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 8723// CK2-64-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 0724// CK2-64-NEXT: store ptr null, ptr [[TMP29]], align 8725// CK2-64-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1726// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 8727// CK2-64-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1728// CK2-64-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 8729// CK2-64-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 1730// CK2-64-NEXT: store ptr null, ptr [[TMP32]], align 8731// CK2-64-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0732// CK2-64-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0733// CK2-64-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0734// CK2-64-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8735// CK2-64-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0736// CK2-64-NEXT: store i32 2, ptr [[TMP36]], align 4737// CK2-64-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1738// CK2-64-NEXT: store i32 2, ptr [[TMP37]], align 4739// CK2-64-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2740// CK2-64-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 8741// CK2-64-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3742// CK2-64-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 8743// CK2-64-NEXT: [[TMP40:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4744// CK2-64-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 8745// CK2-64-NEXT: [[TMP41:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5746// CK2-64-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 8747// CK2-64-NEXT: [[TMP42:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6748// CK2-64-NEXT: store ptr null, ptr [[TMP42]], align 8749// CK2-64-NEXT: [[TMP43:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7750// CK2-64-NEXT: store ptr null, ptr [[TMP43]], align 8751// CK2-64-NEXT: [[TMP44:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8752// CK2-64-NEXT: store i64 0, ptr [[TMP44]], align 8753// CK2-64-NEXT: [[TMP45:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9754// CK2-64-NEXT: store i64 0, ptr [[TMP45]], align 8755// CK2-64-NEXT: [[TMP46:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10756// CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4757// CK2-64-NEXT: [[TMP47:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11758// CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4759// CK2-64-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12760// CK2-64-NEXT: store i32 0, ptr [[TMP48]], align 4761// CK2-64-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])762// CK2-64-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 0763// CK2-64-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]764// CK2-64: omp_offload.failed6:765// CK2-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR3]]766// CK2-64-NEXT: br label [[OMP_OFFLOAD_CONT7]]767// CK2-64: omp_offload.cont7:768// CK2-64-NEXT: [[A8:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 0769// CK2-64-NEXT: [[B9:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1770// CK2-64-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 8771// CK2-64-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1772// CK2-64-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64773// CK2-64-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64774// CK2-64-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]775// CK2-64-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)776// CK2-64-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES13]], ptr align 8 @.offload_sizes.3, i64 24, i1 false)777// CK2-64-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0778// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 8779// CK2-64-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0780// CK2-64-NEXT: store ptr [[A8]], ptr [[TMP58]], align 8781// CK2-64-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0782// CK2-64-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 8783// CK2-64-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 0784// CK2-64-NEXT: store ptr null, ptr [[TMP60]], align 8785// CK2-64-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1786// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 8787// CK2-64-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1788// CK2-64-NEXT: store ptr [[A8]], ptr [[TMP62]], align 8789// CK2-64-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 1790// CK2-64-NEXT: store ptr null, ptr [[TMP63]], align 8791// CK2-64-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2792// CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 8793// CK2-64-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2794// CK2-64-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 8795// CK2-64-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 2796// CK2-64-NEXT: store ptr null, ptr [[TMP66]], align 8797// CK2-64-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0798// CK2-64-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0799// CK2-64-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0800// CK2-64-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8801// CK2-64-NEXT: [[TMP70:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0802// CK2-64-NEXT: store i32 2, ptr [[TMP70]], align 4803// CK2-64-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1804// CK2-64-NEXT: store i32 3, ptr [[TMP71]], align 4805// CK2-64-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2806// CK2-64-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 8807// CK2-64-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3808// CK2-64-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 8809// CK2-64-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4810// CK2-64-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 8811// CK2-64-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5812// CK2-64-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 8813// CK2-64-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6814// CK2-64-NEXT: store ptr null, ptr [[TMP76]], align 8815// CK2-64-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7816// CK2-64-NEXT: store ptr null, ptr [[TMP77]], align 8817// CK2-64-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8818// CK2-64-NEXT: store i64 0, ptr [[TMP78]], align 8819// CK2-64-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9820// CK2-64-NEXT: store i64 0, ptr [[TMP79]], align 8821// CK2-64-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10822// CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4823// CK2-64-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11824// CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4825// CK2-64-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12826// CK2-64-NEXT: store i32 0, ptr [[TMP82]], align 4827// CK2-64-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])828// CK2-64-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 0829// CK2-64-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]830// CK2-64: omp_offload.failed15:831// CK2-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR3]]832// CK2-64-NEXT: br label [[OMP_OFFLOAD_CONT16]]833// CK2-64: omp_offload.cont16:834// CK2-64-NEXT: ret void835// CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd836// CK2-64-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {837// CK2-64-NEXT: entry:838// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8839// CK2-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8840// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8841// CK2-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8842// CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8843// CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0844// CK2-64-NEXT: store ptr null, ptr [[A]], align 8845// CK2-64-NEXT: [[B2:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1846// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8847// CK2-64-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8848// CK2-64-NEXT: ret void849// CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112850// CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {851// CK2-64-NEXT: entry:852// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8853// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8854// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8855// CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0856// CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8857// CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1858// CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8859// CK2-64-NEXT: ret void860// CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118861// CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] {862// CK2-64-NEXT: entry:863// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8864// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8865// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8866// CK2-64-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1867// CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8868// CK2-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8869// CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 1870// CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 8871// CK2-64-NEXT: ret void872// CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125873// CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] {874// CK2-64-NEXT: entry:875// CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8876// CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8877// CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8878// CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0879// CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8880// CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1881// CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8882// CK2-64-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1883// CK2-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 8884// CK2-64-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8885// CK2-64-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds double, ptr [[TMP3]], i32 1886// CK2-64-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 8887// CK2-64-NEXT: ret void888// CK2-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg889// CK2-64-SAME: () #[[ATTR5:[0-9]+]] {890// CK2-64-NEXT: entry:891// CK2-64-NEXT: call void @__tgt_register_requires(i64 1)892// CK2-64-NEXT: ret void893// CK2-32-LABEL: define {{[^@]+}}@_Z3barPd894// CK2-32-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {895// CK2-32-NEXT: entry:896// CK2-32-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4897// CK2-32-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4898// CK2-32-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4899// CK2-32-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])900// CK2-32-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])901// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 4902// CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1903// CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4904// CK2-32-NEXT: ret void905// CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd906// CK2-32-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR1:[0-9]+]] comdat align 2 {907// CK2-32-NEXT: entry:908// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4909// CK2-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4910// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4911// CK2-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4912// CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4913// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4914// CK2-32-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]])915// CK2-32-NEXT: ret void916// CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd917// CK2-32-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {918// CK2-32-NEXT: entry:919// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4920// CK2-32-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4921// CK2-32-NEXT: [[LA:%.*]] = alloca ptr, align 4922// CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4923// CK2-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4924// CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4925// CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 4926// CK2-32-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 4927// CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 4928// CK2-32-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 4929// CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 4930// CK2-32-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 4931// CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 4932// CK2-32-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 4933// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4934// CK2-32-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4935// CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4936// CK2-32-NEXT: store ptr null, ptr [[LA]], align 4937// CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0938// CK2-32-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0939// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 4940// CK2-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0941// CK2-32-NEXT: store ptr [[A]], ptr [[TMP1]], align 4942// CK2-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0943// CK2-32-NEXT: store ptr null, ptr [[TMP2]], align 4944// CK2-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0945// CK2-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0946// CK2-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8947// CK2-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0948// CK2-32-NEXT: store i32 2, ptr [[TMP5]], align 4949// CK2-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1950// CK2-32-NEXT: store i32 1, ptr [[TMP6]], align 4951// CK2-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2952// CK2-32-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 4953// CK2-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3954// CK2-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4955// CK2-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4956// CK2-32-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 4957// CK2-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5958// CK2-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 4959// CK2-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6960// CK2-32-NEXT: store ptr null, ptr [[TMP11]], align 4961// CK2-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7962// CK2-32-NEXT: store ptr null, ptr [[TMP12]], align 4963// CK2-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8964// CK2-32-NEXT: store i64 0, ptr [[TMP13]], align 8965// CK2-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9966// CK2-32-NEXT: store i64 0, ptr [[TMP14]], align 8967// CK2-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10968// CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4969// CK2-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11970// CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4971// CK2-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12972// CK2-32-NEXT: store i32 0, ptr [[TMP17]], align 4973// CK2-32-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])974// CK2-32-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 0975// CK2-32-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]976// CK2-32: omp_offload.failed:977// CK2-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR3:[0-9]+]]978// CK2-32-NEXT: br label [[OMP_OFFLOAD_CONT]]979// CK2-32: omp_offload.cont:980// CK2-32-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1981// CK2-32-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 4982// CK2-32-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1983// CK2-32-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64984// CK2-32-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64985// CK2-32-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]986// CK2-32-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)987// CK2-32-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES]], ptr align 4 @.offload_sizes.1, i32 16, i1 false)988// CK2-32-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0989// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 4990// CK2-32-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0991// CK2-32-NEXT: store ptr [[B]], ptr [[TMP27]], align 4992// CK2-32-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0993// CK2-32-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 4994// CK2-32-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 0995// CK2-32-NEXT: store ptr null, ptr [[TMP29]], align 4996// CK2-32-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1997// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 4998// CK2-32-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1999// CK2-32-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 41000// CK2-32-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 11001// CK2-32-NEXT: store ptr null, ptr [[TMP32]], align 41002// CK2-32-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 01003// CK2-32-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 01004// CK2-32-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 01005// CK2-32-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81006// CK2-32-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 01007// CK2-32-NEXT: store i32 2, ptr [[TMP36]], align 41008// CK2-32-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11009// CK2-32-NEXT: store i32 2, ptr [[TMP37]], align 41010// CK2-32-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 21011// CK2-32-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 41012// CK2-32-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 31013// CK2-32-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 41014// CK2-32-NEXT: [[TMP40:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 41015// CK2-32-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 41016// CK2-32-NEXT: [[TMP41:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 51017// CK2-32-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 41018// CK2-32-NEXT: [[TMP42:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 61019// CK2-32-NEXT: store ptr null, ptr [[TMP42]], align 41020// CK2-32-NEXT: [[TMP43:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 71021// CK2-32-NEXT: store ptr null, ptr [[TMP43]], align 41022// CK2-32-NEXT: [[TMP44:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 81023// CK2-32-NEXT: store i64 0, ptr [[TMP44]], align 81024// CK2-32-NEXT: [[TMP45:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 91025// CK2-32-NEXT: store i64 0, ptr [[TMP45]], align 81026// CK2-32-NEXT: [[TMP46:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 101027// CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 41028// CK2-32-NEXT: [[TMP47:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 111029// CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 41030// CK2-32-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 121031// CK2-32-NEXT: store i32 0, ptr [[TMP48]], align 41032// CK2-32-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])1033// CK2-32-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 01034// CK2-32-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]1035// CK2-32: omp_offload.failed6:1036// CK2-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR3]]1037// CK2-32-NEXT: br label [[OMP_OFFLOAD_CONT7]]1038// CK2-32: omp_offload.cont7:1039// CK2-32-NEXT: [[A8:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 01040// CK2-32-NEXT: [[B9:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 11041// CK2-32-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 41042// CK2-32-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 11043// CK2-32-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i641044// CK2-32-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i641045// CK2-32-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]1046// CK2-32-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)1047// CK2-32-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES13]], ptr align 4 @.offload_sizes.3, i32 24, i1 false)1048// CK2-32-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 01049// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 41050// CK2-32-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 01051// CK2-32-NEXT: store ptr [[A8]], ptr [[TMP58]], align 41052// CK2-32-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 01053// CK2-32-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 41054// CK2-32-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 01055// CK2-32-NEXT: store ptr null, ptr [[TMP60]], align 41056// CK2-32-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 11057// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 41058// CK2-32-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 11059// CK2-32-NEXT: store ptr [[A8]], ptr [[TMP62]], align 41060// CK2-32-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 11061// CK2-32-NEXT: store ptr null, ptr [[TMP63]], align 41062// CK2-32-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 21063// CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 41064// CK2-32-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 21065// CK2-32-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 41066// CK2-32-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 21067// CK2-32-NEXT: store ptr null, ptr [[TMP66]], align 41068// CK2-32-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 01069// CK2-32-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 01070// CK2-32-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 01071// CK2-32-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81072// CK2-32-NEXT: [[TMP70:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 01073// CK2-32-NEXT: store i32 2, ptr [[TMP70]], align 41074// CK2-32-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11075// CK2-32-NEXT: store i32 3, ptr [[TMP71]], align 41076// CK2-32-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 21077// CK2-32-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 41078// CK2-32-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 31079// CK2-32-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 41080// CK2-32-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 41081// CK2-32-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 41082// CK2-32-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 51083// CK2-32-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 41084// CK2-32-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 61085// CK2-32-NEXT: store ptr null, ptr [[TMP76]], align 41086// CK2-32-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 71087// CK2-32-NEXT: store ptr null, ptr [[TMP77]], align 41088// CK2-32-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 81089// CK2-32-NEXT: store i64 0, ptr [[TMP78]], align 81090// CK2-32-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 91091// CK2-32-NEXT: store i64 0, ptr [[TMP79]], align 81092// CK2-32-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 101093// CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 41094// CK2-32-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 111095// CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 41096// CK2-32-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 121097// CK2-32-NEXT: store i32 0, ptr [[TMP82]], align 41098// CK2-32-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])1099// CK2-32-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 01100// CK2-32-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]1101// CK2-32: omp_offload.failed15:1102// CK2-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR3]]1103// CK2-32-NEXT: br label [[OMP_OFFLOAD_CONT16]]1104// CK2-32: omp_offload.cont16:1105// CK2-32-NEXT: ret void1106// CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd1107// CK2-32-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR1]] comdat align 2 {1108// CK2-32-NEXT: entry:1109// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 41110// CK2-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 41111// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 41112// CK2-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 41113// CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 41114// CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 01115// CK2-32-NEXT: store ptr null, ptr [[A]], align 41116// CK2-32-NEXT: [[B2:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 11117// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 41118// CK2-32-NEXT: store ptr [[TMP0]], ptr [[B2]], align 41119// CK2-32-NEXT: ret void1120// CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1121121// CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2:[0-9]+]] {1122// CK2-32-NEXT: entry:1123// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 41124// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 41125// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 41126// CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 01127// CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 41128// CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 11129// CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 41130// CK2-32-NEXT: ret void1131// CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1181132// CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] {1133// CK2-32-NEXT: entry:1134// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 41135// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 41136// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 41137// CK2-32-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 11138// CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 41139// CK2-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 41140// CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 11141// CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 41142// CK2-32-NEXT: ret void1143// CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1251144// CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] {1145// CK2-32-NEXT: entry:1146// CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 41147// CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 41148// CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 41149// CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 01150// CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 41151// CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 11152// CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 41153// CK2-32-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 11154// CK2-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 41155// CK2-32-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 41156// CK2-32-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds double, ptr [[TMP3]], i32 11157// CK2-32-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 41158// CK2-32-NEXT: ret void1159// CK2-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1160// CK2-32-SAME: () #[[ATTR5:[0-9]+]] {1161// CK2-32-NEXT: entry:1162// CK2-32-NEXT: call void @__tgt_register_requires(i64 1)1163// CK2-32-NEXT: ret void1164// CK3-64-LABEL: define {{[^@]+}}@_Z3barv1165// CK3-64-SAME: () #[[ATTR0:[0-9]+]] {1166// CK3-64-NEXT: entry:1167// CK3-64-NEXT: [[PTR:%.*]] = alloca ptr, align 641168// CK3-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 81169// CK3-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 81170// CK3-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 81171// CK3-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 641172// CK3-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01173// CK3-64-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 81174// CK3-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01175// CK3-64-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 81176// CK3-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 01177// CK3-64-NEXT: store ptr null, ptr [[TMP3]], align 81178// CK3-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01179// CK3-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01180// CK3-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 81181// CK3-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 01182// CK3-64-NEXT: store i32 2, ptr [[TMP6]], align 41183// CK3-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11184// CK3-64-NEXT: store i32 1, ptr [[TMP7]], align 41185// CK3-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 21186// CK3-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 81187// CK3-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 31188// CK3-64-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 81189// CK3-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 41190// CK3-64-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 81191// CK3-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 51192// CK3-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 81193// CK3-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 61194// CK3-64-NEXT: store ptr null, ptr [[TMP12]], align 81195// CK3-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 71196// CK3-64-NEXT: store ptr null, ptr [[TMP13]], align 81197// CK3-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 81198// CK3-64-NEXT: store i64 0, ptr [[TMP14]], align 81199// CK3-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 91200// CK3-64-NEXT: store i64 0, ptr [[TMP15]], align 81201// CK3-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 101202// CK3-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 41203// CK3-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 111204// CK3-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 41205// CK3-64-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 121206// CK3-64-NEXT: store i32 0, ptr [[TMP18]], align 41207// CK3-64-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])1208// CK3-64-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 01209// CK3-64-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]1210// CK3-64: omp_offload.failed:1211// CK3-64-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]1212// CK3-64-NEXT: br label [[OMP_OFFLOAD_CONT]]1213// CK3-64: omp_offload.cont:1214// CK3-64-NEXT: ret void1215// CK3-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1591216// CK3-64-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {1217// CK3-64-NEXT: entry:1218// CK3-64-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 81219// CK3-64-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 81220// CK3-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 81221// CK3-64-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 81222// CK3-64-NEXT: ret void1223// CK3-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1224// CK3-64-SAME: () #[[ATTR3:[0-9]+]] {1225// CK3-64-NEXT: entry:1226// CK3-64-NEXT: call void @__tgt_register_requires(i64 1)1227// CK3-64-NEXT: ret void1228// CK3-32-LABEL: define {{[^@]+}}@_Z3barv1229// CK3-32-SAME: () #[[ATTR0:[0-9]+]] {1230// CK3-32-NEXT: entry:1231// CK3-32-NEXT: [[PTR:%.*]] = alloca ptr, align 641232// CK3-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 41233// CK3-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 41234// CK3-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 41235// CK3-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 641236// CK3-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01237// CK3-32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 41238// CK3-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01239// CK3-32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 41240// CK3-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 01241// CK3-32-NEXT: store ptr null, ptr [[TMP3]], align 41242// CK3-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01243// CK3-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01244// CK3-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 81245// CK3-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 01246// CK3-32-NEXT: store i32 2, ptr [[TMP6]], align 41247// CK3-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11248// CK3-32-NEXT: store i32 1, ptr [[TMP7]], align 41249// CK3-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 21250// CK3-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 41251// CK3-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 31252// CK3-32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 41253// CK3-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 41254// CK3-32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 41255// CK3-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 51256// CK3-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 41257// CK3-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 61258// CK3-32-NEXT: store ptr null, ptr [[TMP12]], align 41259// CK3-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 71260// CK3-32-NEXT: store ptr null, ptr [[TMP13]], align 41261// CK3-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 81262// CK3-32-NEXT: store i64 0, ptr [[TMP14]], align 81263// CK3-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 91264// CK3-32-NEXT: store i64 0, ptr [[TMP15]], align 81265// CK3-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 101266// CK3-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 41267// CK3-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 111268// CK3-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 41269// CK3-32-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 121270// CK3-32-NEXT: store i32 0, ptr [[TMP18]], align 41271// CK3-32-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])1272// CK3-32-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 01273// CK3-32-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]1274// CK3-32: omp_offload.failed:1275// CK3-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]1276// CK3-32-NEXT: br label [[OMP_OFFLOAD_CONT]]1277// CK3-32: omp_offload.cont:1278// CK3-32-NEXT: ret void1279// CK3-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1591280// CK3-32-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {1281// CK3-32-NEXT: entry:1282// CK3-32-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 41283// CK3-32-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 41284// CK3-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 41285// CK3-32-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 41286// CK3-32-NEXT: ret void1287// CK3-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1288// CK3-32-SAME: () #[[ATTR3:[0-9]+]] {1289// CK3-32-NEXT: entry:1290// CK3-32-NEXT: call void @__tgt_register_requires(i64 1)1291// CK3-32-NEXT: ret void1292// CK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1293// CK1-SAME: () #[[ATTR3:[0-9]+]] {1294// CK1-NEXT: entry:1295// CK1-NEXT: call void @__tgt_register_requires(i64 1)1296// CK1-NEXT: ret void1297// CK1-32-LABEL: define {{[^@]+}}@_Z3barRPfRPi1298// CK1-32-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[A:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) #[[ATTR0:[0-9]+]] {1299// CK1-32-NEXT: entry:1300// CK1-32-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 41301// CK1-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 41302// CK1-32-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 41303// CK1-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 41304// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 41305// CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 41306// CK1-32-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP1]])1307// CK1-32-NEXT: ret void1308// CK1-32-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_1309// CK1-32-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[LR:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[TR:%.*]]) #[[ATTR0]] comdat {1310// CK1-32-NEXT: entry:1311// CK1-32-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 41312// CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 41313// CK1-32-NEXT: [[L:%.*]] = alloca ptr, align 41314// CK1-32-NEXT: [[T:%.*]] = alloca ptr, align 41315// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 41316// CK1-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 41317// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 41318// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 41319// CK1-32-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 41320// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 41321// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 41322// CK1-32-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 41323// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 41324// CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 41325// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 41326// CK1-32-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 41327// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 41328// CK1-32-NEXT: [[_TMP19:%.*]] = alloca ptr, align 41329// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 41330// CK1-32-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 41331// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 41332// CK1-32-NEXT: [[_TMP26:%.*]] = alloca ptr, align 41333// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 41334// CK1-32-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 41335// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 41336// CK1-32-NEXT: [[_TMP33:%.*]] = alloca ptr, align 41337// CK1-32-NEXT: [[_TMP34:%.*]] = alloca ptr, align 41338// CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 41339// CK1-32-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 41340// CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 41341// CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 41342// CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 41343// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 41344// CK1-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01345// CK1-32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 41346// CK1-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01347// CK1-32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 41348// CK1-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 01349// CK1-32-NEXT: store ptr null, ptr [[TMP3]], align 41350// CK1-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01351// CK1-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01352// CK1-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 81353// CK1-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 01354// CK1-32-NEXT: store i32 2, ptr [[TMP6]], align 41355// CK1-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11356// CK1-32-NEXT: store i32 1, ptr [[TMP7]], align 41357// CK1-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 21358// CK1-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 41359// CK1-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 31360// CK1-32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 41361// CK1-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 41362// CK1-32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 41363// CK1-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 51364// CK1-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 41365// CK1-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 61366// CK1-32-NEXT: store ptr null, ptr [[TMP12]], align 41367// CK1-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 71368// CK1-32-NEXT: store ptr null, ptr [[TMP13]], align 41369// CK1-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 81370// CK1-32-NEXT: store i64 0, ptr [[TMP14]], align 81371// CK1-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 91372// CK1-32-NEXT: store i64 0, ptr [[TMP15]], align 81373// CK1-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 101374// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 41375// CK1-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 111376// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 41377// CK1-32-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 121378// CK1-32-NEXT: store i32 0, ptr [[TMP18]], align 41379// CK1-32-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])1380// CK1-32-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 01381// CK1-32-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]1382// CK1-32: omp_offload.failed:1383// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]1384// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT]]1385// CK1-32: omp_offload.cont:1386// CK1-32-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 41387// CK1-32-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 01388// CK1-32-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 41389// CK1-32-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 01390// CK1-32-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 41391// CK1-32-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 01392// CK1-32-NEXT: store ptr null, ptr [[TMP24]], align 41393// CK1-32-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 01394// CK1-32-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 01395// CK1-32-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81396// CK1-32-NEXT: [[TMP27:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 01397// CK1-32-NEXT: store i32 2, ptr [[TMP27]], align 41398// CK1-32-NEXT: [[TMP28:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11399// CK1-32-NEXT: store i32 1, ptr [[TMP28]], align 41400// CK1-32-NEXT: [[TMP29:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 21401// CK1-32-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 41402// CK1-32-NEXT: [[TMP30:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 31403// CK1-32-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 41404// CK1-32-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 41405// CK1-32-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 41406// CK1-32-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 51407// CK1-32-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 41408// CK1-32-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 61409// CK1-32-NEXT: store ptr null, ptr [[TMP33]], align 41410// CK1-32-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 71411// CK1-32-NEXT: store ptr null, ptr [[TMP34]], align 41412// CK1-32-NEXT: [[TMP35:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 81413// CK1-32-NEXT: store i64 0, ptr [[TMP35]], align 81414// CK1-32-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 91415// CK1-32-NEXT: store i64 0, ptr [[TMP36]], align 81416// CK1-32-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 101417// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 41418// CK1-32-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 111419// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 41420// CK1-32-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 121421// CK1-32-NEXT: store i32 0, ptr [[TMP39]], align 41422// CK1-32-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])1423// CK1-32-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 01424// CK1-32-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]1425// CK1-32: omp_offload.failed5:1426// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]1427// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT6]]1428// CK1-32: omp_offload.cont6:1429// CK1-32-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 41430// CK1-32-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 01431// CK1-32-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 41432// CK1-32-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 01433// CK1-32-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 41434// CK1-32-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 01435// CK1-32-NEXT: store ptr null, ptr [[TMP45]], align 41436// CK1-32-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 01437// CK1-32-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 01438// CK1-32-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81439// CK1-32-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 01440// CK1-32-NEXT: store i32 2, ptr [[TMP48]], align 41441// CK1-32-NEXT: [[TMP49:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11442// CK1-32-NEXT: store i32 1, ptr [[TMP49]], align 41443// CK1-32-NEXT: [[TMP50:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 21444// CK1-32-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 41445// CK1-32-NEXT: [[TMP51:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 31446// CK1-32-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 41447// CK1-32-NEXT: [[TMP52:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 41448// CK1-32-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 41449// CK1-32-NEXT: [[TMP53:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 51450// CK1-32-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 41451// CK1-32-NEXT: [[TMP54:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 61452// CK1-32-NEXT: store ptr null, ptr [[TMP54]], align 41453// CK1-32-NEXT: [[TMP55:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 71454// CK1-32-NEXT: store ptr null, ptr [[TMP55]], align 41455// CK1-32-NEXT: [[TMP56:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 81456// CK1-32-NEXT: store i64 0, ptr [[TMP56]], align 81457// CK1-32-NEXT: [[TMP57:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 91458// CK1-32-NEXT: store i64 0, ptr [[TMP57]], align 81459// CK1-32-NEXT: [[TMP58:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 101460// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 41461// CK1-32-NEXT: [[TMP59:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 111462// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 41463// CK1-32-NEXT: [[TMP60:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 121464// CK1-32-NEXT: store i32 0, ptr [[TMP60]], align 41465// CK1-32-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])1466// CK1-32-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 01467// CK1-32-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]1468// CK1-32: omp_offload.failed11:1469// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]1470// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT12]]1471// CK1-32: omp_offload.cont12:1472// CK1-32-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 41473// CK1-32-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 41474// CK1-32-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 41475// CK1-32-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 41476// CK1-32-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 01477// CK1-32-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 41478// CK1-32-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 01479// CK1-32-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 41480// CK1-32-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 01481// CK1-32-NEXT: store ptr null, ptr [[TMP68]], align 41482// CK1-32-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 01483// CK1-32-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 01484// CK1-32-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81485// CK1-32-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 01486// CK1-32-NEXT: store i32 2, ptr [[TMP71]], align 41487// CK1-32-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11488// CK1-32-NEXT: store i32 1, ptr [[TMP72]], align 41489// CK1-32-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 21490// CK1-32-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 41491// CK1-32-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 31492// CK1-32-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 41493// CK1-32-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 41494// CK1-32-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 41495// CK1-32-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 51496// CK1-32-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 41497// CK1-32-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 61498// CK1-32-NEXT: store ptr null, ptr [[TMP77]], align 41499// CK1-32-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 71500// CK1-32-NEXT: store ptr null, ptr [[TMP78]], align 41501// CK1-32-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 81502// CK1-32-NEXT: store i64 0, ptr [[TMP79]], align 81503// CK1-32-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 91504// CK1-32-NEXT: store i64 0, ptr [[TMP80]], align 81505// CK1-32-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 101506// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 41507// CK1-32-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 111508// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 41509// CK1-32-NEXT: [[TMP83:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 121510// CK1-32-NEXT: store i32 0, ptr [[TMP83]], align 41511// CK1-32-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])1512// CK1-32-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 01513// CK1-32-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]1514// CK1-32: omp_offload.failed17:1515// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]1516// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT18]]1517// CK1-32: omp_offload.cont18:1518// CK1-32-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 41519// CK1-32-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 41520// CK1-32-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 41521// CK1-32-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 41522// CK1-32-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 01523// CK1-32-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 41524// CK1-32-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 01525// CK1-32-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 41526// CK1-32-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 01527// CK1-32-NEXT: store ptr null, ptr [[TMP91]], align 41528// CK1-32-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 01529// CK1-32-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 01530// CK1-32-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81531// CK1-32-NEXT: [[TMP94:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 01532// CK1-32-NEXT: store i32 2, ptr [[TMP94]], align 41533// CK1-32-NEXT: [[TMP95:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11534// CK1-32-NEXT: store i32 1, ptr [[TMP95]], align 41535// CK1-32-NEXT: [[TMP96:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 21536// CK1-32-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 41537// CK1-32-NEXT: [[TMP97:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 31538// CK1-32-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 41539// CK1-32-NEXT: [[TMP98:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 41540// CK1-32-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 41541// CK1-32-NEXT: [[TMP99:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 51542// CK1-32-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 41543// CK1-32-NEXT: [[TMP100:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 61544// CK1-32-NEXT: store ptr null, ptr [[TMP100]], align 41545// CK1-32-NEXT: [[TMP101:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 71546// CK1-32-NEXT: store ptr null, ptr [[TMP101]], align 41547// CK1-32-NEXT: [[TMP102:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 81548// CK1-32-NEXT: store i64 0, ptr [[TMP102]], align 81549// CK1-32-NEXT: [[TMP103:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 91550// CK1-32-NEXT: store i64 0, ptr [[TMP103]], align 81551// CK1-32-NEXT: [[TMP104:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 101552// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 41553// CK1-32-NEXT: [[TMP105:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 111554// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 41555// CK1-32-NEXT: [[TMP106:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 121556// CK1-32-NEXT: store i32 0, ptr [[TMP106]], align 41557// CK1-32-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])1558// CK1-32-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 01559// CK1-32-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]1560// CK1-32: omp_offload.failed24:1561// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]1562// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT25]]1563// CK1-32: omp_offload.cont25:1564// CK1-32-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 41565// CK1-32-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 41566// CK1-32-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 41567// CK1-32-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 41568// CK1-32-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 01569// CK1-32-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 41570// CK1-32-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 01571// CK1-32-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 41572// CK1-32-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 01573// CK1-32-NEXT: store ptr null, ptr [[TMP114]], align 41574// CK1-32-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 01575// CK1-32-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 01576// CK1-32-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81577// CK1-32-NEXT: [[TMP117:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 01578// CK1-32-NEXT: store i32 2, ptr [[TMP117]], align 41579// CK1-32-NEXT: [[TMP118:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11580// CK1-32-NEXT: store i32 1, ptr [[TMP118]], align 41581// CK1-32-NEXT: [[TMP119:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 21582// CK1-32-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 41583// CK1-32-NEXT: [[TMP120:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 31584// CK1-32-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 41585// CK1-32-NEXT: [[TMP121:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 41586// CK1-32-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 41587// CK1-32-NEXT: [[TMP122:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 51588// CK1-32-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 41589// CK1-32-NEXT: [[TMP123:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 61590// CK1-32-NEXT: store ptr null, ptr [[TMP123]], align 41591// CK1-32-NEXT: [[TMP124:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 71592// CK1-32-NEXT: store ptr null, ptr [[TMP124]], align 41593// CK1-32-NEXT: [[TMP125:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 81594// CK1-32-NEXT: store i64 0, ptr [[TMP125]], align 81595// CK1-32-NEXT: [[TMP126:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 91596// CK1-32-NEXT: store i64 0, ptr [[TMP126]], align 81597// CK1-32-NEXT: [[TMP127:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 101598// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 41599// CK1-32-NEXT: [[TMP128:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 111600// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 41601// CK1-32-NEXT: [[TMP129:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 121602// CK1-32-NEXT: store i32 0, ptr [[TMP129]], align 41603// CK1-32-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])1604// CK1-32-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 01605// CK1-32-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]1606// CK1-32: omp_offload.failed31:1607// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]1608// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT32]]1609// CK1-32: omp_offload.cont32:1610// CK1-32-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 41611// CK1-32-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 41612// CK1-32-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 41613// CK1-32-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 41614// CK1-32-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 41615// CK1-32-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 41616// CK1-32-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 41617// CK1-32-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 41618// CK1-32-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 01619// CK1-32-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 41620// CK1-32-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 01621// CK1-32-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 41622// CK1-32-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 01623// CK1-32-NEXT: store ptr null, ptr [[TMP140]], align 41624// CK1-32-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 11625// CK1-32-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 41626// CK1-32-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 11627// CK1-32-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 41628// CK1-32-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 11629// CK1-32-NEXT: store ptr null, ptr [[TMP143]], align 41630// CK1-32-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 01631// CK1-32-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 01632// CK1-32-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81633// CK1-32-NEXT: [[TMP146:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 01634// CK1-32-NEXT: store i32 2, ptr [[TMP146]], align 41635// CK1-32-NEXT: [[TMP147:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11636// CK1-32-NEXT: store i32 2, ptr [[TMP147]], align 41637// CK1-32-NEXT: [[TMP148:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 21638// CK1-32-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 41639// CK1-32-NEXT: [[TMP149:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 31640// CK1-32-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 41641// CK1-32-NEXT: [[TMP150:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 41642// CK1-32-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 41643// CK1-32-NEXT: [[TMP151:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 51644// CK1-32-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 41645// CK1-32-NEXT: [[TMP152:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 61646// CK1-32-NEXT: store ptr null, ptr [[TMP152]], align 41647// CK1-32-NEXT: [[TMP153:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 71648// CK1-32-NEXT: store ptr null, ptr [[TMP153]], align 41649// CK1-32-NEXT: [[TMP154:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 81650// CK1-32-NEXT: store i64 0, ptr [[TMP154]], align 81651// CK1-32-NEXT: [[TMP155:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 91652// CK1-32-NEXT: store i64 0, ptr [[TMP155]], align 81653// CK1-32-NEXT: [[TMP156:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 101654// CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 41655// CK1-32-NEXT: [[TMP157:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 111656// CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 41657// CK1-32-NEXT: [[TMP158:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 121658// CK1-32-NEXT: store i32 0, ptr [[TMP158]], align 41659// CK1-32-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])1660// CK1-32-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 01661// CK1-32-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]1662// CK1-32: omp_offload.failed39:1663// CK1-32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]1664// CK1-32-NEXT: br label [[OMP_OFFLOAD_CONT40]]1665// CK1-32: omp_offload.cont40:1666// CK1-32-NEXT: ret void1667// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l371668// CK1-32-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {1669// CK1-32-NEXT: entry:1670// CK1-32-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 41671// CK1-32-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 41672// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 41673// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 11674// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 41675// CK1-32-NEXT: ret void1676// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l431677// CK1-32-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {1678// CK1-32-NEXT: entry:1679// CK1-32-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 41680// CK1-32-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 41681// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 41682// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP0]], i32 11683// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 41684// CK1-32-NEXT: ret void1685// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l491686// CK1-32-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {1687// CK1-32-NEXT: entry:1688// CK1-32-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 41689// CK1-32-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 41690// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 41691// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP0]], i32 11692// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 41693// CK1-32-NEXT: ret void1694// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l551695// CK1-32-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {1696// CK1-32-NEXT: entry:1697// CK1-32-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 41698// CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 41699// CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 41700// CK1-32-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 41701// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 41702// CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 41703// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 11704// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 41705// CK1-32-NEXT: ret void1706// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l611707// CK1-32-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {1708// CK1-32-NEXT: entry:1709// CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 41710// CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 41711// CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 41712// CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 41713// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 41714// CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 41715// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 11716// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 41717// CK1-32-NEXT: ret void1718// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l671719// CK1-32-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {1720// CK1-32-NEXT: entry:1721// CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 41722// CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 41723// CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 41724// CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 41725// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 41726// CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 41727// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 11728// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 41729// CK1-32-NEXT: ret void1730// CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l741731// CK1-32-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {1732// CK1-32-NEXT: entry:1733// CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 41734// CK1-32-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 41735// CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 41736// CK1-32-NEXT: [[_TMP1:%.*]] = alloca ptr, align 41737// CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 41738// CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 41739// CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 41740// CK1-32-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 41741// CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 41742// CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 41743// CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 11744// CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 41745// CK1-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 41746// CK1-32-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 41747// CK1-32-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 11748// CK1-32-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 41749// CK1-32-NEXT: ret void1750// CK1-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1751// CK1-32-SAME: () #[[ATTR3:[0-9]+]] {1752// CK1-32-NEXT: entry:1753// CK1-32-NEXT: call void @__tgt_register_requires(i64 1)1754// CK1-32-NEXT: ret void1755// CK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1756// CK2-SAME: () #[[ATTR5:[0-9]+]] {1757// CK2-NEXT: entry:1758// CK2-NEXT: call void @__tgt_register_requires(i64 1)1759// CK2-NEXT: ret void1760// CK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg1761// CK3-SAME: () #[[ATTR3:[0-9]+]] {1762// CK3-NEXT: entry:1763// CK3-NEXT: call void @__tgt_register_requires(i64 1)1764// CK3-NEXT: ret void1765// CK10-LABEL: define {{[^@]+}}@_Z3barRPfRPi1766// CK10-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[A:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) #[[ATTR0:[0-9]+]] {1767// CK10-NEXT: entry:1768// CK10-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 81769// CK10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 81770// CK10-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 81771// CK10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 81772// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 81773// CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 81774// CK10-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP1]])1775// CK10-NEXT: ret void1776//1777//1778// CK10-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_1779// CK10-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[LR:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[TR:%.*]]) #[[ATTR0]] comdat {1780// CK10-NEXT: entry:1781// CK10-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 81782// CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 81783// CK10-NEXT: [[L:%.*]] = alloca ptr, align 81784// CK10-NEXT: [[T:%.*]] = alloca ptr, align 81785// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 81786// CK10-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 81787// CK10-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 81788// CK10-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 81789// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 81790// CK10-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 81791// CK10-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 81792// CK10-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81793// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 81794// CK10-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 81795// CK10-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 81796// CK10-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81797// CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 81798// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 81799// CK10-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 81800// CK10-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 81801// CK10-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81802// CK10-NEXT: [[_TMP19:%.*]] = alloca ptr, align 81803// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 81804// CK10-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 81805// CK10-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 81806// CK10-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81807// CK10-NEXT: [[_TMP26:%.*]] = alloca ptr, align 81808// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 81809// CK10-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 81810// CK10-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 81811// CK10-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81812// CK10-NEXT: [[_TMP33:%.*]] = alloca ptr, align 81813// CK10-NEXT: [[_TMP34:%.*]] = alloca ptr, align 81814// CK10-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 81815// CK10-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 81816// CK10-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 81817// CK10-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 81818// CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 81819// CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 81820// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 81821// CK10-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01822// CK10-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 81823// CK10-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01824// CK10-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 81825// CK10-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 01826// CK10-NEXT: store ptr null, ptr [[TMP3]], align 81827// CK10-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 01828// CK10-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 01829// CK10-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 01830// CK10-NEXT: store i32 3, ptr [[TMP6]], align 41831// CK10-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11832// CK10-NEXT: store i32 1, ptr [[TMP7]], align 41833// CK10-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 21834// CK10-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 81835// CK10-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 31836// CK10-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 81837// CK10-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 41838// CK10-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 81839// CK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 51840// CK10-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 81841// CK10-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 61842// CK10-NEXT: store ptr null, ptr [[TMP12]], align 81843// CK10-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 71844// CK10-NEXT: store ptr null, ptr [[TMP13]], align 81845// CK10-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 81846// CK10-NEXT: store i64 0, ptr [[TMP14]], align 81847// CK10-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 91848// CK10-NEXT: store i64 0, ptr [[TMP15]], align 81849// CK10-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 101850// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 41851// CK10-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 111852// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 41853// CK10-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 121854// CK10-NEXT: store i32 0, ptr [[TMP18]], align 41855// CK10-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])1856// CK10-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 01857// CK10-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]1858// CK10: omp_offload.failed:1859// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]1860// CK10-NEXT: br label [[OMP_OFFLOAD_CONT]]1861// CK10: omp_offload.cont:1862// CK10-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 81863// CK10-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 01864// CK10-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 81865// CK10-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 01866// CK10-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 81867// CK10-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 01868// CK10-NEXT: store ptr null, ptr [[TMP24]], align 81869// CK10-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 01870// CK10-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 01871// CK10-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 01872// CK10-NEXT: store i32 3, ptr [[TMP27]], align 41873// CK10-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11874// CK10-NEXT: store i32 1, ptr [[TMP28]], align 41875// CK10-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 21876// CK10-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 81877// CK10-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 31878// CK10-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 81879// CK10-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 41880// CK10-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 81881// CK10-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 51882// CK10-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 81883// CK10-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 61884// CK10-NEXT: store ptr null, ptr [[TMP33]], align 81885// CK10-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 71886// CK10-NEXT: store ptr null, ptr [[TMP34]], align 81887// CK10-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 81888// CK10-NEXT: store i64 0, ptr [[TMP35]], align 81889// CK10-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 91890// CK10-NEXT: store i64 0, ptr [[TMP36]], align 81891// CK10-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 101892// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 41893// CK10-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 111894// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 41895// CK10-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 121896// CK10-NEXT: store i32 0, ptr [[TMP39]], align 41897// CK10-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])1898// CK10-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 01899// CK10-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]1900// CK10: omp_offload.failed5:1901// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]1902// CK10-NEXT: br label [[OMP_OFFLOAD_CONT6]]1903// CK10: omp_offload.cont6:1904// CK10-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 81905// CK10-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 01906// CK10-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 81907// CK10-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 01908// CK10-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 81909// CK10-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 01910// CK10-NEXT: store ptr null, ptr [[TMP45]], align 81911// CK10-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 01912// CK10-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 01913// CK10-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 01914// CK10-NEXT: store i32 3, ptr [[TMP48]], align 41915// CK10-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11916// CK10-NEXT: store i32 1, ptr [[TMP49]], align 41917// CK10-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 21918// CK10-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 81919// CK10-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 31920// CK10-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 81921// CK10-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 41922// CK10-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 81923// CK10-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 51924// CK10-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 81925// CK10-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 61926// CK10-NEXT: store ptr null, ptr [[TMP54]], align 81927// CK10-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 71928// CK10-NEXT: store ptr null, ptr [[TMP55]], align 81929// CK10-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 81930// CK10-NEXT: store i64 0, ptr [[TMP56]], align 81931// CK10-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 91932// CK10-NEXT: store i64 0, ptr [[TMP57]], align 81933// CK10-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 101934// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 41935// CK10-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 111936// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 41937// CK10-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 121938// CK10-NEXT: store i32 0, ptr [[TMP60]], align 41939// CK10-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])1940// CK10-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 01941// CK10-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]1942// CK10: omp_offload.failed11:1943// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]1944// CK10-NEXT: br label [[OMP_OFFLOAD_CONT12]]1945// CK10: omp_offload.cont12:1946// CK10-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 81947// CK10-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 81948// CK10-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 81949// CK10-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 81950// CK10-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 01951// CK10-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 81952// CK10-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 01953// CK10-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 81954// CK10-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 01955// CK10-NEXT: store ptr null, ptr [[TMP68]], align 81956// CK10-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 01957// CK10-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 01958// CK10-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 01959// CK10-NEXT: store i32 3, ptr [[TMP71]], align 41960// CK10-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11961// CK10-NEXT: store i32 1, ptr [[TMP72]], align 41962// CK10-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 21963// CK10-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 81964// CK10-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 31965// CK10-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 81966// CK10-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 41967// CK10-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 81968// CK10-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 51969// CK10-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 81970// CK10-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 61971// CK10-NEXT: store ptr null, ptr [[TMP77]], align 81972// CK10-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 71973// CK10-NEXT: store ptr null, ptr [[TMP78]], align 81974// CK10-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 81975// CK10-NEXT: store i64 0, ptr [[TMP79]], align 81976// CK10-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 91977// CK10-NEXT: store i64 0, ptr [[TMP80]], align 81978// CK10-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 101979// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 41980// CK10-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 111981// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 41982// CK10-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 121983// CK10-NEXT: store i32 0, ptr [[TMP83]], align 41984// CK10-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])1985// CK10-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 01986// CK10-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]1987// CK10: omp_offload.failed17:1988// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]1989// CK10-NEXT: br label [[OMP_OFFLOAD_CONT18]]1990// CK10: omp_offload.cont18:1991// CK10-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 81992// CK10-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 81993// CK10-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 81994// CK10-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 81995// CK10-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 01996// CK10-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 81997// CK10-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 01998// CK10-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 81999// CK10-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 02000// CK10-NEXT: store ptr null, ptr [[TMP91]], align 82001// CK10-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 02002// CK10-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 02003// CK10-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 02004// CK10-NEXT: store i32 3, ptr [[TMP94]], align 42005// CK10-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12006// CK10-NEXT: store i32 1, ptr [[TMP95]], align 42007// CK10-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 22008// CK10-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 82009// CK10-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 32010// CK10-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 82011// CK10-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 42012// CK10-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 82013// CK10-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 52014// CK10-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 82015// CK10-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 62016// CK10-NEXT: store ptr null, ptr [[TMP100]], align 82017// CK10-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 72018// CK10-NEXT: store ptr null, ptr [[TMP101]], align 82019// CK10-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 82020// CK10-NEXT: store i64 0, ptr [[TMP102]], align 82021// CK10-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 92022// CK10-NEXT: store i64 0, ptr [[TMP103]], align 82023// CK10-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 102024// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 42025// CK10-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 112026// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 42027// CK10-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 122028// CK10-NEXT: store i32 0, ptr [[TMP106]], align 42029// CK10-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])2030// CK10-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 02031// CK10-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]2032// CK10: omp_offload.failed24:2033// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]2034// CK10-NEXT: br label [[OMP_OFFLOAD_CONT25]]2035// CK10: omp_offload.cont25:2036// CK10-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 82037// CK10-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 82038// CK10-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 82039// CK10-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 82040// CK10-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02041// CK10-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 82042// CK10-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02043// CK10-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 82044// CK10-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 02045// CK10-NEXT: store ptr null, ptr [[TMP114]], align 82046// CK10-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02047// CK10-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02048// CK10-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 02049// CK10-NEXT: store i32 3, ptr [[TMP117]], align 42050// CK10-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12051// CK10-NEXT: store i32 1, ptr [[TMP118]], align 42052// CK10-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 22053// CK10-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 82054// CK10-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 32055// CK10-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 82056// CK10-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 42057// CK10-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 82058// CK10-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 52059// CK10-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 82060// CK10-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 62061// CK10-NEXT: store ptr null, ptr [[TMP123]], align 82062// CK10-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 72063// CK10-NEXT: store ptr null, ptr [[TMP124]], align 82064// CK10-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 82065// CK10-NEXT: store i64 0, ptr [[TMP125]], align 82066// CK10-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 92067// CK10-NEXT: store i64 0, ptr [[TMP126]], align 82068// CK10-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 102069// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 42070// CK10-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 112071// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 42072// CK10-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 122073// CK10-NEXT: store i32 0, ptr [[TMP129]], align 42074// CK10-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])2075// CK10-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 02076// CK10-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]2077// CK10: omp_offload.failed31:2078// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]2079// CK10-NEXT: br label [[OMP_OFFLOAD_CONT32]]2080// CK10: omp_offload.cont32:2081// CK10-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 82082// CK10-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 82083// CK10-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 82084// CK10-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 82085// CK10-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 82086// CK10-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 82087// CK10-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 82088// CK10-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 82089// CK10-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 02090// CK10-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 82091// CK10-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 02092// CK10-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 82093// CK10-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 02094// CK10-NEXT: store ptr null, ptr [[TMP140]], align 82095// CK10-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 12096// CK10-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 82097// CK10-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 12098// CK10-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 82099// CK10-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 12100// CK10-NEXT: store ptr null, ptr [[TMP143]], align 82101// CK10-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 02102// CK10-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 02103// CK10-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 02104// CK10-NEXT: store i32 3, ptr [[TMP146]], align 42105// CK10-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12106// CK10-NEXT: store i32 2, ptr [[TMP147]], align 42107// CK10-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 22108// CK10-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 82109// CK10-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 32110// CK10-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 82111// CK10-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 42112// CK10-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 82113// CK10-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 52114// CK10-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 82115// CK10-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 62116// CK10-NEXT: store ptr null, ptr [[TMP152]], align 82117// CK10-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 72118// CK10-NEXT: store ptr null, ptr [[TMP153]], align 82119// CK10-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 82120// CK10-NEXT: store i64 0, ptr [[TMP154]], align 82121// CK10-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 92122// CK10-NEXT: store i64 0, ptr [[TMP155]], align 82123// CK10-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 102124// CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 42125// CK10-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 112126// CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 42127// CK10-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 122128// CK10-NEXT: store i32 0, ptr [[TMP158]], align 42129// CK10-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])2130// CK10-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 02131// CK10-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]2132// CK10: omp_offload.failed39:2133// CK10-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]2134// CK10-NEXT: br label [[OMP_OFFLOAD_CONT40]]2135// CK10: omp_offload.cont40:2136// CK10-NEXT: ret void2137//2138//2139// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l372140// CK10-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {2141// CK10-NEXT: entry:2142// CK10-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 82143// CK10-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 82144// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 82145// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 12146// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 82147// CK10-NEXT: ret void2148//2149//2150// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l432151// CK10-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {2152// CK10-NEXT: entry:2153// CK10-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 82154// CK10-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 82155// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 82156// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 12157// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 82158// CK10-NEXT: ret void2159//2160//2161// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l492162// CK10-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {2163// CK10-NEXT: entry:2164// CK10-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 82165// CK10-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 82166// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 82167// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 12168// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 82169// CK10-NEXT: ret void2170//2171//2172// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l552173// CK10-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {2174// CK10-NEXT: entry:2175// CK10-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 82176// CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 82177// CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 82178// CK10-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 82179// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82180// CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82181// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 12182// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82183// CK10-NEXT: ret void2184//2185//2186// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l612187// CK10-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {2188// CK10-NEXT: entry:2189// CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82190// CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 82191// CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82192// CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82193// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82194// CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82195// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12196// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82197// CK10-NEXT: ret void2198//2199//2200// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l672201// CK10-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {2202// CK10-NEXT: entry:2203// CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82204// CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 82205// CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82206// CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82207// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82208// CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82209// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12210// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82211// CK10-NEXT: ret void2212//2213//2214// CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l742215// CK10-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {2216// CK10-NEXT: entry:2217// CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82218// CK10-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 82219// CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 82220// CK10-NEXT: [[_TMP1:%.*]] = alloca ptr, align 82221// CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82222// CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 82223// CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82224// CK10-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 82225// CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82226// CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82227// CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12228// CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82229// CK10-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 82230// CK10-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 82231// CK10-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 12232// CK10-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 82233// CK10-NEXT: ret void2234//2235//2236// CK11-LABEL: define {{[^@]+}}@_Z3barRPfRPi2237// CK11-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[A:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) #[[ATTR0:[0-9]+]] {2238// CK11-NEXT: entry:2239// CK11-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 82240// CK11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 82241// CK11-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 82242// CK11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 82243// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 82244// CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 82245// CK11-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP1]])2246// CK11-NEXT: ret void2247//2248//2249// CK11-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_2250// CK11-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[LR:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[TR:%.*]]) #[[ATTR0]] comdat {2251// CK11-NEXT: entry:2252// CK11-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 82253// CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82254// CK11-NEXT: [[L:%.*]] = alloca ptr, align 82255// CK11-NEXT: [[T:%.*]] = alloca ptr, align 82256// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 82257// CK11-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 82258// CK11-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 82259// CK11-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 82260// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 82261// CK11-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 82262// CK11-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 82263// CK11-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82264// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 82265// CK11-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 82266// CK11-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 82267// CK11-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82268// CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 82269// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 82270// CK11-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 82271// CK11-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 82272// CK11-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82273// CK11-NEXT: [[_TMP19:%.*]] = alloca ptr, align 82274// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 82275// CK11-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 82276// CK11-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 82277// CK11-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82278// CK11-NEXT: [[_TMP26:%.*]] = alloca ptr, align 82279// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 82280// CK11-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 82281// CK11-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 82282// CK11-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82283// CK11-NEXT: [[_TMP33:%.*]] = alloca ptr, align 82284// CK11-NEXT: [[_TMP34:%.*]] = alloca ptr, align 82285// CK11-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 82286// CK11-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 82287// CK11-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 82288// CK11-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82289// CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 82290// CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82291// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 82292// CK11-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 02293// CK11-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 82294// CK11-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 02295// CK11-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 82296// CK11-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 02297// CK11-NEXT: store ptr null, ptr [[TMP3]], align 82298// CK11-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 02299// CK11-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 02300// CK11-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 02301// CK11-NEXT: store i32 3, ptr [[TMP6]], align 42302// CK11-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12303// CK11-NEXT: store i32 1, ptr [[TMP7]], align 42304// CK11-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 22305// CK11-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 82306// CK11-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 32307// CK11-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 82308// CK11-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 42309// CK11-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 82310// CK11-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 52311// CK11-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 82312// CK11-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 62313// CK11-NEXT: store ptr null, ptr [[TMP12]], align 82314// CK11-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 72315// CK11-NEXT: store ptr null, ptr [[TMP13]], align 82316// CK11-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 82317// CK11-NEXT: store i64 0, ptr [[TMP14]], align 82318// CK11-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 92319// CK11-NEXT: store i64 0, ptr [[TMP15]], align 82320// CK11-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 102321// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 42322// CK11-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 112323// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 42324// CK11-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 122325// CK11-NEXT: store i32 0, ptr [[TMP18]], align 42326// CK11-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])2327// CK11-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 02328// CK11-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]2329// CK11: omp_offload.failed:2330// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]2331// CK11-NEXT: br label [[OMP_OFFLOAD_CONT]]2332// CK11: omp_offload.cont:2333// CK11-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 82334// CK11-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 02335// CK11-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 82336// CK11-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 02337// CK11-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 82338// CK11-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 02339// CK11-NEXT: store ptr null, ptr [[TMP24]], align 82340// CK11-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 02341// CK11-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 02342// CK11-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 02343// CK11-NEXT: store i32 3, ptr [[TMP27]], align 42344// CK11-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12345// CK11-NEXT: store i32 1, ptr [[TMP28]], align 42346// CK11-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 22347// CK11-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 82348// CK11-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 32349// CK11-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 82350// CK11-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 42351// CK11-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 82352// CK11-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 52353// CK11-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 82354// CK11-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 62355// CK11-NEXT: store ptr null, ptr [[TMP33]], align 82356// CK11-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 72357// CK11-NEXT: store ptr null, ptr [[TMP34]], align 82358// CK11-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 82359// CK11-NEXT: store i64 0, ptr [[TMP35]], align 82360// CK11-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 92361// CK11-NEXT: store i64 0, ptr [[TMP36]], align 82362// CK11-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 102363// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 42364// CK11-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 112365// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 42366// CK11-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 122367// CK11-NEXT: store i32 0, ptr [[TMP39]], align 42368// CK11-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])2369// CK11-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 02370// CK11-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]2371// CK11: omp_offload.failed5:2372// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]2373// CK11-NEXT: br label [[OMP_OFFLOAD_CONT6]]2374// CK11: omp_offload.cont6:2375// CK11-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 82376// CK11-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 02377// CK11-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 82378// CK11-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 02379// CK11-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 82380// CK11-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 02381// CK11-NEXT: store ptr null, ptr [[TMP45]], align 82382// CK11-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 02383// CK11-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 02384// CK11-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 02385// CK11-NEXT: store i32 3, ptr [[TMP48]], align 42386// CK11-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12387// CK11-NEXT: store i32 1, ptr [[TMP49]], align 42388// CK11-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 22389// CK11-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 82390// CK11-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 32391// CK11-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 82392// CK11-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 42393// CK11-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 82394// CK11-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 52395// CK11-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 82396// CK11-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 62397// CK11-NEXT: store ptr null, ptr [[TMP54]], align 82398// CK11-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 72399// CK11-NEXT: store ptr null, ptr [[TMP55]], align 82400// CK11-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 82401// CK11-NEXT: store i64 0, ptr [[TMP56]], align 82402// CK11-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 92403// CK11-NEXT: store i64 0, ptr [[TMP57]], align 82404// CK11-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 102405// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 42406// CK11-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 112407// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 42408// CK11-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 122409// CK11-NEXT: store i32 0, ptr [[TMP60]], align 42410// CK11-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])2411// CK11-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 02412// CK11-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]2413// CK11: omp_offload.failed11:2414// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]2415// CK11-NEXT: br label [[OMP_OFFLOAD_CONT12]]2416// CK11: omp_offload.cont12:2417// CK11-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 82418// CK11-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 82419// CK11-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 82420// CK11-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 82421// CK11-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 02422// CK11-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 82423// CK11-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 02424// CK11-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 82425// CK11-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 02426// CK11-NEXT: store ptr null, ptr [[TMP68]], align 82427// CK11-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 02428// CK11-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 02429// CK11-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 02430// CK11-NEXT: store i32 3, ptr [[TMP71]], align 42431// CK11-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12432// CK11-NEXT: store i32 1, ptr [[TMP72]], align 42433// CK11-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 22434// CK11-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 82435// CK11-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 32436// CK11-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 82437// CK11-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 42438// CK11-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 82439// CK11-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 52440// CK11-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 82441// CK11-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 62442// CK11-NEXT: store ptr null, ptr [[TMP77]], align 82443// CK11-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 72444// CK11-NEXT: store ptr null, ptr [[TMP78]], align 82445// CK11-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 82446// CK11-NEXT: store i64 0, ptr [[TMP79]], align 82447// CK11-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 92448// CK11-NEXT: store i64 0, ptr [[TMP80]], align 82449// CK11-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 102450// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 42451// CK11-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 112452// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 42453// CK11-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 122454// CK11-NEXT: store i32 0, ptr [[TMP83]], align 42455// CK11-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])2456// CK11-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 02457// CK11-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]2458// CK11: omp_offload.failed17:2459// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]2460// CK11-NEXT: br label [[OMP_OFFLOAD_CONT18]]2461// CK11: omp_offload.cont18:2462// CK11-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 82463// CK11-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 82464// CK11-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 82465// CK11-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 82466// CK11-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 02467// CK11-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 82468// CK11-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 02469// CK11-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 82470// CK11-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 02471// CK11-NEXT: store ptr null, ptr [[TMP91]], align 82472// CK11-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 02473// CK11-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 02474// CK11-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 02475// CK11-NEXT: store i32 3, ptr [[TMP94]], align 42476// CK11-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12477// CK11-NEXT: store i32 1, ptr [[TMP95]], align 42478// CK11-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 22479// CK11-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 82480// CK11-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 32481// CK11-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 82482// CK11-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 42483// CK11-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 82484// CK11-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 52485// CK11-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 82486// CK11-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 62487// CK11-NEXT: store ptr null, ptr [[TMP100]], align 82488// CK11-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 72489// CK11-NEXT: store ptr null, ptr [[TMP101]], align 82490// CK11-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 82491// CK11-NEXT: store i64 0, ptr [[TMP102]], align 82492// CK11-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 92493// CK11-NEXT: store i64 0, ptr [[TMP103]], align 82494// CK11-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 102495// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 42496// CK11-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 112497// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 42498// CK11-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 122499// CK11-NEXT: store i32 0, ptr [[TMP106]], align 42500// CK11-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])2501// CK11-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 02502// CK11-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]2503// CK11: omp_offload.failed24:2504// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]2505// CK11-NEXT: br label [[OMP_OFFLOAD_CONT25]]2506// CK11: omp_offload.cont25:2507// CK11-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 82508// CK11-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 82509// CK11-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 82510// CK11-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 82511// CK11-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02512// CK11-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 82513// CK11-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02514// CK11-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 82515// CK11-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 02516// CK11-NEXT: store ptr null, ptr [[TMP114]], align 82517// CK11-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02518// CK11-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02519// CK11-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 02520// CK11-NEXT: store i32 3, ptr [[TMP117]], align 42521// CK11-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12522// CK11-NEXT: store i32 1, ptr [[TMP118]], align 42523// CK11-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 22524// CK11-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 82525// CK11-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 32526// CK11-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 82527// CK11-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 42528// CK11-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 82529// CK11-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 52530// CK11-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 82531// CK11-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 62532// CK11-NEXT: store ptr null, ptr [[TMP123]], align 82533// CK11-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 72534// CK11-NEXT: store ptr null, ptr [[TMP124]], align 82535// CK11-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 82536// CK11-NEXT: store i64 0, ptr [[TMP125]], align 82537// CK11-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 92538// CK11-NEXT: store i64 0, ptr [[TMP126]], align 82539// CK11-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 102540// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 42541// CK11-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 112542// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 42543// CK11-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 122544// CK11-NEXT: store i32 0, ptr [[TMP129]], align 42545// CK11-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])2546// CK11-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 02547// CK11-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]2548// CK11: omp_offload.failed31:2549// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]2550// CK11-NEXT: br label [[OMP_OFFLOAD_CONT32]]2551// CK11: omp_offload.cont32:2552// CK11-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 82553// CK11-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 82554// CK11-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 82555// CK11-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 82556// CK11-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 82557// CK11-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 82558// CK11-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 82559// CK11-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 82560// CK11-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 02561// CK11-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 82562// CK11-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 02563// CK11-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 82564// CK11-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 02565// CK11-NEXT: store ptr null, ptr [[TMP140]], align 82566// CK11-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 12567// CK11-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 82568// CK11-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 12569// CK11-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 82570// CK11-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 12571// CK11-NEXT: store ptr null, ptr [[TMP143]], align 82572// CK11-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 02573// CK11-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 02574// CK11-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 02575// CK11-NEXT: store i32 3, ptr [[TMP146]], align 42576// CK11-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12577// CK11-NEXT: store i32 2, ptr [[TMP147]], align 42578// CK11-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 22579// CK11-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 82580// CK11-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 32581// CK11-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 82582// CK11-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 42583// CK11-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 82584// CK11-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 52585// CK11-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 82586// CK11-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 62587// CK11-NEXT: store ptr null, ptr [[TMP152]], align 82588// CK11-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 72589// CK11-NEXT: store ptr null, ptr [[TMP153]], align 82590// CK11-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 82591// CK11-NEXT: store i64 0, ptr [[TMP154]], align 82592// CK11-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 92593// CK11-NEXT: store i64 0, ptr [[TMP155]], align 82594// CK11-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 102595// CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 42596// CK11-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 112597// CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 42598// CK11-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 122599// CK11-NEXT: store i32 0, ptr [[TMP158]], align 42600// CK11-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])2601// CK11-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 02602// CK11-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]2603// CK11: omp_offload.failed39:2604// CK11-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]2605// CK11-NEXT: br label [[OMP_OFFLOAD_CONT40]]2606// CK11: omp_offload.cont40:2607// CK11-NEXT: ret void2608//2609//2610// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l372611// CK11-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {2612// CK11-NEXT: entry:2613// CK11-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 82614// CK11-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 82615// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 82616// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 12617// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 82618// CK11-NEXT: ret void2619//2620//2621// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l432622// CK11-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {2623// CK11-NEXT: entry:2624// CK11-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 82625// CK11-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 82626// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 82627// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 12628// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 82629// CK11-NEXT: ret void2630//2631//2632// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l492633// CK11-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {2634// CK11-NEXT: entry:2635// CK11-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 82636// CK11-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 82637// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 82638// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 12639// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 82640// CK11-NEXT: ret void2641//2642//2643// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l552644// CK11-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {2645// CK11-NEXT: entry:2646// CK11-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 82647// CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 82648// CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 82649// CK11-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 82650// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82651// CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82652// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 12653// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82654// CK11-NEXT: ret void2655//2656//2657// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l612658// CK11-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {2659// CK11-NEXT: entry:2660// CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82661// CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 82662// CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82663// CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82664// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82665// CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82666// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12667// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82668// CK11-NEXT: ret void2669//2670//2671// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l672672// CK11-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {2673// CK11-NEXT: entry:2674// CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82675// CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 82676// CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82677// CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82678// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82679// CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82680// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12681// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82682// CK11-NEXT: ret void2683//2684//2685// CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l742686// CK11-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {2687// CK11-NEXT: entry:2688// CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 82689// CK11-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 82690// CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 82691// CK11-NEXT: [[_TMP1:%.*]] = alloca ptr, align 82692// CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 82693// CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 82694// CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 82695// CK11-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 82696// CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 82697// CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 82698// CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 12699// CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 82700// CK11-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 82701// CK11-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 82702// CK11-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 12703// CK11-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 82704// CK11-NEXT: ret void2705//2706//2707// CK12-LABEL: define {{[^@]+}}@_Z3barRPfRPi2708// CK12-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[A:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) #[[ATTR0:[0-9]+]] {2709// CK12-NEXT: entry:2710// CK12-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 42711// CK12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 42712// CK12-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 42713// CK12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 42714// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 42715// CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 42716// CK12-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP1]])2717// CK12-NEXT: ret void2718//2719//2720// CK12-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_2721// CK12-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[LR:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[TR:%.*]]) #[[ATTR0]] comdat {2722// CK12-NEXT: entry:2723// CK12-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 42724// CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 42725// CK12-NEXT: [[L:%.*]] = alloca ptr, align 42726// CK12-NEXT: [[T:%.*]] = alloca ptr, align 42727// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 42728// CK12-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 42729// CK12-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 42730// CK12-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 82731// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 42732// CK12-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 42733// CK12-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 42734// CK12-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82735// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 42736// CK12-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 42737// CK12-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 42738// CK12-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82739// CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 42740// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 42741// CK12-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 42742// CK12-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 42743// CK12-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82744// CK12-NEXT: [[_TMP19:%.*]] = alloca ptr, align 42745// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 42746// CK12-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 42747// CK12-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 42748// CK12-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82749// CK12-NEXT: [[_TMP26:%.*]] = alloca ptr, align 42750// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 42751// CK12-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 42752// CK12-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 42753// CK12-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82754// CK12-NEXT: [[_TMP33:%.*]] = alloca ptr, align 42755// CK12-NEXT: [[_TMP34:%.*]] = alloca ptr, align 42756// CK12-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 42757// CK12-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 42758// CK12-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 42759// CK12-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 82760// CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 42761// CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 42762// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 42763// CK12-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 02764// CK12-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 42765// CK12-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 02766// CK12-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 42767// CK12-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 02768// CK12-NEXT: store ptr null, ptr [[TMP3]], align 42769// CK12-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 02770// CK12-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 02771// CK12-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 02772// CK12-NEXT: store i32 3, ptr [[TMP6]], align 42773// CK12-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12774// CK12-NEXT: store i32 1, ptr [[TMP7]], align 42775// CK12-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 22776// CK12-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 42777// CK12-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 32778// CK12-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 42779// CK12-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 42780// CK12-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 42781// CK12-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 52782// CK12-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 42783// CK12-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 62784// CK12-NEXT: store ptr null, ptr [[TMP12]], align 42785// CK12-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 72786// CK12-NEXT: store ptr null, ptr [[TMP13]], align 42787// CK12-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 82788// CK12-NEXT: store i64 0, ptr [[TMP14]], align 82789// CK12-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 92790// CK12-NEXT: store i64 0, ptr [[TMP15]], align 82791// CK12-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 102792// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 42793// CK12-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 112794// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 42795// CK12-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 122796// CK12-NEXT: store i32 0, ptr [[TMP18]], align 42797// CK12-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])2798// CK12-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 02799// CK12-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]2800// CK12: omp_offload.failed:2801// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]2802// CK12-NEXT: br label [[OMP_OFFLOAD_CONT]]2803// CK12: omp_offload.cont:2804// CK12-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 42805// CK12-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 02806// CK12-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 42807// CK12-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 02808// CK12-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 42809// CK12-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 02810// CK12-NEXT: store ptr null, ptr [[TMP24]], align 42811// CK12-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 02812// CK12-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 02813// CK12-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 02814// CK12-NEXT: store i32 3, ptr [[TMP27]], align 42815// CK12-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12816// CK12-NEXT: store i32 1, ptr [[TMP28]], align 42817// CK12-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 22818// CK12-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 42819// CK12-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 32820// CK12-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 42821// CK12-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 42822// CK12-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 42823// CK12-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 52824// CK12-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 42825// CK12-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 62826// CK12-NEXT: store ptr null, ptr [[TMP33]], align 42827// CK12-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 72828// CK12-NEXT: store ptr null, ptr [[TMP34]], align 42829// CK12-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 82830// CK12-NEXT: store i64 0, ptr [[TMP35]], align 82831// CK12-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 92832// CK12-NEXT: store i64 0, ptr [[TMP36]], align 82833// CK12-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 102834// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 42835// CK12-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 112836// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 42837// CK12-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 122838// CK12-NEXT: store i32 0, ptr [[TMP39]], align 42839// CK12-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])2840// CK12-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 02841// CK12-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]2842// CK12: omp_offload.failed5:2843// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]2844// CK12-NEXT: br label [[OMP_OFFLOAD_CONT6]]2845// CK12: omp_offload.cont6:2846// CK12-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 42847// CK12-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 02848// CK12-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 42849// CK12-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 02850// CK12-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 42851// CK12-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 02852// CK12-NEXT: store ptr null, ptr [[TMP45]], align 42853// CK12-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 02854// CK12-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 02855// CK12-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 02856// CK12-NEXT: store i32 3, ptr [[TMP48]], align 42857// CK12-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12858// CK12-NEXT: store i32 1, ptr [[TMP49]], align 42859// CK12-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 22860// CK12-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 42861// CK12-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 32862// CK12-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 42863// CK12-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 42864// CK12-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 42865// CK12-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 52866// CK12-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 42867// CK12-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 62868// CK12-NEXT: store ptr null, ptr [[TMP54]], align 42869// CK12-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 72870// CK12-NEXT: store ptr null, ptr [[TMP55]], align 42871// CK12-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 82872// CK12-NEXT: store i64 0, ptr [[TMP56]], align 82873// CK12-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 92874// CK12-NEXT: store i64 0, ptr [[TMP57]], align 82875// CK12-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 102876// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 42877// CK12-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 112878// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 42879// CK12-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 122880// CK12-NEXT: store i32 0, ptr [[TMP60]], align 42881// CK12-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])2882// CK12-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 02883// CK12-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]2884// CK12: omp_offload.failed11:2885// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]2886// CK12-NEXT: br label [[OMP_OFFLOAD_CONT12]]2887// CK12: omp_offload.cont12:2888// CK12-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 42889// CK12-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 42890// CK12-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 42891// CK12-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 42892// CK12-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 02893// CK12-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 42894// CK12-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 02895// CK12-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 42896// CK12-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 02897// CK12-NEXT: store ptr null, ptr [[TMP68]], align 42898// CK12-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 02899// CK12-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 02900// CK12-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 02901// CK12-NEXT: store i32 3, ptr [[TMP71]], align 42902// CK12-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12903// CK12-NEXT: store i32 1, ptr [[TMP72]], align 42904// CK12-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 22905// CK12-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 42906// CK12-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 32907// CK12-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 42908// CK12-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 42909// CK12-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 42910// CK12-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 52911// CK12-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 42912// CK12-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 62913// CK12-NEXT: store ptr null, ptr [[TMP77]], align 42914// CK12-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 72915// CK12-NEXT: store ptr null, ptr [[TMP78]], align 42916// CK12-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 82917// CK12-NEXT: store i64 0, ptr [[TMP79]], align 82918// CK12-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 92919// CK12-NEXT: store i64 0, ptr [[TMP80]], align 82920// CK12-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 102921// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 42922// CK12-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 112923// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 42924// CK12-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 122925// CK12-NEXT: store i32 0, ptr [[TMP83]], align 42926// CK12-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])2927// CK12-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 02928// CK12-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]2929// CK12: omp_offload.failed17:2930// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]2931// CK12-NEXT: br label [[OMP_OFFLOAD_CONT18]]2932// CK12: omp_offload.cont18:2933// CK12-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 42934// CK12-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 42935// CK12-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 42936// CK12-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 42937// CK12-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 02938// CK12-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 42939// CK12-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 02940// CK12-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 42941// CK12-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 02942// CK12-NEXT: store ptr null, ptr [[TMP91]], align 42943// CK12-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 02944// CK12-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 02945// CK12-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 02946// CK12-NEXT: store i32 3, ptr [[TMP94]], align 42947// CK12-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12948// CK12-NEXT: store i32 1, ptr [[TMP95]], align 42949// CK12-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 22950// CK12-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 42951// CK12-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 32952// CK12-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 42953// CK12-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 42954// CK12-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 42955// CK12-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 52956// CK12-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 42957// CK12-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 62958// CK12-NEXT: store ptr null, ptr [[TMP100]], align 42959// CK12-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 72960// CK12-NEXT: store ptr null, ptr [[TMP101]], align 42961// CK12-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 82962// CK12-NEXT: store i64 0, ptr [[TMP102]], align 82963// CK12-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 92964// CK12-NEXT: store i64 0, ptr [[TMP103]], align 82965// CK12-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 102966// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 42967// CK12-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 112968// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 42969// CK12-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 122970// CK12-NEXT: store i32 0, ptr [[TMP106]], align 42971// CK12-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])2972// CK12-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 02973// CK12-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]2974// CK12: omp_offload.failed24:2975// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]2976// CK12-NEXT: br label [[OMP_OFFLOAD_CONT25]]2977// CK12: omp_offload.cont25:2978// CK12-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 42979// CK12-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 42980// CK12-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 42981// CK12-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 42982// CK12-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02983// CK12-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 42984// CK12-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02985// CK12-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 42986// CK12-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 02987// CK12-NEXT: store ptr null, ptr [[TMP114]], align 42988// CK12-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 02989// CK12-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 02990// CK12-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 02991// CK12-NEXT: store i32 3, ptr [[TMP117]], align 42992// CK12-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12993// CK12-NEXT: store i32 1, ptr [[TMP118]], align 42994// CK12-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 22995// CK12-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 42996// CK12-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 32997// CK12-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 42998// CK12-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 42999// CK12-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 43000// CK12-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 53001// CK12-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 43002// CK12-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 63003// CK12-NEXT: store ptr null, ptr [[TMP123]], align 43004// CK12-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 73005// CK12-NEXT: store ptr null, ptr [[TMP124]], align 43006// CK12-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 83007// CK12-NEXT: store i64 0, ptr [[TMP125]], align 83008// CK12-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 93009// CK12-NEXT: store i64 0, ptr [[TMP126]], align 83010// CK12-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 103011// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 43012// CK12-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 113013// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 43014// CK12-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 123015// CK12-NEXT: store i32 0, ptr [[TMP129]], align 43016// CK12-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])3017// CK12-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 03018// CK12-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]3019// CK12: omp_offload.failed31:3020// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]3021// CK12-NEXT: br label [[OMP_OFFLOAD_CONT32]]3022// CK12: omp_offload.cont32:3023// CK12-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 43024// CK12-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 43025// CK12-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 43026// CK12-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 43027// CK12-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 43028// CK12-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 43029// CK12-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 43030// CK12-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 43031// CK12-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 03032// CK12-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 43033// CK12-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 03034// CK12-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 43035// CK12-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 03036// CK12-NEXT: store ptr null, ptr [[TMP140]], align 43037// CK12-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 13038// CK12-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 43039// CK12-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 13040// CK12-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 43041// CK12-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 13042// CK12-NEXT: store ptr null, ptr [[TMP143]], align 43043// CK12-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 03044// CK12-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 03045// CK12-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 03046// CK12-NEXT: store i32 3, ptr [[TMP146]], align 43047// CK12-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 13048// CK12-NEXT: store i32 2, ptr [[TMP147]], align 43049// CK12-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 23050// CK12-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 43051// CK12-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 33052// CK12-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 43053// CK12-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 43054// CK12-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 43055// CK12-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 53056// CK12-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 43057// CK12-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 63058// CK12-NEXT: store ptr null, ptr [[TMP152]], align 43059// CK12-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 73060// CK12-NEXT: store ptr null, ptr [[TMP153]], align 43061// CK12-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 83062// CK12-NEXT: store i64 0, ptr [[TMP154]], align 83063// CK12-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 93064// CK12-NEXT: store i64 0, ptr [[TMP155]], align 83065// CK12-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 103066// CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 43067// CK12-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 113068// CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 43069// CK12-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 123070// CK12-NEXT: store i32 0, ptr [[TMP158]], align 43071// CK12-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])3072// CK12-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 03073// CK12-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]3074// CK12: omp_offload.failed39:3075// CK12-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]3076// CK12-NEXT: br label [[OMP_OFFLOAD_CONT40]]3077// CK12: omp_offload.cont40:3078// CK12-NEXT: ret void3079//3080//3081// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l373082// CK12-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {3083// CK12-NEXT: entry:3084// CK12-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 43085// CK12-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 43086// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 43087// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13088// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 43089// CK12-NEXT: ret void3090//3091//3092// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l433093// CK12-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {3094// CK12-NEXT: entry:3095// CK12-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 43096// CK12-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 43097// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 43098// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 13099// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 43100// CK12-NEXT: ret void3101//3102//3103// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l493104// CK12-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {3105// CK12-NEXT: entry:3106// CK12-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 43107// CK12-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 43108// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 43109// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 13110// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 43111// CK12-NEXT: ret void3112//3113//3114// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l553115// CK12-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {3116// CK12-NEXT: entry:3117// CK12-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43118// CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 43119// CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43120// CK12-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 43121// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43122// CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43123// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13124// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43125// CK12-NEXT: ret void3126//3127//3128// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l613129// CK12-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {3130// CK12-NEXT: entry:3131// CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43132// CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 43133// CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43134// CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43135// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43136// CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43137// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13138// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43139// CK12-NEXT: ret void3140//3141//3142// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l673143// CK12-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {3144// CK12-NEXT: entry:3145// CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43146// CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 43147// CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43148// CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43149// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43150// CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43151// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13152// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43153// CK12-NEXT: ret void3154//3155//3156// CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l743157// CK12-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {3158// CK12-NEXT: entry:3159// CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43160// CK12-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43161// CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 43162// CK12-NEXT: [[_TMP1:%.*]] = alloca ptr, align 43163// CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43164// CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43165// CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43166// CK12-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 43167// CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43168// CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43169// CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13170// CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43171// CK12-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 43172// CK12-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 43173// CK12-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 13174// CK12-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 43175// CK12-NEXT: ret void3176//3177//3178// CK13-LABEL: define {{[^@]+}}@_Z3barRPfRPi3179// CK13-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[A:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) #[[ATTR0:[0-9]+]] {3180// CK13-NEXT: entry:3181// CK13-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 43182// CK13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 43183// CK13-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 43184// CK13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 43185// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 43186// CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 43187// CK13-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP1]])3188// CK13-NEXT: ret void3189//3190//3191// CK13-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_3192// CK13-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[LR:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[TR:%.*]]) #[[ATTR0]] comdat {3193// CK13-NEXT: entry:3194// CK13-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43195// CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43196// CK13-NEXT: [[L:%.*]] = alloca ptr, align 43197// CK13-NEXT: [[T:%.*]] = alloca ptr, align 43198// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 43199// CK13-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 43200// CK13-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 43201// CK13-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 83202// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 43203// CK13-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 43204// CK13-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 43205// CK13-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83206// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 43207// CK13-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 43208// CK13-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 43209// CK13-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83210// CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 43211// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 43212// CK13-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 43213// CK13-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 43214// CK13-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83215// CK13-NEXT: [[_TMP19:%.*]] = alloca ptr, align 43216// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 43217// CK13-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 43218// CK13-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 43219// CK13-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83220// CK13-NEXT: [[_TMP26:%.*]] = alloca ptr, align 43221// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 43222// CK13-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 43223// CK13-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 43224// CK13-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83225// CK13-NEXT: [[_TMP33:%.*]] = alloca ptr, align 43226// CK13-NEXT: [[_TMP34:%.*]] = alloca ptr, align 43227// CK13-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 43228// CK13-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 43229// CK13-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 43230// CK13-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83231// CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43232// CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43233// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 43234// CK13-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 03235// CK13-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 43236// CK13-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 03237// CK13-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 43238// CK13-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 03239// CK13-NEXT: store ptr null, ptr [[TMP3]], align 43240// CK13-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 03241// CK13-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 03242// CK13-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 03243// CK13-NEXT: store i32 3, ptr [[TMP6]], align 43244// CK13-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 13245// CK13-NEXT: store i32 1, ptr [[TMP7]], align 43246// CK13-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 23247// CK13-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 43248// CK13-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 33249// CK13-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 43250// CK13-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 43251// CK13-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 43252// CK13-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 53253// CK13-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 43254// CK13-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 63255// CK13-NEXT: store ptr null, ptr [[TMP12]], align 43256// CK13-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 73257// CK13-NEXT: store ptr null, ptr [[TMP13]], align 43258// CK13-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 83259// CK13-NEXT: store i64 0, ptr [[TMP14]], align 83260// CK13-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 93261// CK13-NEXT: store i64 0, ptr [[TMP15]], align 83262// CK13-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 103263// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 43264// CK13-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 113265// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 43266// CK13-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 123267// CK13-NEXT: store i32 0, ptr [[TMP18]], align 43268// CK13-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37.region_id, ptr [[KERNEL_ARGS]])3269// CK13-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 03270// CK13-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]3271// CK13: omp_offload.failed:3272// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]3273// CK13-NEXT: br label [[OMP_OFFLOAD_CONT]]3274// CK13: omp_offload.cont:3275// CK13-NEXT: [[TMP21:%.*]] = load ptr, ptr [[L]], align 43276// CK13-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 03277// CK13-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 43278// CK13-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 03279// CK13-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 43280// CK13-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 03281// CK13-NEXT: store ptr null, ptr [[TMP24]], align 43282// CK13-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 03283// CK13-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 03284// CK13-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 03285// CK13-NEXT: store i32 3, ptr [[TMP27]], align 43286// CK13-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 13287// CK13-NEXT: store i32 1, ptr [[TMP28]], align 43288// CK13-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 23289// CK13-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 43290// CK13-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 33291// CK13-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 43292// CK13-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 43293// CK13-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 43294// CK13-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 53295// CK13-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 43296// CK13-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 63297// CK13-NEXT: store ptr null, ptr [[TMP33]], align 43298// CK13-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 73299// CK13-NEXT: store ptr null, ptr [[TMP34]], align 43300// CK13-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 83301// CK13-NEXT: store i64 0, ptr [[TMP35]], align 83302// CK13-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 93303// CK13-NEXT: store i64 0, ptr [[TMP36]], align 83304// CK13-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 103305// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 43306// CK13-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 113307// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 43308// CK13-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 123309// CK13-NEXT: store i32 0, ptr [[TMP39]], align 43310// CK13-NEXT: [[TMP40:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43.region_id, ptr [[KERNEL_ARGS4]])3311// CK13-NEXT: [[TMP41:%.*]] = icmp ne i32 [[TMP40]], 03312// CK13-NEXT: br i1 [[TMP41]], label [[OMP_OFFLOAD_FAILED5:%.*]], label [[OMP_OFFLOAD_CONT6:%.*]]3313// CK13: omp_offload.failed5:3314// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43(ptr [[TMP21]]) #[[ATTR2]]3315// CK13-NEXT: br label [[OMP_OFFLOAD_CONT6]]3316// CK13: omp_offload.cont6:3317// CK13-NEXT: [[TMP42:%.*]] = load ptr, ptr [[T]], align 43318// CK13-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 03319// CK13-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 43320// CK13-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 03321// CK13-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 43322// CK13-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 03323// CK13-NEXT: store ptr null, ptr [[TMP45]], align 43324// CK13-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 03325// CK13-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 03326// CK13-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 03327// CK13-NEXT: store i32 3, ptr [[TMP48]], align 43328// CK13-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 13329// CK13-NEXT: store i32 1, ptr [[TMP49]], align 43330// CK13-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 23331// CK13-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 43332// CK13-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 33333// CK13-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 43334// CK13-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 43335// CK13-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 43336// CK13-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 53337// CK13-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 43338// CK13-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 63339// CK13-NEXT: store ptr null, ptr [[TMP54]], align 43340// CK13-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 73341// CK13-NEXT: store ptr null, ptr [[TMP55]], align 43342// CK13-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 83343// CK13-NEXT: store i64 0, ptr [[TMP56]], align 83344// CK13-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 93345// CK13-NEXT: store i64 0, ptr [[TMP57]], align 83346// CK13-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 103347// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 43348// CK13-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 113349// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 43350// CK13-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 123351// CK13-NEXT: store i32 0, ptr [[TMP60]], align 43352// CK13-NEXT: [[TMP61:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49.region_id, ptr [[KERNEL_ARGS10]])3353// CK13-NEXT: [[TMP62:%.*]] = icmp ne i32 [[TMP61]], 03354// CK13-NEXT: br i1 [[TMP62]], label [[OMP_OFFLOAD_FAILED11:%.*]], label [[OMP_OFFLOAD_CONT12:%.*]]3355// CK13: omp_offload.failed11:3356// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49(ptr [[TMP42]]) #[[ATTR2]]3357// CK13-NEXT: br label [[OMP_OFFLOAD_CONT12]]3358// CK13: omp_offload.cont12:3359// CK13-NEXT: [[TMP63:%.*]] = load ptr, ptr [[LR_ADDR]], align 43360// CK13-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 43361// CK13-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 43362// CK13-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 43363// CK13-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 03364// CK13-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 43365// CK13-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 03366// CK13-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 43367// CK13-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 03368// CK13-NEXT: store ptr null, ptr [[TMP68]], align 43369// CK13-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 03370// CK13-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 03371// CK13-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 03372// CK13-NEXT: store i32 3, ptr [[TMP71]], align 43373// CK13-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 13374// CK13-NEXT: store i32 1, ptr [[TMP72]], align 43375// CK13-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 23376// CK13-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 43377// CK13-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 33378// CK13-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 43379// CK13-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 43380// CK13-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 43381// CK13-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 53382// CK13-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 43383// CK13-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 63384// CK13-NEXT: store ptr null, ptr [[TMP77]], align 43385// CK13-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 73386// CK13-NEXT: store ptr null, ptr [[TMP78]], align 43387// CK13-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 83388// CK13-NEXT: store i64 0, ptr [[TMP79]], align 83389// CK13-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 93390// CK13-NEXT: store i64 0, ptr [[TMP80]], align 83391// CK13-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 103392// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 43393// CK13-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 113394// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 43395// CK13-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 123396// CK13-NEXT: store i32 0, ptr [[TMP83]], align 43397// CK13-NEXT: [[TMP84:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55.region_id, ptr [[KERNEL_ARGS16]])3398// CK13-NEXT: [[TMP85:%.*]] = icmp ne i32 [[TMP84]], 03399// CK13-NEXT: br i1 [[TMP85]], label [[OMP_OFFLOAD_FAILED17:%.*]], label [[OMP_OFFLOAD_CONT18:%.*]]3400// CK13: omp_offload.failed17:3401// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55(ptr [[TMP65]]) #[[ATTR2]]3402// CK13-NEXT: br label [[OMP_OFFLOAD_CONT18]]3403// CK13: omp_offload.cont18:3404// CK13-NEXT: [[TMP86:%.*]] = load ptr, ptr [[TR_ADDR]], align 43405// CK13-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 43406// CK13-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 43407// CK13-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 43408// CK13-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 03409// CK13-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 43410// CK13-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 03411// CK13-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 43412// CK13-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 03413// CK13-NEXT: store ptr null, ptr [[TMP91]], align 43414// CK13-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 03415// CK13-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 03416// CK13-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 03417// CK13-NEXT: store i32 3, ptr [[TMP94]], align 43418// CK13-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 13419// CK13-NEXT: store i32 1, ptr [[TMP95]], align 43420// CK13-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 23421// CK13-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 43422// CK13-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 33423// CK13-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 43424// CK13-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 43425// CK13-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 43426// CK13-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 53427// CK13-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 43428// CK13-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 63429// CK13-NEXT: store ptr null, ptr [[TMP100]], align 43430// CK13-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 73431// CK13-NEXT: store ptr null, ptr [[TMP101]], align 43432// CK13-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 83433// CK13-NEXT: store i64 0, ptr [[TMP102]], align 83434// CK13-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 93435// CK13-NEXT: store i64 0, ptr [[TMP103]], align 83436// CK13-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 103437// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 43438// CK13-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 113439// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 43440// CK13-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 123441// CK13-NEXT: store i32 0, ptr [[TMP106]], align 43442// CK13-NEXT: [[TMP107:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61.region_id, ptr [[KERNEL_ARGS23]])3443// CK13-NEXT: [[TMP108:%.*]] = icmp ne i32 [[TMP107]], 03444// CK13-NEXT: br i1 [[TMP108]], label [[OMP_OFFLOAD_FAILED24:%.*]], label [[OMP_OFFLOAD_CONT25:%.*]]3445// CK13: omp_offload.failed24:3446// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61(ptr [[TMP88]]) #[[ATTR2]]3447// CK13-NEXT: br label [[OMP_OFFLOAD_CONT25]]3448// CK13: omp_offload.cont25:3449// CK13-NEXT: [[TMP109:%.*]] = load ptr, ptr [[TR_ADDR]], align 43450// CK13-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 43451// CK13-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 43452// CK13-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 43453// CK13-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 03454// CK13-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 43455// CK13-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 03456// CK13-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 43457// CK13-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 03458// CK13-NEXT: store ptr null, ptr [[TMP114]], align 43459// CK13-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 03460// CK13-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 03461// CK13-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 03462// CK13-NEXT: store i32 3, ptr [[TMP117]], align 43463// CK13-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 13464// CK13-NEXT: store i32 1, ptr [[TMP118]], align 43465// CK13-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 23466// CK13-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 43467// CK13-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 33468// CK13-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 43469// CK13-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 43470// CK13-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 43471// CK13-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 53472// CK13-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 43473// CK13-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 63474// CK13-NEXT: store ptr null, ptr [[TMP123]], align 43475// CK13-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 73476// CK13-NEXT: store ptr null, ptr [[TMP124]], align 43477// CK13-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 83478// CK13-NEXT: store i64 0, ptr [[TMP125]], align 83479// CK13-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 93480// CK13-NEXT: store i64 0, ptr [[TMP126]], align 83481// CK13-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 103482// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 43483// CK13-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 113484// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 43485// CK13-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 123486// CK13-NEXT: store i32 0, ptr [[TMP129]], align 43487// CK13-NEXT: [[TMP130:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67.region_id, ptr [[KERNEL_ARGS30]])3488// CK13-NEXT: [[TMP131:%.*]] = icmp ne i32 [[TMP130]], 03489// CK13-NEXT: br i1 [[TMP131]], label [[OMP_OFFLOAD_FAILED31:%.*]], label [[OMP_OFFLOAD_CONT32:%.*]]3490// CK13: omp_offload.failed31:3491// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67(ptr [[TMP111]]) #[[ATTR2]]3492// CK13-NEXT: br label [[OMP_OFFLOAD_CONT32]]3493// CK13: omp_offload.cont32:3494// CK13-NEXT: [[TMP132:%.*]] = load ptr, ptr [[TR_ADDR]], align 43495// CK13-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 43496// CK13-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 43497// CK13-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 43498// CK13-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 43499// CK13-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 43500// CK13-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 43501// CK13-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 43502// CK13-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 03503// CK13-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 43504// CK13-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 03505// CK13-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 43506// CK13-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 03507// CK13-NEXT: store ptr null, ptr [[TMP140]], align 43508// CK13-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 13509// CK13-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 43510// CK13-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 13511// CK13-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 43512// CK13-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 13513// CK13-NEXT: store ptr null, ptr [[TMP143]], align 43514// CK13-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 03515// CK13-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 03516// CK13-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 03517// CK13-NEXT: store i32 3, ptr [[TMP146]], align 43518// CK13-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 13519// CK13-NEXT: store i32 2, ptr [[TMP147]], align 43520// CK13-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 23521// CK13-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 43522// CK13-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 33523// CK13-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 43524// CK13-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 43525// CK13-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 43526// CK13-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 53527// CK13-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 43528// CK13-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 63529// CK13-NEXT: store ptr null, ptr [[TMP152]], align 43530// CK13-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 73531// CK13-NEXT: store ptr null, ptr [[TMP153]], align 43532// CK13-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 83533// CK13-NEXT: store i64 0, ptr [[TMP154]], align 83534// CK13-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 93535// CK13-NEXT: store i64 0, ptr [[TMP155]], align 83536// CK13-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 103537// CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 43538// CK13-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 113539// CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 43540// CK13-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 123541// CK13-NEXT: store i32 0, ptr [[TMP158]], align 43542// CK13-NEXT: [[TMP159:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74.region_id, ptr [[KERNEL_ARGS38]])3543// CK13-NEXT: [[TMP160:%.*]] = icmp ne i32 [[TMP159]], 03544// CK13-NEXT: br i1 [[TMP160]], label [[OMP_OFFLOAD_FAILED39:%.*]], label [[OMP_OFFLOAD_CONT40:%.*]]3545// CK13: omp_offload.failed39:3546// CK13-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74(ptr [[TMP135]], ptr [[TMP137]]) #[[ATTR2]]3547// CK13-NEXT: br label [[OMP_OFFLOAD_CONT40]]3548// CK13: omp_offload.cont40:3549// CK13-NEXT: ret void3550//3551//3552// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l373553// CK13-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] {3554// CK13-NEXT: entry:3555// CK13-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 43556// CK13-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 43557// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 43558// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13559// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 43560// CK13-NEXT: ret void3561//3562//3563// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l433564// CK13-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] {3565// CK13-NEXT: entry:3566// CK13-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 43567// CK13-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 43568// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 43569// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 13570// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 43571// CK13-NEXT: ret void3572//3573//3574// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l493575// CK13-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] {3576// CK13-NEXT: entry:3577// CK13-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 43578// CK13-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 43579// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 43580// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 13581// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 43582// CK13-NEXT: ret void3583//3584//3585// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l553586// CK13-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] {3587// CK13-NEXT: entry:3588// CK13-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43589// CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 43590// CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43591// CK13-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 43592// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43593// CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43594// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13595// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43596// CK13-NEXT: ret void3597//3598//3599// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l613600// CK13-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {3601// CK13-NEXT: entry:3602// CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43603// CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 43604// CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43605// CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43606// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43607// CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43608// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13609// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43610// CK13-NEXT: ret void3611//3612//3613// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l673614// CK13-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] {3615// CK13-NEXT: entry:3616// CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43617// CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 43618// CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43619// CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43620// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43621// CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43622// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13623// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43624// CK13-NEXT: ret void3625//3626//3627// CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l743628// CK13-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] {3629// CK13-NEXT: entry:3630// CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43631// CK13-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43632// CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 43633// CK13-NEXT: [[_TMP1:%.*]] = alloca ptr, align 43634// CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43635// CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43636// CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 43637// CK13-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 43638// CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 43639// CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 43640// CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 13641// CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 43642// CK13-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 43643// CK13-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 43644// CK13-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 13645// CK13-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 43646// CK13-NEXT: ret void3647//3648//3649// SIMD-ONLY00-LABEL: define {{[^@]+}}@_Z3barRPfRPi3650// SIMD-ONLY00-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[A:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) #[[ATTR0:[0-9]+]] {3651// SIMD-ONLY00-NEXT: entry:3652// SIMD-ONLY00-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 83653// SIMD-ONLY00-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 83654// SIMD-ONLY00-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 83655// SIMD-ONLY00-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 83656// SIMD-ONLY00-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 83657// SIMD-ONLY00-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 83658// SIMD-ONLY00-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP1]])3659// SIMD-ONLY00-NEXT: ret void3660//3661//3662// SIMD-ONLY00-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_3663// SIMD-ONLY00-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[LR:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[TR:%.*]]) #[[ATTR0]] comdat {3664// SIMD-ONLY00-NEXT: entry:3665// SIMD-ONLY00-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 83666// SIMD-ONLY00-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 83667// SIMD-ONLY00-NEXT: [[L:%.*]] = alloca ptr, align 83668// SIMD-ONLY00-NEXT: [[T:%.*]] = alloca ptr, align 83669// SIMD-ONLY00-NEXT: [[TMP:%.*]] = alloca ptr, align 83670// SIMD-ONLY00-NEXT: [[_TMP4:%.*]] = alloca ptr, align 83671// SIMD-ONLY00-NEXT: [[_TMP6:%.*]] = alloca ptr, align 83672// SIMD-ONLY00-NEXT: [[_TMP8:%.*]] = alloca ptr, align 83673// SIMD-ONLY00-NEXT: [[_TMP9:%.*]] = alloca ptr, align 83674// SIMD-ONLY00-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 83675// SIMD-ONLY00-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 83676// SIMD-ONLY00-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 83677// SIMD-ONLY00-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13678// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 83679// SIMD-ONLY00-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 83680// SIMD-ONLY00-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13681// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 83682// SIMD-ONLY00-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 83683// SIMD-ONLY00-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 13684// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 83685// SIMD-ONLY00-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 83686// SIMD-ONLY00-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 83687// SIMD-ONLY00-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 83688// SIMD-ONLY00-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 83689// SIMD-ONLY00-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 83690// SIMD-ONLY00-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 13691// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 83692// SIMD-ONLY00-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 83693// SIMD-ONLY00-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 83694// SIMD-ONLY00-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 83695// SIMD-ONLY00-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 83696// SIMD-ONLY00-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 83697// SIMD-ONLY00-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 13698// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 83699// SIMD-ONLY00-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 83700// SIMD-ONLY00-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 83701// SIMD-ONLY00-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 83702// SIMD-ONLY00-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 83703// SIMD-ONLY00-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 83704// SIMD-ONLY00-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 13705// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 83706// SIMD-ONLY00-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 83707// SIMD-ONLY00-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 83708// SIMD-ONLY00-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 83709// SIMD-ONLY00-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 83710// SIMD-ONLY00-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 83711// SIMD-ONLY00-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 83712// SIMD-ONLY00-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 83713// SIMD-ONLY00-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 83714// SIMD-ONLY00-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 13715// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 83716// SIMD-ONLY00-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 83717// SIMD-ONLY00-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 83718// SIMD-ONLY00-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 13719// SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 83720// SIMD-ONLY00-NEXT: ret void3721//3722//3723// SIMD-ONLY01-LABEL: define {{[^@]+}}@_Z3barRPfRPi3724// SIMD-ONLY01-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[A:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) #[[ATTR0:[0-9]+]] {3725// SIMD-ONLY01-NEXT: entry:3726// SIMD-ONLY01-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 83727// SIMD-ONLY01-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 83728// SIMD-ONLY01-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 83729// SIMD-ONLY01-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 83730// SIMD-ONLY01-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 83731// SIMD-ONLY01-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 83732// SIMD-ONLY01-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP1]])3733// SIMD-ONLY01-NEXT: ret void3734//3735//3736// SIMD-ONLY01-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_3737// SIMD-ONLY01-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[LR:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[TR:%.*]]) #[[ATTR0]] comdat {3738// SIMD-ONLY01-NEXT: entry:3739// SIMD-ONLY01-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 83740// SIMD-ONLY01-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 83741// SIMD-ONLY01-NEXT: [[L:%.*]] = alloca ptr, align 83742// SIMD-ONLY01-NEXT: [[T:%.*]] = alloca ptr, align 83743// SIMD-ONLY01-NEXT: [[TMP:%.*]] = alloca ptr, align 83744// SIMD-ONLY01-NEXT: [[_TMP4:%.*]] = alloca ptr, align 83745// SIMD-ONLY01-NEXT: [[_TMP6:%.*]] = alloca ptr, align 83746// SIMD-ONLY01-NEXT: [[_TMP8:%.*]] = alloca ptr, align 83747// SIMD-ONLY01-NEXT: [[_TMP9:%.*]] = alloca ptr, align 83748// SIMD-ONLY01-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 83749// SIMD-ONLY01-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 83750// SIMD-ONLY01-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 83751// SIMD-ONLY01-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13752// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 83753// SIMD-ONLY01-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 83754// SIMD-ONLY01-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13755// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 83756// SIMD-ONLY01-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 83757// SIMD-ONLY01-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 13758// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 83759// SIMD-ONLY01-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 83760// SIMD-ONLY01-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 83761// SIMD-ONLY01-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 83762// SIMD-ONLY01-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 83763// SIMD-ONLY01-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 83764// SIMD-ONLY01-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 13765// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 83766// SIMD-ONLY01-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 83767// SIMD-ONLY01-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 83768// SIMD-ONLY01-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 83769// SIMD-ONLY01-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 83770// SIMD-ONLY01-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 83771// SIMD-ONLY01-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 13772// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 83773// SIMD-ONLY01-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 83774// SIMD-ONLY01-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 83775// SIMD-ONLY01-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 83776// SIMD-ONLY01-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 83777// SIMD-ONLY01-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 83778// SIMD-ONLY01-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 13779// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 83780// SIMD-ONLY01-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 83781// SIMD-ONLY01-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 83782// SIMD-ONLY01-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 83783// SIMD-ONLY01-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 83784// SIMD-ONLY01-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 83785// SIMD-ONLY01-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 83786// SIMD-ONLY01-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 83787// SIMD-ONLY01-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 83788// SIMD-ONLY01-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 13789// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 83790// SIMD-ONLY01-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 83791// SIMD-ONLY01-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 83792// SIMD-ONLY01-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 13793// SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 83794// SIMD-ONLY01-NEXT: ret void3795//3796//3797// SIMD-ONLY02-LABEL: define {{[^@]+}}@_Z3barRPfRPi3798// SIMD-ONLY02-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[A:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) #[[ATTR0:[0-9]+]] {3799// SIMD-ONLY02-NEXT: entry:3800// SIMD-ONLY02-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 43801// SIMD-ONLY02-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 43802// SIMD-ONLY02-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 43803// SIMD-ONLY02-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 43804// SIMD-ONLY02-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 43805// SIMD-ONLY02-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 43806// SIMD-ONLY02-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP1]])3807// SIMD-ONLY02-NEXT: ret void3808//3809//3810// SIMD-ONLY02-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_3811// SIMD-ONLY02-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[LR:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[TR:%.*]]) #[[ATTR0]] comdat {3812// SIMD-ONLY02-NEXT: entry:3813// SIMD-ONLY02-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43814// SIMD-ONLY02-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43815// SIMD-ONLY02-NEXT: [[L:%.*]] = alloca ptr, align 43816// SIMD-ONLY02-NEXT: [[T:%.*]] = alloca ptr, align 43817// SIMD-ONLY02-NEXT: [[TMP:%.*]] = alloca ptr, align 43818// SIMD-ONLY02-NEXT: [[_TMP4:%.*]] = alloca ptr, align 43819// SIMD-ONLY02-NEXT: [[_TMP6:%.*]] = alloca ptr, align 43820// SIMD-ONLY02-NEXT: [[_TMP8:%.*]] = alloca ptr, align 43821// SIMD-ONLY02-NEXT: [[_TMP9:%.*]] = alloca ptr, align 43822// SIMD-ONLY02-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43823// SIMD-ONLY02-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43824// SIMD-ONLY02-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 43825// SIMD-ONLY02-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13826// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 43827// SIMD-ONLY02-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 43828// SIMD-ONLY02-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13829// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 43830// SIMD-ONLY02-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 43831// SIMD-ONLY02-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 13832// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 43833// SIMD-ONLY02-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 43834// SIMD-ONLY02-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 43835// SIMD-ONLY02-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 43836// SIMD-ONLY02-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 43837// SIMD-ONLY02-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 43838// SIMD-ONLY02-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 13839// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 43840// SIMD-ONLY02-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 43841// SIMD-ONLY02-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 43842// SIMD-ONLY02-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 43843// SIMD-ONLY02-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 43844// SIMD-ONLY02-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 43845// SIMD-ONLY02-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 13846// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 43847// SIMD-ONLY02-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 43848// SIMD-ONLY02-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 43849// SIMD-ONLY02-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 43850// SIMD-ONLY02-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 43851// SIMD-ONLY02-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 43852// SIMD-ONLY02-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 13853// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 43854// SIMD-ONLY02-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 43855// SIMD-ONLY02-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 43856// SIMD-ONLY02-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 43857// SIMD-ONLY02-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 43858// SIMD-ONLY02-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 43859// SIMD-ONLY02-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 43860// SIMD-ONLY02-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 43861// SIMD-ONLY02-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 43862// SIMD-ONLY02-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 13863// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 43864// SIMD-ONLY02-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 43865// SIMD-ONLY02-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 43866// SIMD-ONLY02-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 13867// SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 43868// SIMD-ONLY02-NEXT: ret void3869//3870//3871// SIMD-ONLY03-LABEL: define {{[^@]+}}@_Z3barRPfRPi3872// SIMD-ONLY03-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[A:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) #[[ATTR0:[0-9]+]] {3873// SIMD-ONLY03-NEXT: entry:3874// SIMD-ONLY03-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 43875// SIMD-ONLY03-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 43876// SIMD-ONLY03-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 43877// SIMD-ONLY03-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 43878// SIMD-ONLY03-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 43879// SIMD-ONLY03-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 43880// SIMD-ONLY03-NEXT: call void @_Z3fooIiEvRPfRPT_(ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP1]])3881// SIMD-ONLY03-NEXT: ret void3882//3883//3884// SIMD-ONLY03-LABEL: define {{[^@]+}}@_Z3fooIiEvRPfRPT_3885// SIMD-ONLY03-SAME: (ptr noundef nonnull align 4 dereferenceable(4) [[LR:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[TR:%.*]]) #[[ATTR0]] comdat {3886// SIMD-ONLY03-NEXT: entry:3887// SIMD-ONLY03-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 43888// SIMD-ONLY03-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 43889// SIMD-ONLY03-NEXT: [[L:%.*]] = alloca ptr, align 43890// SIMD-ONLY03-NEXT: [[T:%.*]] = alloca ptr, align 43891// SIMD-ONLY03-NEXT: [[TMP:%.*]] = alloca ptr, align 43892// SIMD-ONLY03-NEXT: [[_TMP4:%.*]] = alloca ptr, align 43893// SIMD-ONLY03-NEXT: [[_TMP6:%.*]] = alloca ptr, align 43894// SIMD-ONLY03-NEXT: [[_TMP8:%.*]] = alloca ptr, align 43895// SIMD-ONLY03-NEXT: [[_TMP9:%.*]] = alloca ptr, align 43896// SIMD-ONLY03-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 43897// SIMD-ONLY03-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 43898// SIMD-ONLY03-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 43899// SIMD-ONLY03-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13900// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 43901// SIMD-ONLY03-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 43902// SIMD-ONLY03-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 13903// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 43904// SIMD-ONLY03-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 43905// SIMD-ONLY03-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 13906// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 43907// SIMD-ONLY03-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 43908// SIMD-ONLY03-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 43909// SIMD-ONLY03-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 43910// SIMD-ONLY03-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 43911// SIMD-ONLY03-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 43912// SIMD-ONLY03-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 13913// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 43914// SIMD-ONLY03-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 43915// SIMD-ONLY03-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 43916// SIMD-ONLY03-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 43917// SIMD-ONLY03-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 43918// SIMD-ONLY03-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 43919// SIMD-ONLY03-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 13920// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 43921// SIMD-ONLY03-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 43922// SIMD-ONLY03-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 43923// SIMD-ONLY03-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 43924// SIMD-ONLY03-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 43925// SIMD-ONLY03-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 43926// SIMD-ONLY03-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 13927// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 43928// SIMD-ONLY03-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 43929// SIMD-ONLY03-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 43930// SIMD-ONLY03-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 43931// SIMD-ONLY03-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 43932// SIMD-ONLY03-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 43933// SIMD-ONLY03-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 43934// SIMD-ONLY03-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 43935// SIMD-ONLY03-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 43936// SIMD-ONLY03-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 13937// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 43938// SIMD-ONLY03-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 43939// SIMD-ONLY03-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 43940// SIMD-ONLY03-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 13941// SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 43942// SIMD-ONLY03-NEXT: ret void3943//3944//3945// CK20-LABEL: define {{[^@]+}}@_Z3barPd3946// CK20-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {3947// CK20-NEXT: entry:3948// CK20-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 83949// CK20-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 83950// CK20-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 83951// CK20-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])3952// CK20-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])3953// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 83954// CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 13955// CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 83956// CK20-NEXT: ret void3957//3958//3959// CK20-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd3960// CK20-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {3961// CK20-NEXT: entry:3962// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 83963// CK20-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 83964// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 83965// CK20-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 83966// CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 83967// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 83968// CK20-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[THIS1]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]])3969// CK20-NEXT: ret void3970//3971//3972// CK20-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd3973// CK20-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG:%.*]]) #[[ATTR0]] comdat {3974// CK20-NEXT: entry:3975// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 83976// CK20-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 83977// CK20-NEXT: [[LA:%.*]] = alloca ptr, align 83978// CK20-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 83979// CK20-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 83980// CK20-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 83981// CK20-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 83982// CK20-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 83983// CK20-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 83984// CK20-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 83985// CK20-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 83986// CK20-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83987// CK20-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 83988// CK20-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 83989// CK20-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 83990// CK20-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 83991// CK20-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 83992// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 83993// CK20-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 83994// CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 83995// CK20-NEXT: store ptr null, ptr [[LA]], align 83996// CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 03997// CK20-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 03998// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 83999// CK20-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04000// CK20-NEXT: store ptr [[A]], ptr [[TMP1]], align 84001// CK20-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 04002// CK20-NEXT: store ptr null, ptr [[TMP2]], align 84003// CK20-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04004// CK20-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04005// CK20-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 04006// CK20-NEXT: store i32 3, ptr [[TMP5]], align 44007// CK20-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 14008// CK20-NEXT: store i32 1, ptr [[TMP6]], align 44009// CK20-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 24010// CK20-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 84011// CK20-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 34012// CK20-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 84013// CK20-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 44014// CK20-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 84015// CK20-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 54016// CK20-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 84017// CK20-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 64018// CK20-NEXT: store ptr null, ptr [[TMP11]], align 84019// CK20-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 74020// CK20-NEXT: store ptr null, ptr [[TMP12]], align 84021// CK20-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 84022// CK20-NEXT: store i64 0, ptr [[TMP13]], align 84023// CK20-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 94024// CK20-NEXT: store i64 0, ptr [[TMP14]], align 84025// CK20-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 104026// CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 44027// CK20-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 114028// CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 44029// CK20-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 124030// CK20-NEXT: store i32 0, ptr [[TMP17]], align 44031// CK20-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])4032// CK20-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 04033// CK20-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]4034// CK20: omp_offload.failed:4035// CK20-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR2:[0-9]+]]4036// CK20-NEXT: br label [[OMP_OFFLOAD_CONT]]4037// CK20: omp_offload.cont:4038// CK20-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14039// CK20-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 84040// CK20-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 14041// CK20-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i644042// CK20-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i644043// CK20-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]4044// CK20-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4045// CK20-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES]], ptr align 8 @.offload_sizes.1, i64 16, i1 false)4046// CK20-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04047// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 84048// CK20-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04049// CK20-NEXT: store ptr [[B]], ptr [[TMP27]], align 84050// CK20-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04051// CK20-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 84052// CK20-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 04053// CK20-NEXT: store ptr null, ptr [[TMP29]], align 84054// CK20-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 14055// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 84056// CK20-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 14057// CK20-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 84058// CK20-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 14059// CK20-NEXT: store ptr null, ptr [[TMP32]], align 84060// CK20-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04061// CK20-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04062// CK20-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04063// CK20-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 04064// CK20-NEXT: store i32 3, ptr [[TMP36]], align 44065// CK20-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 14066// CK20-NEXT: store i32 2, ptr [[TMP37]], align 44067// CK20-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 24068// CK20-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 84069// CK20-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 34070// CK20-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 84071// CK20-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 44072// CK20-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 84073// CK20-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 54074// CK20-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 84075// CK20-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 64076// CK20-NEXT: store ptr null, ptr [[TMP42]], align 84077// CK20-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 74078// CK20-NEXT: store ptr null, ptr [[TMP43]], align 84079// CK20-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 84080// CK20-NEXT: store i64 0, ptr [[TMP44]], align 84081// CK20-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 94082// CK20-NEXT: store i64 0, ptr [[TMP45]], align 84083// CK20-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 104084// CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 44085// CK20-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 114086// CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 44087// CK20-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 124088// CK20-NEXT: store i32 0, ptr [[TMP48]], align 44089// CK20-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])4090// CK20-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 04091// CK20-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]4092// CK20: omp_offload.failed6:4093// CK20-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR2]]4094// CK20-NEXT: br label [[OMP_OFFLOAD_CONT7]]4095// CK20: omp_offload.cont7:4096// CK20-NEXT: [[A8:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 04097// CK20-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14098// CK20-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 84099// CK20-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 14100// CK20-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i644101// CK20-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i644102// CK20-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]4103// CK20-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4104// CK20-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES13]], ptr align 8 @.offload_sizes.3, i64 24, i1 false)4105// CK20-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04106// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 84107// CK20-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04108// CK20-NEXT: store ptr [[A8]], ptr [[TMP58]], align 84109// CK20-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04110// CK20-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 84111// CK20-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 04112// CK20-NEXT: store ptr null, ptr [[TMP60]], align 84113// CK20-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 14114// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 84115// CK20-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 14116// CK20-NEXT: store ptr [[A8]], ptr [[TMP62]], align 84117// CK20-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 14118// CK20-NEXT: store ptr null, ptr [[TMP63]], align 84119// CK20-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 24120// CK20-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 84121// CK20-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 24122// CK20-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 84123// CK20-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 24124// CK20-NEXT: store ptr null, ptr [[TMP66]], align 84125// CK20-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04126// CK20-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04127// CK20-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04128// CK20-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 04129// CK20-NEXT: store i32 3, ptr [[TMP70]], align 44130// CK20-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 14131// CK20-NEXT: store i32 3, ptr [[TMP71]], align 44132// CK20-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 24133// CK20-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 84134// CK20-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 34135// CK20-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 84136// CK20-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 44137// CK20-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 84138// CK20-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 54139// CK20-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 84140// CK20-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 64141// CK20-NEXT: store ptr null, ptr [[TMP76]], align 84142// CK20-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 74143// CK20-NEXT: store ptr null, ptr [[TMP77]], align 84144// CK20-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 84145// CK20-NEXT: store i64 0, ptr [[TMP78]], align 84146// CK20-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 94147// CK20-NEXT: store i64 0, ptr [[TMP79]], align 84148// CK20-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 104149// CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 44150// CK20-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 114151// CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 44152// CK20-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 124153// CK20-NEXT: store i32 0, ptr [[TMP82]], align 44154// CK20-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])4155// CK20-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 04156// CK20-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]4157// CK20: omp_offload.failed15:4158// CK20-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR2]]4159// CK20-NEXT: br label [[OMP_OFFLOAD_CONT16]]4160// CK20: omp_offload.cont16:4161// CK20-NEXT: ret void4162//4163//4164// CK20-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd4165// CK20-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {4166// CK20-NEXT: entry:4167// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84168// CK20-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 84169// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84170// CK20-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 84171// CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84172// CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04173// CK20-NEXT: store ptr null, ptr [[A]], align 84174// CK20-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14175// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 84176// CK20-NEXT: store ptr [[TMP0]], ptr [[B2]], align 84177// CK20-NEXT: ret void4178//4179//4180// CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1124181// CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] {4182// CK20-NEXT: entry:4183// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84184// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84185// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84186// CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04187// CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 84188// CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14189// CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 84190// CK20-NEXT: ret void4191//4192//4193// CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1184194// CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4195// CK20-NEXT: entry:4196// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84197// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84198// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84199// CK20-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 14200// CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 84201// CK20-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 84202// CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 14203// CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 84204// CK20-NEXT: ret void4205//4206//4207// CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1254208// CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4209// CK20-NEXT: entry:4210// CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84211// CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84212// CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84213// CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04214// CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 84215// CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14216// CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 84217// CK20-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 14218// CK20-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 84219// CK20-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 84220// CK20-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 14221// CK20-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 84222// CK20-NEXT: ret void4223//4224//4225// CK21-LABEL: define {{[^@]+}}@_Z3barPd4226// CK21-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {4227// CK21-NEXT: entry:4228// CK21-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 84229// CK21-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 84230// CK21-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 84231// CK21-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])4232// CK21-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])4233// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 84234// CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 14235// CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 84236// CK21-NEXT: ret void4237//4238//4239// CK21-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd4240// CK21-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {4241// CK21-NEXT: entry:4242// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84243// CK21-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 84244// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84245// CK21-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 84246// CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84247// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 84248// CK21-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[THIS1]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]])4249// CK21-NEXT: ret void4250//4251//4252// CK21-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd4253// CK21-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG:%.*]]) #[[ATTR0]] comdat {4254// CK21-NEXT: entry:4255// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84256// CK21-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 84257// CK21-NEXT: [[LA:%.*]] = alloca ptr, align 84258// CK21-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 84259// CK21-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 84260// CK21-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 84261// CK21-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 84262// CK21-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 84263// CK21-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 84264// CK21-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 84265// CK21-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 84266// CK21-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84267// CK21-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 84268// CK21-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 84269// CK21-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 84270// CK21-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 84271// CK21-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84272// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84273// CK21-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 84274// CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84275// CK21-NEXT: store ptr null, ptr [[LA]], align 84276// CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04277// CK21-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04278// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 84279// CK21-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04280// CK21-NEXT: store ptr [[A]], ptr [[TMP1]], align 84281// CK21-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 04282// CK21-NEXT: store ptr null, ptr [[TMP2]], align 84283// CK21-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04284// CK21-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04285// CK21-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 04286// CK21-NEXT: store i32 3, ptr [[TMP5]], align 44287// CK21-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 14288// CK21-NEXT: store i32 1, ptr [[TMP6]], align 44289// CK21-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 24290// CK21-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 84291// CK21-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 34292// CK21-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 84293// CK21-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 44294// CK21-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 84295// CK21-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 54296// CK21-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 84297// CK21-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 64298// CK21-NEXT: store ptr null, ptr [[TMP11]], align 84299// CK21-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 74300// CK21-NEXT: store ptr null, ptr [[TMP12]], align 84301// CK21-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 84302// CK21-NEXT: store i64 0, ptr [[TMP13]], align 84303// CK21-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 94304// CK21-NEXT: store i64 0, ptr [[TMP14]], align 84305// CK21-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 104306// CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 44307// CK21-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 114308// CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 44309// CK21-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 124310// CK21-NEXT: store i32 0, ptr [[TMP17]], align 44311// CK21-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])4312// CK21-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 04313// CK21-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]4314// CK21: omp_offload.failed:4315// CK21-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR2:[0-9]+]]4316// CK21-NEXT: br label [[OMP_OFFLOAD_CONT]]4317// CK21: omp_offload.cont:4318// CK21-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14319// CK21-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 84320// CK21-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 14321// CK21-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i644322// CK21-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i644323// CK21-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]4324// CK21-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4325// CK21-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES]], ptr align 8 @.offload_sizes.1, i64 16, i1 false)4326// CK21-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04327// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 84328// CK21-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04329// CK21-NEXT: store ptr [[B]], ptr [[TMP27]], align 84330// CK21-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04331// CK21-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 84332// CK21-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 04333// CK21-NEXT: store ptr null, ptr [[TMP29]], align 84334// CK21-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 14335// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 84336// CK21-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 14337// CK21-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 84338// CK21-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 14339// CK21-NEXT: store ptr null, ptr [[TMP32]], align 84340// CK21-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04341// CK21-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04342// CK21-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04343// CK21-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 04344// CK21-NEXT: store i32 3, ptr [[TMP36]], align 44345// CK21-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 14346// CK21-NEXT: store i32 2, ptr [[TMP37]], align 44347// CK21-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 24348// CK21-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 84349// CK21-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 34350// CK21-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 84351// CK21-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 44352// CK21-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 84353// CK21-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 54354// CK21-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 84355// CK21-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 64356// CK21-NEXT: store ptr null, ptr [[TMP42]], align 84357// CK21-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 74358// CK21-NEXT: store ptr null, ptr [[TMP43]], align 84359// CK21-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 84360// CK21-NEXT: store i64 0, ptr [[TMP44]], align 84361// CK21-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 94362// CK21-NEXT: store i64 0, ptr [[TMP45]], align 84363// CK21-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 104364// CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 44365// CK21-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 114366// CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 44367// CK21-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 124368// CK21-NEXT: store i32 0, ptr [[TMP48]], align 44369// CK21-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])4370// CK21-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 04371// CK21-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]4372// CK21: omp_offload.failed6:4373// CK21-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR2]]4374// CK21-NEXT: br label [[OMP_OFFLOAD_CONT7]]4375// CK21: omp_offload.cont7:4376// CK21-NEXT: [[A8:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 04377// CK21-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14378// CK21-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 84379// CK21-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 14380// CK21-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i644381// CK21-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i644382// CK21-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]4383// CK21-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4384// CK21-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[DOTOFFLOAD_SIZES13]], ptr align 8 @.offload_sizes.3, i64 24, i1 false)4385// CK21-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04386// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 84387// CK21-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04388// CK21-NEXT: store ptr [[A8]], ptr [[TMP58]], align 84389// CK21-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04390// CK21-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 84391// CK21-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 04392// CK21-NEXT: store ptr null, ptr [[TMP60]], align 84393// CK21-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 14394// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 84395// CK21-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 14396// CK21-NEXT: store ptr [[A8]], ptr [[TMP62]], align 84397// CK21-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 14398// CK21-NEXT: store ptr null, ptr [[TMP63]], align 84399// CK21-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 24400// CK21-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 84401// CK21-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 24402// CK21-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 84403// CK21-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 24404// CK21-NEXT: store ptr null, ptr [[TMP66]], align 84405// CK21-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04406// CK21-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04407// CK21-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04408// CK21-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 04409// CK21-NEXT: store i32 3, ptr [[TMP70]], align 44410// CK21-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 14411// CK21-NEXT: store i32 3, ptr [[TMP71]], align 44412// CK21-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 24413// CK21-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 84414// CK21-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 34415// CK21-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 84416// CK21-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 44417// CK21-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 84418// CK21-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 54419// CK21-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 84420// CK21-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 64421// CK21-NEXT: store ptr null, ptr [[TMP76]], align 84422// CK21-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 74423// CK21-NEXT: store ptr null, ptr [[TMP77]], align 84424// CK21-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 84425// CK21-NEXT: store i64 0, ptr [[TMP78]], align 84426// CK21-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 94427// CK21-NEXT: store i64 0, ptr [[TMP79]], align 84428// CK21-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 104429// CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 44430// CK21-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 114431// CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 44432// CK21-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 124433// CK21-NEXT: store i32 0, ptr [[TMP82]], align 44434// CK21-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])4435// CK21-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 04436// CK21-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]4437// CK21: omp_offload.failed15:4438// CK21-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR2]]4439// CK21-NEXT: br label [[OMP_OFFLOAD_CONT16]]4440// CK21: omp_offload.cont16:4441// CK21-NEXT: ret void4442//4443//4444// CK21-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd4445// CK21-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {4446// CK21-NEXT: entry:4447// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84448// CK21-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 84449// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84450// CK21-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 84451// CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84452// CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04453// CK21-NEXT: store ptr null, ptr [[A]], align 84454// CK21-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14455// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 84456// CK21-NEXT: store ptr [[TMP0]], ptr [[B2]], align 84457// CK21-NEXT: ret void4458//4459//4460// CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1124461// CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] {4462// CK21-NEXT: entry:4463// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84464// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84465// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84466// CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04467// CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 84468// CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14469// CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 84470// CK21-NEXT: ret void4471//4472//4473// CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1184474// CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4475// CK21-NEXT: entry:4476// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84477// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84478// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84479// CK21-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 14480// CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 84481// CK21-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 84482// CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 14483// CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 84484// CK21-NEXT: ret void4485//4486//4487// CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1254488// CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4489// CK21-NEXT: entry:4490// CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 84491// CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 84492// CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 84493// CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04494// CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 84495// CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14496// CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 84497// CK21-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 14498// CK21-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 84499// CK21-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 84500// CK21-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 14501// CK21-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 84502// CK21-NEXT: ret void4503//4504//4505// CK22-LABEL: define {{[^@]+}}@_Z3barPd4506// CK22-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {4507// CK22-NEXT: entry:4508// CK22-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 44509// CK22-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 44510// CK22-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 44511// CK22-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])4512// CK22-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])4513// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 44514// CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 14515// CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 44516// CK22-NEXT: ret void4517//4518//4519// CK22-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd4520// CK22-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {4521// CK22-NEXT: entry:4522// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44523// CK22-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 44524// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44525// CK22-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 44526// CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44527// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 44528// CK22-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]])4529// CK22-NEXT: ret void4530//4531//4532// CK22-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd4533// CK22-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {4534// CK22-NEXT: entry:4535// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44536// CK22-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 44537// CK22-NEXT: [[LA:%.*]] = alloca ptr, align 44538// CK22-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 44539// CK22-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 44540// CK22-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 44541// CK22-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 84542// CK22-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 44543// CK22-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 44544// CK22-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 44545// CK22-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 44546// CK22-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84547// CK22-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 44548// CK22-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 44549// CK22-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 44550// CK22-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 44551// CK22-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84552// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44553// CK22-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 44554// CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44555// CK22-NEXT: store ptr null, ptr [[LA]], align 44556// CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04557// CK22-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04558// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 44559// CK22-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04560// CK22-NEXT: store ptr [[A]], ptr [[TMP1]], align 44561// CK22-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 04562// CK22-NEXT: store ptr null, ptr [[TMP2]], align 44563// CK22-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04564// CK22-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04565// CK22-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 04566// CK22-NEXT: store i32 3, ptr [[TMP5]], align 44567// CK22-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 14568// CK22-NEXT: store i32 1, ptr [[TMP6]], align 44569// CK22-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 24570// CK22-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 44571// CK22-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 34572// CK22-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 44573// CK22-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 44574// CK22-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 44575// CK22-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 54576// CK22-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 44577// CK22-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 64578// CK22-NEXT: store ptr null, ptr [[TMP11]], align 44579// CK22-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 74580// CK22-NEXT: store ptr null, ptr [[TMP12]], align 44581// CK22-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 84582// CK22-NEXT: store i64 0, ptr [[TMP13]], align 84583// CK22-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 94584// CK22-NEXT: store i64 0, ptr [[TMP14]], align 84585// CK22-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 104586// CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 44587// CK22-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 114588// CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 44589// CK22-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 124590// CK22-NEXT: store i32 0, ptr [[TMP17]], align 44591// CK22-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])4592// CK22-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 04593// CK22-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]4594// CK22: omp_offload.failed:4595// CK22-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR2:[0-9]+]]4596// CK22-NEXT: br label [[OMP_OFFLOAD_CONT]]4597// CK22: omp_offload.cont:4598// CK22-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14599// CK22-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 44600// CK22-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 14601// CK22-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i644602// CK22-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i644603// CK22-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]4604// CK22-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4605// CK22-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES]], ptr align 4 @.offload_sizes.1, i32 16, i1 false)4606// CK22-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04607// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 44608// CK22-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04609// CK22-NEXT: store ptr [[B]], ptr [[TMP27]], align 44610// CK22-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04611// CK22-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 44612// CK22-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 04613// CK22-NEXT: store ptr null, ptr [[TMP29]], align 44614// CK22-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 14615// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 44616// CK22-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 14617// CK22-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 44618// CK22-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 14619// CK22-NEXT: store ptr null, ptr [[TMP32]], align 44620// CK22-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04621// CK22-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04622// CK22-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04623// CK22-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 04624// CK22-NEXT: store i32 3, ptr [[TMP36]], align 44625// CK22-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 14626// CK22-NEXT: store i32 2, ptr [[TMP37]], align 44627// CK22-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 24628// CK22-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 44629// CK22-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 34630// CK22-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 44631// CK22-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 44632// CK22-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 44633// CK22-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 54634// CK22-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 44635// CK22-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 64636// CK22-NEXT: store ptr null, ptr [[TMP42]], align 44637// CK22-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 74638// CK22-NEXT: store ptr null, ptr [[TMP43]], align 44639// CK22-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 84640// CK22-NEXT: store i64 0, ptr [[TMP44]], align 84641// CK22-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 94642// CK22-NEXT: store i64 0, ptr [[TMP45]], align 84643// CK22-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 104644// CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 44645// CK22-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 114646// CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 44647// CK22-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 124648// CK22-NEXT: store i32 0, ptr [[TMP48]], align 44649// CK22-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])4650// CK22-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 04651// CK22-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]4652// CK22: omp_offload.failed6:4653// CK22-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR2]]4654// CK22-NEXT: br label [[OMP_OFFLOAD_CONT7]]4655// CK22: omp_offload.cont7:4656// CK22-NEXT: [[A8:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 04657// CK22-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14658// CK22-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 44659// CK22-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 14660// CK22-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i644661// CK22-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i644662// CK22-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]4663// CK22-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4664// CK22-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES13]], ptr align 4 @.offload_sizes.3, i32 24, i1 false)4665// CK22-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04666// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 44667// CK22-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04668// CK22-NEXT: store ptr [[A8]], ptr [[TMP58]], align 44669// CK22-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04670// CK22-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 44671// CK22-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 04672// CK22-NEXT: store ptr null, ptr [[TMP60]], align 44673// CK22-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 14674// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 44675// CK22-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 14676// CK22-NEXT: store ptr [[A8]], ptr [[TMP62]], align 44677// CK22-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 14678// CK22-NEXT: store ptr null, ptr [[TMP63]], align 44679// CK22-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 24680// CK22-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 44681// CK22-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 24682// CK22-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 44683// CK22-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 24684// CK22-NEXT: store ptr null, ptr [[TMP66]], align 44685// CK22-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04686// CK22-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04687// CK22-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04688// CK22-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 04689// CK22-NEXT: store i32 3, ptr [[TMP70]], align 44690// CK22-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 14691// CK22-NEXT: store i32 3, ptr [[TMP71]], align 44692// CK22-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 24693// CK22-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 44694// CK22-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 34695// CK22-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 44696// CK22-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 44697// CK22-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 44698// CK22-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 54699// CK22-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 44700// CK22-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 64701// CK22-NEXT: store ptr null, ptr [[TMP76]], align 44702// CK22-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 74703// CK22-NEXT: store ptr null, ptr [[TMP77]], align 44704// CK22-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 84705// CK22-NEXT: store i64 0, ptr [[TMP78]], align 84706// CK22-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 94707// CK22-NEXT: store i64 0, ptr [[TMP79]], align 84708// CK22-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 104709// CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 44710// CK22-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 114711// CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 44712// CK22-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 124713// CK22-NEXT: store i32 0, ptr [[TMP82]], align 44714// CK22-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])4715// CK22-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 04716// CK22-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]4717// CK22: omp_offload.failed15:4718// CK22-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR2]]4719// CK22-NEXT: br label [[OMP_OFFLOAD_CONT16]]4720// CK22: omp_offload.cont16:4721// CK22-NEXT: ret void4722//4723//4724// CK22-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd4725// CK22-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {4726// CK22-NEXT: entry:4727// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44728// CK22-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 44729// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44730// CK22-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 44731// CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44732// CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04733// CK22-NEXT: store ptr null, ptr [[A]], align 44734// CK22-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14735// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 44736// CK22-NEXT: store ptr [[TMP0]], ptr [[B2]], align 44737// CK22-NEXT: ret void4738//4739//4740// CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1124741// CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] {4742// CK22-NEXT: entry:4743// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44744// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44745// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44746// CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04747// CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 44748// CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14749// CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 44750// CK22-NEXT: ret void4751//4752//4753// CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1184754// CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4755// CK22-NEXT: entry:4756// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44757// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44758// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44759// CK22-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 14760// CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 44761// CK22-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 44762// CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 14763// CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 44764// CK22-NEXT: ret void4765//4766//4767// CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1254768// CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {4769// CK22-NEXT: entry:4770// CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44771// CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44772// CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44773// CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 04774// CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 44775// CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 14776// CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 44777// CK22-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 14778// CK22-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 44779// CK22-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 44780// CK22-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 14781// CK22-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 44782// CK22-NEXT: ret void4783//4784//4785// CK23-LABEL: define {{[^@]+}}@_Z3barPd4786// CK23-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {4787// CK23-NEXT: entry:4788// CK23-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 44789// CK23-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 44790// CK23-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 44791// CK23-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])4792// CK23-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])4793// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 44794// CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 14795// CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 44796// CK23-NEXT: ret void4797//4798//4799// CK23-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd4800// CK23-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {4801// CK23-NEXT: entry:4802// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44803// CK23-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 44804// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44805// CK23-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 44806// CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44807// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 44808// CK23-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]])4809// CK23-NEXT: ret void4810//4811//4812// CK23-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd4813// CK23-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {4814// CK23-NEXT: entry:4815// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 44816// CK23-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 44817// CK23-NEXT: [[LA:%.*]] = alloca ptr, align 44818// CK23-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 44819// CK23-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 44820// CK23-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 44821// CK23-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 84822// CK23-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 44823// CK23-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 44824// CK23-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 44825// CK23-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 44826// CK23-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84827// CK23-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 44828// CK23-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 44829// CK23-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 44830// CK23-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 44831// CK23-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 84832// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 44833// CK23-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 44834// CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 44835// CK23-NEXT: store ptr null, ptr [[LA]], align 44836// CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 04837// CK23-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04838// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 44839// CK23-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04840// CK23-NEXT: store ptr [[A]], ptr [[TMP1]], align 44841// CK23-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 04842// CK23-NEXT: store ptr null, ptr [[TMP2]], align 44843// CK23-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 04844// CK23-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 04845// CK23-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 04846// CK23-NEXT: store i32 3, ptr [[TMP5]], align 44847// CK23-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 14848// CK23-NEXT: store i32 1, ptr [[TMP6]], align 44849// CK23-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 24850// CK23-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 44851// CK23-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 34852// CK23-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 44853// CK23-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 44854// CK23-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 44855// CK23-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 54856// CK23-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 44857// CK23-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 64858// CK23-NEXT: store ptr null, ptr [[TMP11]], align 44859// CK23-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 74860// CK23-NEXT: store ptr null, ptr [[TMP12]], align 44861// CK23-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 84862// CK23-NEXT: store i64 0, ptr [[TMP13]], align 84863// CK23-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 94864// CK23-NEXT: store i64 0, ptr [[TMP14]], align 84865// CK23-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 104866// CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 44867// CK23-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 114868// CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 44869// CK23-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 124870// CK23-NEXT: store i32 0, ptr [[TMP17]], align 44871// CK23-NEXT: [[TMP18:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112.region_id, ptr [[KERNEL_ARGS]])4872// CK23-NEXT: [[TMP19:%.*]] = icmp ne i32 [[TMP18]], 04873// CK23-NEXT: br i1 [[TMP19]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]4874// CK23: omp_offload.failed:4875// CK23-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112(ptr [[THIS1]]) #[[ATTR2:[0-9]+]]4876// CK23-NEXT: br label [[OMP_OFFLOAD_CONT]]4877// CK23: omp_offload.cont:4878// CK23-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14879// CK23-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 44880// CK23-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 14881// CK23-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i644882// CK23-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i644883// CK23-NEXT: [[TMP24:%.*]] = sub i64 [[TMP22]], [[TMP23]]4884// CK23-NEXT: [[TMP25:%.*]] = sdiv exact i64 [[TMP24]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4885// CK23-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES]], ptr align 4 @.offload_sizes.1, i32 16, i1 false)4886// CK23-NEXT: [[TMP26:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04887// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 44888// CK23-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04889// CK23-NEXT: store ptr [[B]], ptr [[TMP27]], align 44890// CK23-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04891// CK23-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 44892// CK23-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 04893// CK23-NEXT: store ptr null, ptr [[TMP29]], align 44894// CK23-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 14895// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 44896// CK23-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 14897// CK23-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 44898// CK23-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 14899// CK23-NEXT: store ptr null, ptr [[TMP32]], align 44900// CK23-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 04901// CK23-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 04902// CK23-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 04903// CK23-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 04904// CK23-NEXT: store i32 3, ptr [[TMP36]], align 44905// CK23-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 14906// CK23-NEXT: store i32 2, ptr [[TMP37]], align 44907// CK23-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 24908// CK23-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 44909// CK23-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 34910// CK23-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 44911// CK23-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 44912// CK23-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 44913// CK23-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 54914// CK23-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 44915// CK23-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 64916// CK23-NEXT: store ptr null, ptr [[TMP42]], align 44917// CK23-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 74918// CK23-NEXT: store ptr null, ptr [[TMP43]], align 44919// CK23-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 84920// CK23-NEXT: store i64 0, ptr [[TMP44]], align 84921// CK23-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 94922// CK23-NEXT: store i64 0, ptr [[TMP45]], align 84923// CK23-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 104924// CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 44925// CK23-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 114926// CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 44927// CK23-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 124928// CK23-NEXT: store i32 0, ptr [[TMP48]], align 44929// CK23-NEXT: [[TMP49:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118.region_id, ptr [[KERNEL_ARGS5]])4930// CK23-NEXT: [[TMP50:%.*]] = icmp ne i32 [[TMP49]], 04931// CK23-NEXT: br i1 [[TMP50]], label [[OMP_OFFLOAD_FAILED6:%.*]], label [[OMP_OFFLOAD_CONT7:%.*]]4932// CK23: omp_offload.failed6:4933// CK23-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118(ptr [[THIS1]]) #[[ATTR2]]4934// CK23-NEXT: br label [[OMP_OFFLOAD_CONT7]]4935// CK23: omp_offload.cont7:4936// CK23-NEXT: [[A8:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 04937// CK23-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 14938// CK23-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 44939// CK23-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 14940// CK23-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i644941// CK23-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i644942// CK23-NEXT: [[TMP55:%.*]] = sub i64 [[TMP53]], [[TMP54]]4943// CK23-NEXT: [[TMP56:%.*]] = sdiv exact i64 [[TMP55]], ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)4944// CK23-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[DOTOFFLOAD_SIZES13]], ptr align 4 @.offload_sizes.3, i32 24, i1 false)4945// CK23-NEXT: [[TMP57:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04946// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 44947// CK23-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04948// CK23-NEXT: store ptr [[A8]], ptr [[TMP58]], align 44949// CK23-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04950// CK23-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 44951// CK23-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 04952// CK23-NEXT: store ptr null, ptr [[TMP60]], align 44953// CK23-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 14954// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 44955// CK23-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 14956// CK23-NEXT: store ptr [[A8]], ptr [[TMP62]], align 44957// CK23-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 14958// CK23-NEXT: store ptr null, ptr [[TMP63]], align 44959// CK23-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 24960// CK23-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 44961// CK23-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 24962// CK23-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 44963// CK23-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 24964// CK23-NEXT: store ptr null, ptr [[TMP66]], align 44965// CK23-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 04966// CK23-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 04967// CK23-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 04968// CK23-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 04969// CK23-NEXT: store i32 3, ptr [[TMP70]], align 44970// CK23-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 14971// CK23-NEXT: store i32 3, ptr [[TMP71]], align 44972// CK23-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 24973// CK23-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 44974// CK23-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 34975// CK23-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 44976// CK23-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 44977// CK23-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 44978// CK23-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 54979// CK23-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 44980// CK23-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 64981// CK23-NEXT: store ptr null, ptr [[TMP76]], align 44982// CK23-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 74983// CK23-NEXT: store ptr null, ptr [[TMP77]], align 44984// CK23-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 84985// CK23-NEXT: store i64 0, ptr [[TMP78]], align 84986// CK23-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 94987// CK23-NEXT: store i64 0, ptr [[TMP79]], align 84988// CK23-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 104989// CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 44990// CK23-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 114991// CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 44992// CK23-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 124993// CK23-NEXT: store i32 0, ptr [[TMP82]], align 44994// CK23-NEXT: [[TMP83:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125.region_id, ptr [[KERNEL_ARGS14]])4995// CK23-NEXT: [[TMP84:%.*]] = icmp ne i32 [[TMP83]], 04996// CK23-NEXT: br i1 [[TMP84]], label [[OMP_OFFLOAD_FAILED15:%.*]], label [[OMP_OFFLOAD_CONT16:%.*]]4997// CK23: omp_offload.failed15:4998// CK23-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125(ptr [[THIS1]]) #[[ATTR2]]4999// CK23-NEXT: br label [[OMP_OFFLOAD_CONT16]]5000// CK23: omp_offload.cont16:5001// CK23-NEXT: ret void5002//5003//5004// CK23-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd5005// CK23-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {5006// CK23-NEXT: entry:5007// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45008// CK23-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 45009// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45010// CK23-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 45011// CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45012// CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05013// CK23-NEXT: store ptr null, ptr [[A]], align 45014// CK23-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15015// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 45016// CK23-NEXT: store ptr [[TMP0]], ptr [[B2]], align 45017// CK23-NEXT: ret void5018//5019//5020// CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1125021// CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] {5022// CK23-NEXT: entry:5023// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45024// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45025// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45026// CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 05027// CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 45028// CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 15029// CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 45030// CK23-NEXT: ret void5031//5032//5033// CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1185034// CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {5035// CK23-NEXT: entry:5036// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45037// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45038// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45039// CK23-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 15040// CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 45041// CK23-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 45042// CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 15043// CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 45044// CK23-NEXT: ret void5045//5046//5047// CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l1255048// CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] {5049// CK23-NEXT: entry:5050// CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45051// CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45052// CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45053// CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 05054// CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 45055// CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 15056// CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 45057// CK23-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 15058// CK23-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 45059// CK23-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 45060// CK23-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 15061// CK23-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 45062// CK23-NEXT: ret void5063//5064//5065// SIMD-ONLY10-LABEL: define {{[^@]+}}@_Z3barPd5066// SIMD-ONLY10-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {5067// SIMD-ONLY10-NEXT: entry:5068// SIMD-ONLY10-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 85069// SIMD-ONLY10-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 85070// SIMD-ONLY10-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 85071// SIMD-ONLY10-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])5072// SIMD-ONLY10-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])5073// SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 85074// SIMD-ONLY10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15075// SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 85076// SIMD-ONLY10-NEXT: ret void5077//5078//5079// SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd5080// SIMD-ONLY10-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {5081// SIMD-ONLY10-NEXT: entry:5082// SIMD-ONLY10-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85083// SIMD-ONLY10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 85084// SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85085// SIMD-ONLY10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 85086// SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85087// SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 85088// SIMD-ONLY10-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[THIS1]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]])5089// SIMD-ONLY10-NEXT: ret void5090//5091//5092// SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd5093// SIMD-ONLY10-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG:%.*]]) #[[ATTR0]] comdat {5094// SIMD-ONLY10-NEXT: entry:5095// SIMD-ONLY10-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85096// SIMD-ONLY10-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 85097// SIMD-ONLY10-NEXT: [[LA:%.*]] = alloca ptr, align 85098// SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85099// SIMD-ONLY10-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 85100// SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85101// SIMD-ONLY10-NEXT: store ptr null, ptr [[LA]], align 85102// SIMD-ONLY10-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05103// SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 85104// SIMD-ONLY10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15105// SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 85106// SIMD-ONLY10-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15107// SIMD-ONLY10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 85108// SIMD-ONLY10-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 85109// SIMD-ONLY10-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 15110// SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 85111// SIMD-ONLY10-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 05112// SIMD-ONLY10-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 85113// SIMD-ONLY10-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 15114// SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 85115// SIMD-ONLY10-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15116// SIMD-ONLY10-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 85117// SIMD-ONLY10-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 85118// SIMD-ONLY10-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 15119// SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 85120// SIMD-ONLY10-NEXT: ret void5121//5122//5123// SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd5124// SIMD-ONLY10-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {5125// SIMD-ONLY10-NEXT: entry:5126// SIMD-ONLY10-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85127// SIMD-ONLY10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 85128// SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85129// SIMD-ONLY10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 85130// SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85131// SIMD-ONLY10-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05132// SIMD-ONLY10-NEXT: store ptr null, ptr [[A]], align 85133// SIMD-ONLY10-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15134// SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 85135// SIMD-ONLY10-NEXT: store ptr [[TMP0]], ptr [[B2]], align 85136// SIMD-ONLY10-NEXT: ret void5137//5138//5139// SIMD-ONLY11-LABEL: define {{[^@]+}}@_Z3barPd5140// SIMD-ONLY11-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {5141// SIMD-ONLY11-NEXT: entry:5142// SIMD-ONLY11-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 85143// SIMD-ONLY11-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 85144// SIMD-ONLY11-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 85145// SIMD-ONLY11-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])5146// SIMD-ONLY11-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 8 dereferenceable(16) [[A]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG_ADDR]])5147// SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 85148// SIMD-ONLY11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15149// SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 85150// SIMD-ONLY11-NEXT: ret void5151//5152//5153// SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd5154// SIMD-ONLY11-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {5155// SIMD-ONLY11-NEXT: entry:5156// SIMD-ONLY11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85157// SIMD-ONLY11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 85158// SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85159// SIMD-ONLY11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 85160// SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85161// SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 85162// SIMD-ONLY11-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 8 dereferenceable(16) [[THIS1]], ptr noundef nonnull align 8 dereferenceable(8) [[TMP0]])5163// SIMD-ONLY11-NEXT: ret void5164//5165//5166// SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd5167// SIMD-ONLY11-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[ARG:%.*]]) #[[ATTR0]] comdat {5168// SIMD-ONLY11-NEXT: entry:5169// SIMD-ONLY11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85170// SIMD-ONLY11-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 85171// SIMD-ONLY11-NEXT: [[LA:%.*]] = alloca ptr, align 85172// SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85173// SIMD-ONLY11-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 85174// SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85175// SIMD-ONLY11-NEXT: store ptr null, ptr [[LA]], align 85176// SIMD-ONLY11-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05177// SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 85178// SIMD-ONLY11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15179// SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 85180// SIMD-ONLY11-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15181// SIMD-ONLY11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 85182// SIMD-ONLY11-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 85183// SIMD-ONLY11-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 15184// SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 85185// SIMD-ONLY11-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 05186// SIMD-ONLY11-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 85187// SIMD-ONLY11-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 15188// SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 85189// SIMD-ONLY11-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15190// SIMD-ONLY11-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 85191// SIMD-ONLY11-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 85192// SIMD-ONLY11-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 15193// SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 85194// SIMD-ONLY11-NEXT: ret void5195//5196//5197// SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd5198// SIMD-ONLY11-SAME: (ptr noundef nonnull align 8 dereferenceable(16) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat {5199// SIMD-ONLY11-NEXT: entry:5200// SIMD-ONLY11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 85201// SIMD-ONLY11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 85202// SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 85203// SIMD-ONLY11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 85204// SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 85205// SIMD-ONLY11-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05206// SIMD-ONLY11-NEXT: store ptr null, ptr [[A]], align 85207// SIMD-ONLY11-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15208// SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 85209// SIMD-ONLY11-NEXT: store ptr [[TMP0]], ptr [[B2]], align 85210// SIMD-ONLY11-NEXT: ret void5211//5212//5213// SIMD-ONLY12-LABEL: define {{[^@]+}}@_Z3barPd5214// SIMD-ONLY12-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {5215// SIMD-ONLY12-NEXT: entry:5216// SIMD-ONLY12-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 45217// SIMD-ONLY12-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 45218// SIMD-ONLY12-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 45219// SIMD-ONLY12-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])5220// SIMD-ONLY12-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])5221// SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 45222// SIMD-ONLY12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15223// SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 45224// SIMD-ONLY12-NEXT: ret void5225//5226//5227// SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd5228// SIMD-ONLY12-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {5229// SIMD-ONLY12-NEXT: entry:5230// SIMD-ONLY12-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45231// SIMD-ONLY12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 45232// SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45233// SIMD-ONLY12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 45234// SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45235// SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 45236// SIMD-ONLY12-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]])5237// SIMD-ONLY12-NEXT: ret void5238//5239//5240// SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd5241// SIMD-ONLY12-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {5242// SIMD-ONLY12-NEXT: entry:5243// SIMD-ONLY12-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45244// SIMD-ONLY12-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 45245// SIMD-ONLY12-NEXT: [[LA:%.*]] = alloca ptr, align 45246// SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45247// SIMD-ONLY12-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 45248// SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45249// SIMD-ONLY12-NEXT: store ptr null, ptr [[LA]], align 45250// SIMD-ONLY12-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05251// SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 45252// SIMD-ONLY12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15253// SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 45254// SIMD-ONLY12-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15255// SIMD-ONLY12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 45256// SIMD-ONLY12-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 45257// SIMD-ONLY12-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 15258// SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 45259// SIMD-ONLY12-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 05260// SIMD-ONLY12-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 45261// SIMD-ONLY12-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 15262// SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 45263// SIMD-ONLY12-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15264// SIMD-ONLY12-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 45265// SIMD-ONLY12-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 45266// SIMD-ONLY12-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 15267// SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 45268// SIMD-ONLY12-NEXT: ret void5269//5270//5271// SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd5272// SIMD-ONLY12-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {5273// SIMD-ONLY12-NEXT: entry:5274// SIMD-ONLY12-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45275// SIMD-ONLY12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 45276// SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45277// SIMD-ONLY12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 45278// SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45279// SIMD-ONLY12-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05280// SIMD-ONLY12-NEXT: store ptr null, ptr [[A]], align 45281// SIMD-ONLY12-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15282// SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 45283// SIMD-ONLY12-NEXT: store ptr [[TMP0]], ptr [[B2]], align 45284// SIMD-ONLY12-NEXT: ret void5285//5286//5287// SIMD-ONLY13-LABEL: define {{[^@]+}}@_Z3barPd5288// SIMD-ONLY13-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {5289// SIMD-ONLY13-NEXT: entry:5290// SIMD-ONLY13-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 45291// SIMD-ONLY13-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 45292// SIMD-ONLY13-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 45293// SIMD-ONLY13-NEXT: call void @_ZN2STIdEC1ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])5294// SIMD-ONLY13-NEXT: call void @_ZN2STIdE3fooERPd(ptr noundef nonnull align 4 dereferenceable(8) [[A]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG_ADDR]])5295// SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARG_ADDR]], align 45296// SIMD-ONLY13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15297// SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 45298// SIMD-ONLY13-NEXT: ret void5299//5300//5301// SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd5302// SIMD-ONLY13-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {5303// SIMD-ONLY13-NEXT: entry:5304// SIMD-ONLY13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45305// SIMD-ONLY13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 45306// SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45307// SIMD-ONLY13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 45308// SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45309// SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 45310// SIMD-ONLY13-NEXT: call void @_ZN2STIdEC2ERPd(ptr noundef nonnull align 4 dereferenceable(8) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]])5311// SIMD-ONLY13-NEXT: ret void5312//5313//5314// SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd5315// SIMD-ONLY13-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[ARG:%.*]]) #[[ATTR0]] comdat align 2 {5316// SIMD-ONLY13-NEXT: entry:5317// SIMD-ONLY13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45318// SIMD-ONLY13-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 45319// SIMD-ONLY13-NEXT: [[LA:%.*]] = alloca ptr, align 45320// SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45321// SIMD-ONLY13-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 45322// SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45323// SIMD-ONLY13-NEXT: store ptr null, ptr [[LA]], align 45324// SIMD-ONLY13-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05325// SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 45326// SIMD-ONLY13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 15327// SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 45328// SIMD-ONLY13-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15329// SIMD-ONLY13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 45330// SIMD-ONLY13-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 45331// SIMD-ONLY13-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 15332// SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 45333// SIMD-ONLY13-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 05334// SIMD-ONLY13-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 45335// SIMD-ONLY13-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 15336// SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 45337// SIMD-ONLY13-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15338// SIMD-ONLY13-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 45339// SIMD-ONLY13-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 45340// SIMD-ONLY13-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 15341// SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 45342// SIMD-ONLY13-NEXT: ret void5343//5344//5345// SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd5346// SIMD-ONLY13-SAME: (ptr noundef nonnull align 4 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 4 dereferenceable(4) [[B:%.*]]) unnamed_addr #[[ATTR0]] comdat align 2 {5347// SIMD-ONLY13-NEXT: entry:5348// SIMD-ONLY13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 45349// SIMD-ONLY13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 45350// SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 45351// SIMD-ONLY13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 45352// SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 45353// SIMD-ONLY13-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 05354// SIMD-ONLY13-NEXT: store ptr null, ptr [[A]], align 45355// SIMD-ONLY13-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 15356// SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 45357// SIMD-ONLY13-NEXT: store ptr [[TMP0]], ptr [[B2]], align 45358// SIMD-ONLY13-NEXT: ret void5359//5360//5361// CK30-LABEL: define {{[^@]+}}@_Z3barv5362// CK30-SAME: () #[[ATTR0:[0-9]+]] {5363// CK30-NEXT: entry:5364// CK30-NEXT: [[PTR:%.*]] = alloca ptr, align 645365// CK30-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 85366// CK30-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 85367// CK30-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 85368// CK30-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 85369// CK30-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645370// CK30-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05371// CK30-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 85372// CK30-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05373// CK30-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 85374// CK30-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 05375// CK30-NEXT: store ptr null, ptr [[TMP3]], align 85376// CK30-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05377// CK30-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05378// CK30-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 05379// CK30-NEXT: store i32 3, ptr [[TMP6]], align 45380// CK30-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 15381// CK30-NEXT: store i32 1, ptr [[TMP7]], align 45382// CK30-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 25383// CK30-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 85384// CK30-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 35385// CK30-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 85386// CK30-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 45387// CK30-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 85388// CK30-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 55389// CK30-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 85390// CK30-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 65391// CK30-NEXT: store ptr null, ptr [[TMP12]], align 85392// CK30-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 75393// CK30-NEXT: store ptr null, ptr [[TMP13]], align 85394// CK30-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 85395// CK30-NEXT: store i64 0, ptr [[TMP14]], align 85396// CK30-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 95397// CK30-NEXT: store i64 0, ptr [[TMP15]], align 85398// CK30-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 105399// CK30-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 45400// CK30-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 115401// CK30-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 45402// CK30-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 125403// CK30-NEXT: store i32 0, ptr [[TMP18]], align 45404// CK30-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])5405// CK30-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 05406// CK30-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]5407// CK30: omp_offload.failed:5408// CK30-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]5409// CK30-NEXT: br label [[OMP_OFFLOAD_CONT]]5410// CK30: omp_offload.cont:5411// CK30-NEXT: ret void5412//5413//5414// CK30-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1595415// CK30-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {5416// CK30-NEXT: entry:5417// CK30-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 85418// CK30-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 85419// CK30-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 85420// CK30-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 85421// CK30-NEXT: ret void5422//5423//5424// CK31-LABEL: define {{[^@]+}}@_Z3barv5425// CK31-SAME: () #[[ATTR0:[0-9]+]] {5426// CK31-NEXT: entry:5427// CK31-NEXT: [[PTR:%.*]] = alloca ptr, align 645428// CK31-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 85429// CK31-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 85430// CK31-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 85431// CK31-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 85432// CK31-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645433// CK31-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05434// CK31-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 85435// CK31-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05436// CK31-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 85437// CK31-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 05438// CK31-NEXT: store ptr null, ptr [[TMP3]], align 85439// CK31-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05440// CK31-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05441// CK31-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 05442// CK31-NEXT: store i32 3, ptr [[TMP6]], align 45443// CK31-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 15444// CK31-NEXT: store i32 1, ptr [[TMP7]], align 45445// CK31-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 25446// CK31-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 85447// CK31-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 35448// CK31-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 85449// CK31-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 45450// CK31-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 85451// CK31-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 55452// CK31-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 85453// CK31-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 65454// CK31-NEXT: store ptr null, ptr [[TMP12]], align 85455// CK31-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 75456// CK31-NEXT: store ptr null, ptr [[TMP13]], align 85457// CK31-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 85458// CK31-NEXT: store i64 0, ptr [[TMP14]], align 85459// CK31-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 95460// CK31-NEXT: store i64 0, ptr [[TMP15]], align 85461// CK31-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 105462// CK31-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 45463// CK31-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 115464// CK31-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 45465// CK31-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 125466// CK31-NEXT: store i32 0, ptr [[TMP18]], align 45467// CK31-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])5468// CK31-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 05469// CK31-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]5470// CK31: omp_offload.failed:5471// CK31-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]5472// CK31-NEXT: br label [[OMP_OFFLOAD_CONT]]5473// CK31: omp_offload.cont:5474// CK31-NEXT: ret void5475//5476//5477// CK31-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1595478// CK31-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {5479// CK31-NEXT: entry:5480// CK31-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 85481// CK31-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 85482// CK31-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 85483// CK31-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 85484// CK31-NEXT: ret void5485//5486//5487// CK32-LABEL: define {{[^@]+}}@_Z3barv5488// CK32-SAME: () #[[ATTR0:[0-9]+]] {5489// CK32-NEXT: entry:5490// CK32-NEXT: [[PTR:%.*]] = alloca ptr, align 645491// CK32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 45492// CK32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 45493// CK32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 45494// CK32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 85495// CK32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645496// CK32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05497// CK32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 45498// CK32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05499// CK32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 45500// CK32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 05501// CK32-NEXT: store ptr null, ptr [[TMP3]], align 45502// CK32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05503// CK32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05504// CK32-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 05505// CK32-NEXT: store i32 3, ptr [[TMP6]], align 45506// CK32-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 15507// CK32-NEXT: store i32 1, ptr [[TMP7]], align 45508// CK32-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 25509// CK32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 45510// CK32-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 35511// CK32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 45512// CK32-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 45513// CK32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 45514// CK32-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 55515// CK32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 45516// CK32-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 65517// CK32-NEXT: store ptr null, ptr [[TMP12]], align 45518// CK32-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 75519// CK32-NEXT: store ptr null, ptr [[TMP13]], align 45520// CK32-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 85521// CK32-NEXT: store i64 0, ptr [[TMP14]], align 85522// CK32-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 95523// CK32-NEXT: store i64 0, ptr [[TMP15]], align 85524// CK32-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 105525// CK32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 45526// CK32-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 115527// CK32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 45528// CK32-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 125529// CK32-NEXT: store i32 0, ptr [[TMP18]], align 45530// CK32-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])5531// CK32-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 05532// CK32-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]5533// CK32: omp_offload.failed:5534// CK32-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]5535// CK32-NEXT: br label [[OMP_OFFLOAD_CONT]]5536// CK32: omp_offload.cont:5537// CK32-NEXT: ret void5538//5539//5540// CK32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1595541// CK32-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {5542// CK32-NEXT: entry:5543// CK32-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 45544// CK32-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 45545// CK32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 45546// CK32-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 45547// CK32-NEXT: ret void5548//5549//5550// CK33-LABEL: define {{[^@]+}}@_Z3barv5551// CK33-SAME: () #[[ATTR0:[0-9]+]] {5552// CK33-NEXT: entry:5553// CK33-NEXT: [[PTR:%.*]] = alloca ptr, align 645554// CK33-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 45555// CK33-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 45556// CK33-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 45557// CK33-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 85558// CK33-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645559// CK33-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05560// CK33-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 45561// CK33-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05562// CK33-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 45563// CK33-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 05564// CK33-NEXT: store ptr null, ptr [[TMP3]], align 45565// CK33-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 05566// CK33-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 05567// CK33-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 05568// CK33-NEXT: store i32 3, ptr [[TMP6]], align 45569// CK33-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 15570// CK33-NEXT: store i32 1, ptr [[TMP7]], align 45571// CK33-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 25572// CK33-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 45573// CK33-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 35574// CK33-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 45575// CK33-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 45576// CK33-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 45577// CK33-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 55578// CK33-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 45579// CK33-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 65580// CK33-NEXT: store ptr null, ptr [[TMP12]], align 45581// CK33-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 75582// CK33-NEXT: store ptr null, ptr [[TMP13]], align 45583// CK33-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 85584// CK33-NEXT: store i64 0, ptr [[TMP14]], align 85585// CK33-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 95586// CK33-NEXT: store i64 0, ptr [[TMP15]], align 85587// CK33-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 105588// CK33-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 45589// CK33-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 115590// CK33-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 45591// CK33-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 125592// CK33-NEXT: store i32 0, ptr [[TMP18]], align 45593// CK33-NEXT: [[TMP19:%.*]] = call i32 @__tgt_target_kernel(ptr @[[GLOB1:[0-9]+]], i64 -1, i32 -1, i32 0, ptr @.{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159.region_id, ptr [[KERNEL_ARGS]])5594// CK33-NEXT: [[TMP20:%.*]] = icmp ne i32 [[TMP19]], 05595// CK33-NEXT: br i1 [[TMP20]], label [[OMP_OFFLOAD_FAILED:%.*]], label [[OMP_OFFLOAD_CONT:%.*]]5596// CK33: omp_offload.failed:5597// CK33-NEXT: call void @{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159(ptr [[TMP0]]) #[[ATTR2:[0-9]+]]5598// CK33-NEXT: br label [[OMP_OFFLOAD_CONT]]5599// CK33: omp_offload.cont:5600// CK33-NEXT: ret void5601//5602//5603// CK33-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l1595604// CK33-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] {5605// CK33-NEXT: entry:5606// CK33-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 45607// CK33-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 45608// CK33-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 45609// CK33-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 45610// CK33-NEXT: ret void5611//5612//5613// SIMD-ONLY20-LABEL: define {{[^@]+}}@_Z3barv5614// SIMD-ONLY20-SAME: () #[[ATTR0:[0-9]+]] {5615// SIMD-ONLY20-NEXT: entry:5616// SIMD-ONLY20-NEXT: [[PTR:%.*]] = alloca ptr, align 645617// SIMD-ONLY20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645618// SIMD-ONLY20-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 85619// SIMD-ONLY20-NEXT: ret void5620//5621//5622// SIMD-ONLY21-LABEL: define {{[^@]+}}@_Z3barv5623// SIMD-ONLY21-SAME: () #[[ATTR0:[0-9]+]] {5624// SIMD-ONLY21-NEXT: entry:5625// SIMD-ONLY21-NEXT: [[PTR:%.*]] = alloca ptr, align 645626// SIMD-ONLY21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645627// SIMD-ONLY21-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 85628// SIMD-ONLY21-NEXT: ret void5629//5630//5631// SIMD-ONLY22-LABEL: define {{[^@]+}}@_Z3barv5632// SIMD-ONLY22-SAME: () #[[ATTR0:[0-9]+]] {5633// SIMD-ONLY22-NEXT: entry:5634// SIMD-ONLY22-NEXT: [[PTR:%.*]] = alloca ptr, align 645635// SIMD-ONLY22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645636// SIMD-ONLY22-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 45637// SIMD-ONLY22-NEXT: ret void5638//5639//5640// SIMD-ONLY23-LABEL: define {{[^@]+}}@_Z3barv5641// SIMD-ONLY23-SAME: () #[[ATTR0:[0-9]+]] {5642// SIMD-ONLY23-NEXT: entry:5643// SIMD-ONLY23-NEXT: [[PTR:%.*]] = alloca ptr, align 645644// SIMD-ONLY23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 645645// SIMD-ONLY23-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 45646// SIMD-ONLY23-NEXT: ret void5647//5648