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-diagnostics 3 #ifndef HEADER 4 #define HEADER 5 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 CK10 8 // RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s 9 // 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 CK11 10 // 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 CK12 11 // RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s 12 // 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 CK13 13 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 %s 15 // 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 %s 16 // 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 %s 17 // 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 %s 18 // 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 %s 19 // 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 %s 20 #ifdef CK1 21 22 double *g; 23 24 25 26 27 28 29 30 31 template<typename T> 32 void 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 80 void bar(float *&a, int *&b) { 81 foo<int>(a,b); 82 } 83 84 #endif 85 ///==========================================================================/// 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 CK20 87 // RUN: %clang_cc1 -DCK2 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s 88 // 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 CK21 89 // 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 CK22 90 // RUN: %clang_cc1 -DCK2 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s 91 // 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 CK23 92 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 %s 94 // 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 %s 95 // 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 %s 96 // 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 %s 97 // 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 %s 98 // 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 %s 99 #ifdef CK2 100 101 102 template <typename T> 103 struct 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 133 void bar(double *arg){ 134 ST<double> A(arg); 135 A.foo(arg); 136 ++arg; 137 } 138 #endif 139 ///==========================================================================/// 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 CK30 141 // RUN: %clang_cc1 -DCK3 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s 142 // 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 CK31 143 // 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 CK32 144 // RUN: %clang_cc1 -DCK3 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s 145 // 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 CK33 146 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 %s 148 // 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 %s 149 // 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 %s 150 // 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 %s 151 // 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 %s 152 // 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 %s 153 #ifdef CK3 154 155 // OMP_MAP_TARGET_PARAM = 0x20 | OMP_MAP_TO = 0x1 = 0x21 156 void bar() { 157 __attribute__((aligned(64))) double *ptr; 158 159 #pragma omp target is_device_ptr(ptr) 160 *ptr = 0; 161 } 162 #endif 163 #endif 164 // CK1-64-LABEL: define {{[^@]+}}@_Z3barRPfRPi 165 // 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 8 168 // CK1-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 169 // CK1-64-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 170 // CK1-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 171 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8 172 // CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8 173 // 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 void 175 // 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 8 179 // CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 180 // CK1-64-NEXT: [[L:%.*]] = alloca ptr, align 8 181 // CK1-64-NEXT: [[T:%.*]] = alloca ptr, align 8 182 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 183 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 184 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 185 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 8 186 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 8 187 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 8 188 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 8 189 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 8 190 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 8 191 // CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8 192 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 8 193 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 8 194 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 8 195 // CK1-64-NEXT: [[_TMP19:%.*]] = alloca ptr, align 8 196 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 8 197 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 8 198 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 8 199 // CK1-64-NEXT: [[_TMP26:%.*]] = alloca ptr, align 8 200 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 8 201 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 8 202 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 8 203 // CK1-64-NEXT: [[_TMP33:%.*]] = alloca ptr, align 8 204 // CK1-64-NEXT: [[_TMP34:%.*]] = alloca ptr, align 8 205 // CK1-64-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 8 206 // CK1-64-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 8 207 // CK1-64-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 8 208 // CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 209 // CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 210 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8 211 // CK1-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 212 // CK1-64-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 213 // CK1-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 214 // CK1-64-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 215 // CK1-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 216 // CK1-64-NEXT: store ptr null, ptr [[TMP3]], align 8 217 // CK1-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 218 // CK1-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 219 // CK1-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 220 // CK1-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 221 // CK1-64-NEXT: store i32 2, ptr [[TMP6]], align 4 222 // CK1-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 223 // CK1-64-NEXT: store i32 1, ptr [[TMP7]], align 4 224 // CK1-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 225 // CK1-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 226 // CK1-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 227 // CK1-64-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 228 // CK1-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 229 // CK1-64-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 230 // CK1-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 231 // CK1-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 232 // CK1-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 233 // CK1-64-NEXT: store ptr null, ptr [[TMP12]], align 8 234 // CK1-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 235 // CK1-64-NEXT: store ptr null, ptr [[TMP13]], align 8 236 // CK1-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 237 // CK1-64-NEXT: store i64 0, ptr [[TMP14]], align 8 238 // CK1-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 239 // CK1-64-NEXT: store i64 0, ptr [[TMP15]], align 8 240 // CK1-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 241 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 242 // CK1-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 243 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 244 // CK1-64-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 245 // CK1-64-NEXT: store i32 0, ptr [[TMP18]], align 4 246 // 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]], 0 248 // 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 8 254 // CK1-64-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 255 // CK1-64-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 8 256 // CK1-64-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 257 // CK1-64-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 8 258 // CK1-64-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 0 259 // CK1-64-NEXT: store ptr null, ptr [[TMP24]], align 8 260 // CK1-64-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 261 // CK1-64-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 262 // CK1-64-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 263 // CK1-64-NEXT: [[TMP27:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 264 // CK1-64-NEXT: store i32 2, ptr [[TMP27]], align 4 265 // CK1-64-NEXT: [[TMP28:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 266 // CK1-64-NEXT: store i32 1, ptr [[TMP28]], align 4 267 // CK1-64-NEXT: [[TMP29:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 268 // CK1-64-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 8 269 // CK1-64-NEXT: [[TMP30:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 270 // CK1-64-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 8 271 // CK1-64-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 272 // CK1-64-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 8 273 // CK1-64-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 274 // CK1-64-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 8 275 // CK1-64-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 276 // CK1-64-NEXT: store ptr null, ptr [[TMP33]], align 8 277 // CK1-64-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 278 // CK1-64-NEXT: store ptr null, ptr [[TMP34]], align 8 279 // CK1-64-NEXT: [[TMP35:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 280 // CK1-64-NEXT: store i64 0, ptr [[TMP35]], align 8 281 // CK1-64-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 282 // CK1-64-NEXT: store i64 0, ptr [[TMP36]], align 8 283 // CK1-64-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 284 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 285 // CK1-64-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 286 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 287 // CK1-64-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 288 // CK1-64-NEXT: store i32 0, ptr [[TMP39]], align 4 289 // 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]], 0 291 // 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 8 297 // CK1-64-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 298 // CK1-64-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 8 299 // CK1-64-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 300 // CK1-64-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 8 301 // CK1-64-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 0 302 // CK1-64-NEXT: store ptr null, ptr [[TMP45]], align 8 303 // CK1-64-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 304 // CK1-64-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 305 // CK1-64-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 306 // CK1-64-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 307 // CK1-64-NEXT: store i32 2, ptr [[TMP48]], align 4 308 // CK1-64-NEXT: [[TMP49:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 309 // CK1-64-NEXT: store i32 1, ptr [[TMP49]], align 4 310 // CK1-64-NEXT: [[TMP50:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 311 // CK1-64-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 8 312 // CK1-64-NEXT: [[TMP51:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 313 // CK1-64-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 8 314 // CK1-64-NEXT: [[TMP52:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 315 // CK1-64-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 8 316 // CK1-64-NEXT: [[TMP53:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 317 // CK1-64-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 8 318 // CK1-64-NEXT: [[TMP54:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 319 // CK1-64-NEXT: store ptr null, ptr [[TMP54]], align 8 320 // CK1-64-NEXT: [[TMP55:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 321 // CK1-64-NEXT: store ptr null, ptr [[TMP55]], align 8 322 // CK1-64-NEXT: [[TMP56:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 323 // CK1-64-NEXT: store i64 0, ptr [[TMP56]], align 8 324 // CK1-64-NEXT: [[TMP57:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 325 // CK1-64-NEXT: store i64 0, ptr [[TMP57]], align 8 326 // CK1-64-NEXT: [[TMP58:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 327 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 328 // CK1-64-NEXT: [[TMP59:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 329 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 330 // CK1-64-NEXT: [[TMP60:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 331 // CK1-64-NEXT: store i32 0, ptr [[TMP60]], align 4 332 // 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]], 0 334 // 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 8 340 // CK1-64-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 8 341 // CK1-64-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 8 342 // CK1-64-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 8 343 // CK1-64-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 344 // CK1-64-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 8 345 // CK1-64-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 346 // CK1-64-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 8 347 // CK1-64-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 0 348 // CK1-64-NEXT: store ptr null, ptr [[TMP68]], align 8 349 // CK1-64-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 350 // CK1-64-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 351 // CK1-64-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 352 // CK1-64-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 353 // CK1-64-NEXT: store i32 2, ptr [[TMP71]], align 4 354 // CK1-64-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 355 // CK1-64-NEXT: store i32 1, ptr [[TMP72]], align 4 356 // CK1-64-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 357 // CK1-64-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 8 358 // CK1-64-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 359 // CK1-64-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 8 360 // CK1-64-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 361 // CK1-64-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 8 362 // CK1-64-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 363 // CK1-64-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 8 364 // CK1-64-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 365 // CK1-64-NEXT: store ptr null, ptr [[TMP77]], align 8 366 // CK1-64-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 367 // CK1-64-NEXT: store ptr null, ptr [[TMP78]], align 8 368 // CK1-64-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 369 // CK1-64-NEXT: store i64 0, ptr [[TMP79]], align 8 370 // CK1-64-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 371 // CK1-64-NEXT: store i64 0, ptr [[TMP80]], align 8 372 // CK1-64-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 373 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 374 // CK1-64-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 375 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 376 // CK1-64-NEXT: [[TMP83:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 377 // CK1-64-NEXT: store i32 0, ptr [[TMP83]], align 4 378 // 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]], 0 380 // 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 8 386 // CK1-64-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 8 387 // CK1-64-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 8 388 // CK1-64-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 8 389 // CK1-64-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 390 // CK1-64-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 8 391 // CK1-64-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 392 // CK1-64-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 8 393 // CK1-64-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 0 394 // CK1-64-NEXT: store ptr null, ptr [[TMP91]], align 8 395 // CK1-64-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 396 // CK1-64-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 397 // CK1-64-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 398 // CK1-64-NEXT: [[TMP94:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 399 // CK1-64-NEXT: store i32 2, ptr [[TMP94]], align 4 400 // CK1-64-NEXT: [[TMP95:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 401 // CK1-64-NEXT: store i32 1, ptr [[TMP95]], align 4 402 // CK1-64-NEXT: [[TMP96:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 403 // CK1-64-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 8 404 // CK1-64-NEXT: [[TMP97:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 405 // CK1-64-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 8 406 // CK1-64-NEXT: [[TMP98:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 407 // CK1-64-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 8 408 // CK1-64-NEXT: [[TMP99:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 409 // CK1-64-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 8 410 // CK1-64-NEXT: [[TMP100:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 411 // CK1-64-NEXT: store ptr null, ptr [[TMP100]], align 8 412 // CK1-64-NEXT: [[TMP101:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 413 // CK1-64-NEXT: store ptr null, ptr [[TMP101]], align 8 414 // CK1-64-NEXT: [[TMP102:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 415 // CK1-64-NEXT: store i64 0, ptr [[TMP102]], align 8 416 // CK1-64-NEXT: [[TMP103:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 417 // CK1-64-NEXT: store i64 0, ptr [[TMP103]], align 8 418 // CK1-64-NEXT: [[TMP104:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 419 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 420 // CK1-64-NEXT: [[TMP105:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 421 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 422 // CK1-64-NEXT: [[TMP106:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 423 // CK1-64-NEXT: store i32 0, ptr [[TMP106]], align 4 424 // 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]], 0 426 // 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 8 432 // CK1-64-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 8 433 // CK1-64-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 8 434 // CK1-64-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 8 435 // CK1-64-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 436 // CK1-64-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 8 437 // CK1-64-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 438 // CK1-64-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 8 439 // CK1-64-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 0 440 // CK1-64-NEXT: store ptr null, ptr [[TMP114]], align 8 441 // CK1-64-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 442 // CK1-64-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 443 // CK1-64-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 444 // CK1-64-NEXT: [[TMP117:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 445 // CK1-64-NEXT: store i32 2, ptr [[TMP117]], align 4 446 // CK1-64-NEXT: [[TMP118:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 447 // CK1-64-NEXT: store i32 1, ptr [[TMP118]], align 4 448 // CK1-64-NEXT: [[TMP119:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 449 // CK1-64-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 8 450 // CK1-64-NEXT: [[TMP120:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 451 // CK1-64-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 8 452 // CK1-64-NEXT: [[TMP121:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 453 // CK1-64-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 8 454 // CK1-64-NEXT: [[TMP122:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 455 // CK1-64-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 8 456 // CK1-64-NEXT: [[TMP123:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 457 // CK1-64-NEXT: store ptr null, ptr [[TMP123]], align 8 458 // CK1-64-NEXT: [[TMP124:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 459 // CK1-64-NEXT: store ptr null, ptr [[TMP124]], align 8 460 // CK1-64-NEXT: [[TMP125:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 461 // CK1-64-NEXT: store i64 0, ptr [[TMP125]], align 8 462 // CK1-64-NEXT: [[TMP126:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 463 // CK1-64-NEXT: store i64 0, ptr [[TMP126]], align 8 464 // CK1-64-NEXT: [[TMP127:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 465 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 466 // CK1-64-NEXT: [[TMP128:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 467 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 468 // CK1-64-NEXT: [[TMP129:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 469 // CK1-64-NEXT: store i32 0, ptr [[TMP129]], align 4 470 // 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]], 0 472 // 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 8 478 // CK1-64-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 8 479 // CK1-64-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 480 // CK1-64-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 8 481 // CK1-64-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 8 482 // CK1-64-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 8 483 // CK1-64-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 8 484 // CK1-64-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 8 485 // CK1-64-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 486 // CK1-64-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 8 487 // CK1-64-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 488 // CK1-64-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 8 489 // CK1-64-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 0 490 // CK1-64-NEXT: store ptr null, ptr [[TMP140]], align 8 491 // CK1-64-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 492 // CK1-64-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 8 493 // CK1-64-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 494 // CK1-64-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 8 495 // CK1-64-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 1 496 // CK1-64-NEXT: store ptr null, ptr [[TMP143]], align 8 497 // CK1-64-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 498 // CK1-64-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 499 // CK1-64-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 500 // CK1-64-NEXT: [[TMP146:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 501 // CK1-64-NEXT: store i32 2, ptr [[TMP146]], align 4 502 // CK1-64-NEXT: [[TMP147:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 503 // CK1-64-NEXT: store i32 2, ptr [[TMP147]], align 4 504 // CK1-64-NEXT: [[TMP148:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 505 // CK1-64-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 8 506 // CK1-64-NEXT: [[TMP149:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 507 // CK1-64-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 8 508 // CK1-64-NEXT: [[TMP150:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 509 // CK1-64-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 8 510 // CK1-64-NEXT: [[TMP151:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 511 // CK1-64-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 8 512 // CK1-64-NEXT: [[TMP152:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 513 // CK1-64-NEXT: store ptr null, ptr [[TMP152]], align 8 514 // CK1-64-NEXT: [[TMP153:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 515 // CK1-64-NEXT: store ptr null, ptr [[TMP153]], align 8 516 // CK1-64-NEXT: [[TMP154:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 517 // CK1-64-NEXT: store i64 0, ptr [[TMP154]], align 8 518 // CK1-64-NEXT: [[TMP155:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 519 // CK1-64-NEXT: store i64 0, ptr [[TMP155]], align 8 520 // CK1-64-NEXT: [[TMP156:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 521 // CK1-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 522 // CK1-64-NEXT: [[TMP157:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 523 // CK1-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 524 // CK1-64-NEXT: [[TMP158:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 525 // CK1-64-NEXT: store i32 0, ptr [[TMP158]], align 4 526 // 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]], 0 528 // 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 void 534 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 535 // CK1-64-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 536 // CK1-64-NEXT: entry: 537 // CK1-64-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 8 538 // CK1-64-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 8 539 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 8 540 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1 541 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 8 542 // CK1-64-NEXT: ret void 543 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 544 // CK1-64-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 545 // CK1-64-NEXT: entry: 546 // CK1-64-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 8 547 // CK1-64-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 8 548 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 8 549 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP0]], i32 1 550 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 8 551 // CK1-64-NEXT: ret void 552 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 553 // CK1-64-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 554 // CK1-64-NEXT: entry: 555 // CK1-64-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 8 556 // CK1-64-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 8 557 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 8 558 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP0]], i32 1 559 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 8 560 // CK1-64-NEXT: ret void 561 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 562 // CK1-64-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 563 // CK1-64-NEXT: entry: 564 // CK1-64-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 565 // CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8 566 // CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 567 // CK1-64-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 8 568 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 569 // CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 570 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 1 571 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 572 // CK1-64-NEXT: ret void 573 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 574 // CK1-64-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 575 // CK1-64-NEXT: entry: 576 // CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 577 // CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8 578 // CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 579 // CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 580 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 581 // CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 582 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 583 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 584 // CK1-64-NEXT: ret void 585 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 586 // CK1-64-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 587 // CK1-64-NEXT: entry: 588 // CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 589 // CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8 590 // CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 591 // CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 592 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 593 // CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 594 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 595 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 596 // CK1-64-NEXT: ret void 597 // CK1-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 598 // CK1-64-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 599 // CK1-64-NEXT: entry: 600 // CK1-64-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 601 // CK1-64-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 602 // CK1-64-NEXT: [[TMP:%.*]] = alloca ptr, align 8 603 // CK1-64-NEXT: [[_TMP1:%.*]] = alloca ptr, align 8 604 // CK1-64-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 605 // CK1-64-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 606 // CK1-64-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 607 // CK1-64-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 8 608 // CK1-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 609 // CK1-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 610 // CK1-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 611 // CK1-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 612 // CK1-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 8 613 // CK1-64-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 614 // CK1-64-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 1 615 // CK1-64-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 8 616 // CK1-64-NEXT: ret void 617 // CK1-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 618 // 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 void 622 // CK2-64-LABEL: define {{[^@]+}}@_Z3barPd 623 // CK2-64-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 624 // CK2-64-NEXT: entry: 625 // CK2-64-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 626 // CK2-64-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8 627 // CK2-64-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 628 // 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 8 631 // CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1 632 // CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8 633 // CK2-64-NEXT: ret void 634 // CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 635 // 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 8 638 // CK2-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 639 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 640 // CK2-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 641 // CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 642 // CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 643 // 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 void 645 // CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 646 // 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 8 649 // CK2-64-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 650 // CK2-64-NEXT: [[LA:%.*]] = alloca ptr, align 8 651 // CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 652 // CK2-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 653 // CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 654 // CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 8 655 // CK2-64-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 8 656 // CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 8 657 // CK2-64-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 8 658 // CK2-64-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 8 659 // CK2-64-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 8 660 // CK2-64-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 8 661 // CK2-64-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 8 662 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 663 // CK2-64-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 664 // CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 665 // CK2-64-NEXT: store ptr null, ptr [[LA]], align 8 666 // CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 667 // CK2-64-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 668 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 8 669 // CK2-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 670 // CK2-64-NEXT: store ptr [[A]], ptr [[TMP1]], align 8 671 // CK2-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 672 // CK2-64-NEXT: store ptr null, ptr [[TMP2]], align 8 673 // CK2-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 674 // CK2-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 675 // CK2-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 676 // CK2-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 677 // CK2-64-NEXT: store i32 2, ptr [[TMP5]], align 4 678 // CK2-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 679 // CK2-64-NEXT: store i32 1, ptr [[TMP6]], align 4 680 // CK2-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 681 // CK2-64-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 8 682 // CK2-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 683 // CK2-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 684 // CK2-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 685 // CK2-64-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 8 686 // CK2-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 687 // CK2-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 8 688 // CK2-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 689 // CK2-64-NEXT: store ptr null, ptr [[TMP11]], align 8 690 // CK2-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 691 // CK2-64-NEXT: store ptr null, ptr [[TMP12]], align 8 692 // CK2-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 693 // CK2-64-NEXT: store i64 0, ptr [[TMP13]], align 8 694 // CK2-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 695 // CK2-64-NEXT: store i64 0, ptr [[TMP14]], align 8 696 // CK2-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 697 // CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 698 // CK2-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 699 // CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 700 // CK2-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 701 // CK2-64-NEXT: store i32 0, ptr [[TMP17]], align 4 702 // 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]], 0 704 // 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 1 710 // CK2-64-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 8 711 // CK2-64-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 712 // CK2-64-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 713 // CK2-64-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 714 // 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 0 718 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 8 719 // CK2-64-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 720 // CK2-64-NEXT: store ptr [[B]], ptr [[TMP27]], align 8 721 // CK2-64-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 722 // CK2-64-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 8 723 // CK2-64-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 0 724 // CK2-64-NEXT: store ptr null, ptr [[TMP29]], align 8 725 // CK2-64-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 726 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 8 727 // CK2-64-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 728 // CK2-64-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 8 729 // CK2-64-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 1 730 // CK2-64-NEXT: store ptr null, ptr [[TMP32]], align 8 731 // CK2-64-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 732 // CK2-64-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 733 // CK2-64-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 734 // CK2-64-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 735 // CK2-64-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 736 // CK2-64-NEXT: store i32 2, ptr [[TMP36]], align 4 737 // CK2-64-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 738 // CK2-64-NEXT: store i32 2, ptr [[TMP37]], align 4 739 // CK2-64-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 740 // CK2-64-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 8 741 // CK2-64-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 742 // CK2-64-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 8 743 // CK2-64-NEXT: [[TMP40:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 744 // CK2-64-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 8 745 // CK2-64-NEXT: [[TMP41:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 746 // CK2-64-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 8 747 // CK2-64-NEXT: [[TMP42:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 748 // CK2-64-NEXT: store ptr null, ptr [[TMP42]], align 8 749 // CK2-64-NEXT: [[TMP43:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 750 // CK2-64-NEXT: store ptr null, ptr [[TMP43]], align 8 751 // CK2-64-NEXT: [[TMP44:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 752 // CK2-64-NEXT: store i64 0, ptr [[TMP44]], align 8 753 // CK2-64-NEXT: [[TMP45:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 754 // CK2-64-NEXT: store i64 0, ptr [[TMP45]], align 8 755 // CK2-64-NEXT: [[TMP46:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 756 // CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 757 // CK2-64-NEXT: [[TMP47:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 758 // CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 759 // CK2-64-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 760 // CK2-64-NEXT: store i32 0, ptr [[TMP48]], align 4 761 // 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]], 0 763 // 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 0 769 // CK2-64-NEXT: [[B9:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 770 // CK2-64-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 8 771 // CK2-64-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 772 // CK2-64-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 773 // CK2-64-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 774 // 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 0 778 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 8 779 // CK2-64-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 780 // CK2-64-NEXT: store ptr [[A8]], ptr [[TMP58]], align 8 781 // CK2-64-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 782 // CK2-64-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 8 783 // CK2-64-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 0 784 // CK2-64-NEXT: store ptr null, ptr [[TMP60]], align 8 785 // CK2-64-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 786 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 8 787 // CK2-64-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 788 // CK2-64-NEXT: store ptr [[A8]], ptr [[TMP62]], align 8 789 // CK2-64-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 1 790 // CK2-64-NEXT: store ptr null, ptr [[TMP63]], align 8 791 // CK2-64-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 792 // CK2-64-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 8 793 // CK2-64-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 794 // CK2-64-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 8 795 // CK2-64-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 2 796 // CK2-64-NEXT: store ptr null, ptr [[TMP66]], align 8 797 // CK2-64-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 798 // CK2-64-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 799 // CK2-64-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 800 // CK2-64-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 801 // CK2-64-NEXT: [[TMP70:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 802 // CK2-64-NEXT: store i32 2, ptr [[TMP70]], align 4 803 // CK2-64-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 804 // CK2-64-NEXT: store i32 3, ptr [[TMP71]], align 4 805 // CK2-64-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 806 // CK2-64-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 8 807 // CK2-64-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 808 // CK2-64-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 8 809 // CK2-64-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 810 // CK2-64-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 8 811 // CK2-64-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 812 // CK2-64-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 8 813 // CK2-64-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 814 // CK2-64-NEXT: store ptr null, ptr [[TMP76]], align 8 815 // CK2-64-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 816 // CK2-64-NEXT: store ptr null, ptr [[TMP77]], align 8 817 // CK2-64-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 818 // CK2-64-NEXT: store i64 0, ptr [[TMP78]], align 8 819 // CK2-64-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 820 // CK2-64-NEXT: store i64 0, ptr [[TMP79]], align 8 821 // CK2-64-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 822 // CK2-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 823 // CK2-64-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 824 // CK2-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 825 // CK2-64-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 826 // CK2-64-NEXT: store i32 0, ptr [[TMP82]], align 4 827 // 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]], 0 829 // 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 void 835 // CK2-64-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 836 // 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 8 839 // CK2-64-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 840 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 841 // CK2-64-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 842 // CK2-64-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 843 // CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 844 // CK2-64-NEXT: store ptr null, ptr [[A]], align 8 845 // CK2-64-NEXT: [[B2:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 846 // CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 847 // CK2-64-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8 848 // CK2-64-NEXT: ret void 849 // CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 850 // CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { 851 // CK2-64-NEXT: entry: 852 // CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 853 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 854 // CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 855 // CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 856 // CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 857 // CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1 858 // CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 859 // CK2-64-NEXT: ret void 860 // CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 861 // CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] { 862 // CK2-64-NEXT: entry: 863 // CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 864 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 865 // CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 866 // CK2-64-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 867 // CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8 868 // CK2-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8 869 // CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 1 870 // CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 8 871 // CK2-64-NEXT: ret void 872 // CK2-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 873 // CK2-64-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] { 874 // CK2-64-NEXT: entry: 875 // CK2-64-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 876 // CK2-64-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 877 // CK2-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 878 // CK2-64-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 879 // CK2-64-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 880 // CK2-64-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1 881 // CK2-64-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 882 // CK2-64-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 883 // CK2-64-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 8 884 // CK2-64-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 885 // CK2-64-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds double, ptr [[TMP3]], i32 1 886 // CK2-64-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 8 887 // CK2-64-NEXT: ret void 888 // CK2-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 889 // 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 void 893 // CK2-32-LABEL: define {{[^@]+}}@_Z3barPd 894 // CK2-32-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 895 // CK2-32-NEXT: entry: 896 // CK2-32-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 897 // CK2-32-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4 898 // CK2-32-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 899 // 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 4 902 // CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1 903 // CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4 904 // CK2-32-NEXT: ret void 905 // CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 906 // 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 4 909 // CK2-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 910 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 911 // CK2-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 912 // CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 913 // CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 914 // 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 void 916 // CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 917 // 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 4 920 // CK2-32-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 921 // CK2-32-NEXT: [[LA:%.*]] = alloca ptr, align 4 922 // CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 923 // CK2-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 924 // CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 925 // CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 4 926 // CK2-32-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 4 927 // CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 4 928 // CK2-32-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 4 929 // CK2-32-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 4 930 // CK2-32-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 4 931 // CK2-32-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 4 932 // CK2-32-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 4 933 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 934 // CK2-32-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 935 // CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 936 // CK2-32-NEXT: store ptr null, ptr [[LA]], align 4 937 // CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 938 // CK2-32-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 939 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 4 940 // CK2-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 941 // CK2-32-NEXT: store ptr [[A]], ptr [[TMP1]], align 4 942 // CK2-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 943 // CK2-32-NEXT: store ptr null, ptr [[TMP2]], align 4 944 // CK2-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 945 // CK2-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 946 // CK2-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 947 // CK2-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 948 // CK2-32-NEXT: store i32 2, ptr [[TMP5]], align 4 949 // CK2-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 950 // CK2-32-NEXT: store i32 1, ptr [[TMP6]], align 4 951 // CK2-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 952 // CK2-32-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 4 953 // CK2-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 954 // CK2-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 955 // CK2-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 956 // CK2-32-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 4 957 // CK2-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 958 // CK2-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 4 959 // CK2-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 960 // CK2-32-NEXT: store ptr null, ptr [[TMP11]], align 4 961 // CK2-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 962 // CK2-32-NEXT: store ptr null, ptr [[TMP12]], align 4 963 // CK2-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 964 // CK2-32-NEXT: store i64 0, ptr [[TMP13]], align 8 965 // CK2-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 966 // CK2-32-NEXT: store i64 0, ptr [[TMP14]], align 8 967 // CK2-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 968 // CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 969 // CK2-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 970 // CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 971 // CK2-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 972 // CK2-32-NEXT: store i32 0, ptr [[TMP17]], align 4 973 // 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]], 0 975 // 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 1 981 // CK2-32-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 4 982 // CK2-32-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 983 // CK2-32-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 984 // CK2-32-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 985 // 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 0 989 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 4 990 // CK2-32-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 991 // CK2-32-NEXT: store ptr [[B]], ptr [[TMP27]], align 4 992 // CK2-32-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 993 // CK2-32-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 4 994 // CK2-32-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 0 995 // CK2-32-NEXT: store ptr null, ptr [[TMP29]], align 4 996 // CK2-32-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 997 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 4 998 // CK2-32-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 999 // CK2-32-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 4 1000 // CK2-32-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 1 1001 // CK2-32-NEXT: store ptr null, ptr [[TMP32]], align 4 1002 // CK2-32-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 1003 // CK2-32-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 1004 // CK2-32-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 1005 // CK2-32-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1006 // CK2-32-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 1007 // CK2-32-NEXT: store i32 2, ptr [[TMP36]], align 4 1008 // CK2-32-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 1009 // CK2-32-NEXT: store i32 2, ptr [[TMP37]], align 4 1010 // CK2-32-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 1011 // CK2-32-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 4 1012 // CK2-32-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 1013 // CK2-32-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 4 1014 // CK2-32-NEXT: [[TMP40:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 1015 // CK2-32-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 4 1016 // CK2-32-NEXT: [[TMP41:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 1017 // CK2-32-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 4 1018 // CK2-32-NEXT: [[TMP42:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 1019 // CK2-32-NEXT: store ptr null, ptr [[TMP42]], align 4 1020 // CK2-32-NEXT: [[TMP43:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 1021 // CK2-32-NEXT: store ptr null, ptr [[TMP43]], align 4 1022 // CK2-32-NEXT: [[TMP44:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 1023 // CK2-32-NEXT: store i64 0, ptr [[TMP44]], align 8 1024 // CK2-32-NEXT: [[TMP45:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 1025 // CK2-32-NEXT: store i64 0, ptr [[TMP45]], align 8 1026 // CK2-32-NEXT: [[TMP46:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 1027 // CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 1028 // CK2-32-NEXT: [[TMP47:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 1029 // CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 1030 // CK2-32-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 1031 // CK2-32-NEXT: store i32 0, ptr [[TMP48]], align 4 1032 // 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]], 0 1034 // 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 0 1040 // CK2-32-NEXT: [[B9:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 1041 // CK2-32-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 4 1042 // CK2-32-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 1043 // CK2-32-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 1044 // CK2-32-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 1045 // 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 0 1049 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 4 1050 // CK2-32-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 1051 // CK2-32-NEXT: store ptr [[A8]], ptr [[TMP58]], align 4 1052 // CK2-32-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 1053 // CK2-32-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 4 1054 // CK2-32-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 0 1055 // CK2-32-NEXT: store ptr null, ptr [[TMP60]], align 4 1056 // CK2-32-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 1057 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 4 1058 // CK2-32-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 1059 // CK2-32-NEXT: store ptr [[A8]], ptr [[TMP62]], align 4 1060 // CK2-32-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 1 1061 // CK2-32-NEXT: store ptr null, ptr [[TMP63]], align 4 1062 // CK2-32-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 1063 // CK2-32-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 4 1064 // CK2-32-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 1065 // CK2-32-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 4 1066 // CK2-32-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 2 1067 // CK2-32-NEXT: store ptr null, ptr [[TMP66]], align 4 1068 // CK2-32-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 1069 // CK2-32-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 1070 // CK2-32-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 1071 // CK2-32-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1072 // CK2-32-NEXT: [[TMP70:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 1073 // CK2-32-NEXT: store i32 2, ptr [[TMP70]], align 4 1074 // CK2-32-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 1075 // CK2-32-NEXT: store i32 3, ptr [[TMP71]], align 4 1076 // CK2-32-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 1077 // CK2-32-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 4 1078 // CK2-32-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 1079 // CK2-32-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 4 1080 // CK2-32-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 1081 // CK2-32-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 4 1082 // CK2-32-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 1083 // CK2-32-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 4 1084 // CK2-32-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 1085 // CK2-32-NEXT: store ptr null, ptr [[TMP76]], align 4 1086 // CK2-32-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 1087 // CK2-32-NEXT: store ptr null, ptr [[TMP77]], align 4 1088 // CK2-32-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 1089 // CK2-32-NEXT: store i64 0, ptr [[TMP78]], align 8 1090 // CK2-32-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 1091 // CK2-32-NEXT: store i64 0, ptr [[TMP79]], align 8 1092 // CK2-32-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 1093 // CK2-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 1094 // CK2-32-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 1095 // CK2-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 1096 // CK2-32-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 1097 // CK2-32-NEXT: store i32 0, ptr [[TMP82]], align 4 1098 // 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]], 0 1100 // 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 void 1106 // CK2-32-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 1107 // 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 4 1110 // CK2-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 1111 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 1112 // CK2-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 1113 // CK2-32-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 1114 // CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 1115 // CK2-32-NEXT: store ptr null, ptr [[A]], align 4 1116 // CK2-32-NEXT: [[B2:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 1117 // CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 1118 // CK2-32-NEXT: store ptr [[TMP0]], ptr [[B2]], align 4 1119 // CK2-32-NEXT: ret void 1120 // CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 1121 // CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { 1122 // CK2-32-NEXT: entry: 1123 // CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 1124 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 1125 // CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 1126 // CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 1127 // CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 1128 // CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1 1129 // CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 1130 // CK2-32-NEXT: ret void 1131 // CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 1132 // CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] { 1133 // CK2-32-NEXT: entry: 1134 // CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 1135 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 1136 // CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 1137 // CK2-32-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 1138 // CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 4 1139 // CK2-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 4 1140 // CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP2]], i32 1 1141 // CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 4 1142 // CK2-32-NEXT: ret void 1143 // CK2-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 1144 // CK2-32-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR2]] { 1145 // CK2-32-NEXT: entry: 1146 // CK2-32-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 1147 // CK2-32-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 1148 // CK2-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 1149 // CK2-32-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 1150 // CK2-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 1151 // CK2-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP1]], i32 1 1152 // CK2-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 1153 // CK2-32-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 1154 // CK2-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 4 1155 // CK2-32-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 1156 // CK2-32-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds double, ptr [[TMP3]], i32 1 1157 // CK2-32-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 4 1158 // CK2-32-NEXT: ret void 1159 // CK2-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1160 // 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 void 1164 // CK3-64-LABEL: define {{[^@]+}}@_Z3barv 1165 // CK3-64-SAME: () #[[ATTR0:[0-9]+]] { 1166 // CK3-64-NEXT: entry: 1167 // CK3-64-NEXT: [[PTR:%.*]] = alloca ptr, align 64 1168 // CK3-64-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 1169 // CK3-64-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 1170 // CK3-64-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 1171 // CK3-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 1172 // CK3-64-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1173 // CK3-64-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 1174 // CK3-64-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1175 // CK3-64-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 1176 // CK3-64-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 1177 // CK3-64-NEXT: store ptr null, ptr [[TMP3]], align 8 1178 // CK3-64-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1179 // CK3-64-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1180 // CK3-64-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 1181 // CK3-64-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 1182 // CK3-64-NEXT: store i32 2, ptr [[TMP6]], align 4 1183 // CK3-64-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 1184 // CK3-64-NEXT: store i32 1, ptr [[TMP7]], align 4 1185 // CK3-64-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 1186 // CK3-64-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 1187 // CK3-64-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 1188 // CK3-64-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 1189 // CK3-64-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 1190 // CK3-64-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 1191 // CK3-64-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 1192 // CK3-64-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 1193 // CK3-64-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 1194 // CK3-64-NEXT: store ptr null, ptr [[TMP12]], align 8 1195 // CK3-64-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 1196 // CK3-64-NEXT: store ptr null, ptr [[TMP13]], align 8 1197 // CK3-64-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 1198 // CK3-64-NEXT: store i64 0, ptr [[TMP14]], align 8 1199 // CK3-64-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 1200 // CK3-64-NEXT: store i64 0, ptr [[TMP15]], align 8 1201 // CK3-64-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 1202 // CK3-64-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 1203 // CK3-64-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 1204 // CK3-64-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 1205 // CK3-64-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 1206 // CK3-64-NEXT: store i32 0, ptr [[TMP18]], align 4 1207 // 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]], 0 1209 // 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 void 1215 // CK3-64-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 1216 // CK3-64-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 1217 // CK3-64-NEXT: entry: 1218 // CK3-64-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 8 1219 // CK3-64-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 8 1220 // CK3-64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 8 1221 // CK3-64-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 8 1222 // CK3-64-NEXT: ret void 1223 // CK3-64-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1224 // 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 void 1228 // CK3-32-LABEL: define {{[^@]+}}@_Z3barv 1229 // CK3-32-SAME: () #[[ATTR0:[0-9]+]] { 1230 // CK3-32-NEXT: entry: 1231 // CK3-32-NEXT: [[PTR:%.*]] = alloca ptr, align 64 1232 // CK3-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 1233 // CK3-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 1234 // CK3-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 1235 // CK3-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 1236 // CK3-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1237 // CK3-32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 1238 // CK3-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1239 // CK3-32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 1240 // CK3-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 1241 // CK3-32-NEXT: store ptr null, ptr [[TMP3]], align 4 1242 // CK3-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1243 // CK3-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1244 // CK3-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 1245 // CK3-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 1246 // CK3-32-NEXT: store i32 2, ptr [[TMP6]], align 4 1247 // CK3-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 1248 // CK3-32-NEXT: store i32 1, ptr [[TMP7]], align 4 1249 // CK3-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 1250 // CK3-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 1251 // CK3-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 1252 // CK3-32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 1253 // CK3-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 1254 // CK3-32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 1255 // CK3-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 1256 // CK3-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 1257 // CK3-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 1258 // CK3-32-NEXT: store ptr null, ptr [[TMP12]], align 4 1259 // CK3-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 1260 // CK3-32-NEXT: store ptr null, ptr [[TMP13]], align 4 1261 // CK3-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 1262 // CK3-32-NEXT: store i64 0, ptr [[TMP14]], align 8 1263 // CK3-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 1264 // CK3-32-NEXT: store i64 0, ptr [[TMP15]], align 8 1265 // CK3-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 1266 // CK3-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 1267 // CK3-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 1268 // CK3-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 1269 // CK3-32-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 1270 // CK3-32-NEXT: store i32 0, ptr [[TMP18]], align 4 1271 // 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]], 0 1273 // 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 void 1279 // CK3-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 1280 // CK3-32-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 1281 // CK3-32-NEXT: entry: 1282 // CK3-32-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 4 1283 // CK3-32-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 4 1284 // CK3-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 4 1285 // CK3-32-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 4 1286 // CK3-32-NEXT: ret void 1287 // CK3-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1288 // 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 void 1292 // CK1-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1293 // CK1-SAME: () #[[ATTR3:[0-9]+]] { 1294 // CK1-NEXT: entry: 1295 // CK1-NEXT: call void @__tgt_register_requires(i64 1) 1296 // CK1-NEXT: ret void 1297 // CK1-32-LABEL: define {{[^@]+}}@_Z3barRPfRPi 1298 // 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 4 1301 // CK1-32-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 1302 // CK1-32-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4 1303 // CK1-32-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 1304 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 4 1305 // CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 4 1306 // 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 void 1308 // 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 4 1312 // CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 1313 // CK1-32-NEXT: [[L:%.*]] = alloca ptr, align 4 1314 // CK1-32-NEXT: [[T:%.*]] = alloca ptr, align 4 1315 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 1316 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 1317 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 1318 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 4 1319 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 4 1320 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 4 1321 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 4 1322 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 4 1323 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 4 1324 // CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 4 1325 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 4 1326 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 4 1327 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 4 1328 // CK1-32-NEXT: [[_TMP19:%.*]] = alloca ptr, align 4 1329 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 4 1330 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 4 1331 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 4 1332 // CK1-32-NEXT: [[_TMP26:%.*]] = alloca ptr, align 4 1333 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 4 1334 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 4 1335 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 4 1336 // CK1-32-NEXT: [[_TMP33:%.*]] = alloca ptr, align 4 1337 // CK1-32-NEXT: [[_TMP34:%.*]] = alloca ptr, align 4 1338 // CK1-32-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 4 1339 // CK1-32-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 4 1340 // CK1-32-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 4 1341 // CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 1342 // CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 1343 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 4 1344 // CK1-32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1345 // CK1-32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 1346 // CK1-32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1347 // CK1-32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 1348 // CK1-32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 1349 // CK1-32-NEXT: store ptr null, ptr [[TMP3]], align 4 1350 // CK1-32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1351 // CK1-32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1352 // CK1-32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 1353 // CK1-32-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 1354 // CK1-32-NEXT: store i32 2, ptr [[TMP6]], align 4 1355 // CK1-32-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 1356 // CK1-32-NEXT: store i32 1, ptr [[TMP7]], align 4 1357 // CK1-32-NEXT: [[TMP8:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 1358 // CK1-32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 1359 // CK1-32-NEXT: [[TMP9:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 1360 // CK1-32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 1361 // CK1-32-NEXT: [[TMP10:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 1362 // CK1-32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 1363 // CK1-32-NEXT: [[TMP11:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 1364 // CK1-32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 1365 // CK1-32-NEXT: [[TMP12:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 1366 // CK1-32-NEXT: store ptr null, ptr [[TMP12]], align 4 1367 // CK1-32-NEXT: [[TMP13:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 1368 // CK1-32-NEXT: store ptr null, ptr [[TMP13]], align 4 1369 // CK1-32-NEXT: [[TMP14:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 1370 // CK1-32-NEXT: store i64 0, ptr [[TMP14]], align 8 1371 // CK1-32-NEXT: [[TMP15:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 1372 // CK1-32-NEXT: store i64 0, ptr [[TMP15]], align 8 1373 // CK1-32-NEXT: [[TMP16:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 1374 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 1375 // CK1-32-NEXT: [[TMP17:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 1376 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 1377 // CK1-32-NEXT: [[TMP18:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 1378 // CK1-32-NEXT: store i32 0, ptr [[TMP18]], align 4 1379 // 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]], 0 1381 // 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 4 1387 // CK1-32-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 1388 // CK1-32-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 4 1389 // CK1-32-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 1390 // CK1-32-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 4 1391 // CK1-32-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 0 1392 // CK1-32-NEXT: store ptr null, ptr [[TMP24]], align 4 1393 // CK1-32-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 1394 // CK1-32-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 1395 // CK1-32-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1396 // CK1-32-NEXT: [[TMP27:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 1397 // CK1-32-NEXT: store i32 2, ptr [[TMP27]], align 4 1398 // CK1-32-NEXT: [[TMP28:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 1399 // CK1-32-NEXT: store i32 1, ptr [[TMP28]], align 4 1400 // CK1-32-NEXT: [[TMP29:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 1401 // CK1-32-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 4 1402 // CK1-32-NEXT: [[TMP30:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 1403 // CK1-32-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 4 1404 // CK1-32-NEXT: [[TMP31:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 1405 // CK1-32-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 4 1406 // CK1-32-NEXT: [[TMP32:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 1407 // CK1-32-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 4 1408 // CK1-32-NEXT: [[TMP33:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 1409 // CK1-32-NEXT: store ptr null, ptr [[TMP33]], align 4 1410 // CK1-32-NEXT: [[TMP34:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 1411 // CK1-32-NEXT: store ptr null, ptr [[TMP34]], align 4 1412 // CK1-32-NEXT: [[TMP35:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 1413 // CK1-32-NEXT: store i64 0, ptr [[TMP35]], align 8 1414 // CK1-32-NEXT: [[TMP36:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 1415 // CK1-32-NEXT: store i64 0, ptr [[TMP36]], align 8 1416 // CK1-32-NEXT: [[TMP37:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 1417 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 1418 // CK1-32-NEXT: [[TMP38:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 1419 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 1420 // CK1-32-NEXT: [[TMP39:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 1421 // CK1-32-NEXT: store i32 0, ptr [[TMP39]], align 4 1422 // 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]], 0 1424 // 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 4 1430 // CK1-32-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 1431 // CK1-32-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 4 1432 // CK1-32-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 1433 // CK1-32-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 4 1434 // CK1-32-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 0 1435 // CK1-32-NEXT: store ptr null, ptr [[TMP45]], align 4 1436 // CK1-32-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 1437 // CK1-32-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 1438 // CK1-32-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1439 // CK1-32-NEXT: [[TMP48:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 1440 // CK1-32-NEXT: store i32 2, ptr [[TMP48]], align 4 1441 // CK1-32-NEXT: [[TMP49:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 1442 // CK1-32-NEXT: store i32 1, ptr [[TMP49]], align 4 1443 // CK1-32-NEXT: [[TMP50:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 1444 // CK1-32-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 4 1445 // CK1-32-NEXT: [[TMP51:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 1446 // CK1-32-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 4 1447 // CK1-32-NEXT: [[TMP52:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 1448 // CK1-32-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 4 1449 // CK1-32-NEXT: [[TMP53:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 1450 // CK1-32-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 4 1451 // CK1-32-NEXT: [[TMP54:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 1452 // CK1-32-NEXT: store ptr null, ptr [[TMP54]], align 4 1453 // CK1-32-NEXT: [[TMP55:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 1454 // CK1-32-NEXT: store ptr null, ptr [[TMP55]], align 4 1455 // CK1-32-NEXT: [[TMP56:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 1456 // CK1-32-NEXT: store i64 0, ptr [[TMP56]], align 8 1457 // CK1-32-NEXT: [[TMP57:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 1458 // CK1-32-NEXT: store i64 0, ptr [[TMP57]], align 8 1459 // CK1-32-NEXT: [[TMP58:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 1460 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 1461 // CK1-32-NEXT: [[TMP59:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 1462 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 1463 // CK1-32-NEXT: [[TMP60:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 1464 // CK1-32-NEXT: store i32 0, ptr [[TMP60]], align 4 1465 // 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]], 0 1467 // 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 4 1473 // CK1-32-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 4 1474 // CK1-32-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 4 1475 // CK1-32-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 4 1476 // CK1-32-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 1477 // CK1-32-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 4 1478 // CK1-32-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 1479 // CK1-32-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 4 1480 // CK1-32-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 0 1481 // CK1-32-NEXT: store ptr null, ptr [[TMP68]], align 4 1482 // CK1-32-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 1483 // CK1-32-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 1484 // CK1-32-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1485 // CK1-32-NEXT: [[TMP71:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 1486 // CK1-32-NEXT: store i32 2, ptr [[TMP71]], align 4 1487 // CK1-32-NEXT: [[TMP72:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 1488 // CK1-32-NEXT: store i32 1, ptr [[TMP72]], align 4 1489 // CK1-32-NEXT: [[TMP73:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 1490 // CK1-32-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 4 1491 // CK1-32-NEXT: [[TMP74:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 1492 // CK1-32-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 4 1493 // CK1-32-NEXT: [[TMP75:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 1494 // CK1-32-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 4 1495 // CK1-32-NEXT: [[TMP76:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 1496 // CK1-32-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 4 1497 // CK1-32-NEXT: [[TMP77:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 1498 // CK1-32-NEXT: store ptr null, ptr [[TMP77]], align 4 1499 // CK1-32-NEXT: [[TMP78:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 1500 // CK1-32-NEXT: store ptr null, ptr [[TMP78]], align 4 1501 // CK1-32-NEXT: [[TMP79:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 1502 // CK1-32-NEXT: store i64 0, ptr [[TMP79]], align 8 1503 // CK1-32-NEXT: [[TMP80:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 1504 // CK1-32-NEXT: store i64 0, ptr [[TMP80]], align 8 1505 // CK1-32-NEXT: [[TMP81:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 1506 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 1507 // CK1-32-NEXT: [[TMP82:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 1508 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 1509 // CK1-32-NEXT: [[TMP83:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 1510 // CK1-32-NEXT: store i32 0, ptr [[TMP83]], align 4 1511 // 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]], 0 1513 // 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 4 1519 // CK1-32-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 4 1520 // CK1-32-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 4 1521 // CK1-32-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 4 1522 // CK1-32-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 1523 // CK1-32-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 4 1524 // CK1-32-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 1525 // CK1-32-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 4 1526 // CK1-32-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 0 1527 // CK1-32-NEXT: store ptr null, ptr [[TMP91]], align 4 1528 // CK1-32-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 1529 // CK1-32-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 1530 // CK1-32-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1531 // CK1-32-NEXT: [[TMP94:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 1532 // CK1-32-NEXT: store i32 2, ptr [[TMP94]], align 4 1533 // CK1-32-NEXT: [[TMP95:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 1534 // CK1-32-NEXT: store i32 1, ptr [[TMP95]], align 4 1535 // CK1-32-NEXT: [[TMP96:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 1536 // CK1-32-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 4 1537 // CK1-32-NEXT: [[TMP97:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 1538 // CK1-32-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 4 1539 // CK1-32-NEXT: [[TMP98:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 1540 // CK1-32-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 4 1541 // CK1-32-NEXT: [[TMP99:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 1542 // CK1-32-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 4 1543 // CK1-32-NEXT: [[TMP100:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 1544 // CK1-32-NEXT: store ptr null, ptr [[TMP100]], align 4 1545 // CK1-32-NEXT: [[TMP101:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 1546 // CK1-32-NEXT: store ptr null, ptr [[TMP101]], align 4 1547 // CK1-32-NEXT: [[TMP102:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 1548 // CK1-32-NEXT: store i64 0, ptr [[TMP102]], align 8 1549 // CK1-32-NEXT: [[TMP103:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 1550 // CK1-32-NEXT: store i64 0, ptr [[TMP103]], align 8 1551 // CK1-32-NEXT: [[TMP104:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 1552 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 1553 // CK1-32-NEXT: [[TMP105:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 1554 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 1555 // CK1-32-NEXT: [[TMP106:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 1556 // CK1-32-NEXT: store i32 0, ptr [[TMP106]], align 4 1557 // 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]], 0 1559 // 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 4 1565 // CK1-32-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 4 1566 // CK1-32-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 4 1567 // CK1-32-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 4 1568 // CK1-32-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 1569 // CK1-32-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 4 1570 // CK1-32-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 1571 // CK1-32-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 4 1572 // CK1-32-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 0 1573 // CK1-32-NEXT: store ptr null, ptr [[TMP114]], align 4 1574 // CK1-32-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 1575 // CK1-32-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 1576 // CK1-32-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1577 // CK1-32-NEXT: [[TMP117:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 1578 // CK1-32-NEXT: store i32 2, ptr [[TMP117]], align 4 1579 // CK1-32-NEXT: [[TMP118:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 1580 // CK1-32-NEXT: store i32 1, ptr [[TMP118]], align 4 1581 // CK1-32-NEXT: [[TMP119:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 1582 // CK1-32-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 4 1583 // CK1-32-NEXT: [[TMP120:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 1584 // CK1-32-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 4 1585 // CK1-32-NEXT: [[TMP121:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 1586 // CK1-32-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 4 1587 // CK1-32-NEXT: [[TMP122:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 1588 // CK1-32-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 4 1589 // CK1-32-NEXT: [[TMP123:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 1590 // CK1-32-NEXT: store ptr null, ptr [[TMP123]], align 4 1591 // CK1-32-NEXT: [[TMP124:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 1592 // CK1-32-NEXT: store ptr null, ptr [[TMP124]], align 4 1593 // CK1-32-NEXT: [[TMP125:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 1594 // CK1-32-NEXT: store i64 0, ptr [[TMP125]], align 8 1595 // CK1-32-NEXT: [[TMP126:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 1596 // CK1-32-NEXT: store i64 0, ptr [[TMP126]], align 8 1597 // CK1-32-NEXT: [[TMP127:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 1598 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 1599 // CK1-32-NEXT: [[TMP128:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 1600 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 1601 // CK1-32-NEXT: [[TMP129:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 1602 // CK1-32-NEXT: store i32 0, ptr [[TMP129]], align 4 1603 // 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]], 0 1605 // 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 4 1611 // CK1-32-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 4 1612 // CK1-32-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 1613 // CK1-32-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 4 1614 // CK1-32-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 4 1615 // CK1-32-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 4 1616 // CK1-32-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 4 1617 // CK1-32-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 4 1618 // CK1-32-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 1619 // CK1-32-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 4 1620 // CK1-32-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 1621 // CK1-32-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 4 1622 // CK1-32-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 0 1623 // CK1-32-NEXT: store ptr null, ptr [[TMP140]], align 4 1624 // CK1-32-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 1625 // CK1-32-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 4 1626 // CK1-32-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 1627 // CK1-32-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 4 1628 // CK1-32-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 1 1629 // CK1-32-NEXT: store ptr null, ptr [[TMP143]], align 4 1630 // CK1-32-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 1631 // CK1-32-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 1632 // CK1-32-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1633 // CK1-32-NEXT: [[TMP146:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 1634 // CK1-32-NEXT: store i32 2, ptr [[TMP146]], align 4 1635 // CK1-32-NEXT: [[TMP147:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 1636 // CK1-32-NEXT: store i32 2, ptr [[TMP147]], align 4 1637 // CK1-32-NEXT: [[TMP148:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 1638 // CK1-32-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 4 1639 // CK1-32-NEXT: [[TMP149:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 1640 // CK1-32-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 4 1641 // CK1-32-NEXT: [[TMP150:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 1642 // CK1-32-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 4 1643 // CK1-32-NEXT: [[TMP151:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 1644 // CK1-32-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 4 1645 // CK1-32-NEXT: [[TMP152:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 1646 // CK1-32-NEXT: store ptr null, ptr [[TMP152]], align 4 1647 // CK1-32-NEXT: [[TMP153:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 1648 // CK1-32-NEXT: store ptr null, ptr [[TMP153]], align 4 1649 // CK1-32-NEXT: [[TMP154:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 1650 // CK1-32-NEXT: store i64 0, ptr [[TMP154]], align 8 1651 // CK1-32-NEXT: [[TMP155:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 1652 // CK1-32-NEXT: store i64 0, ptr [[TMP155]], align 8 1653 // CK1-32-NEXT: [[TMP156:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 1654 // CK1-32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 1655 // CK1-32-NEXT: [[TMP157:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 1656 // CK1-32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 1657 // CK1-32-NEXT: [[TMP158:%.*]] = getelementptr inbounds [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 1658 // CK1-32-NEXT: store i32 0, ptr [[TMP158]], align 4 1659 // 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]], 0 1661 // 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 void 1667 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 1668 // CK1-32-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 1669 // CK1-32-NEXT: entry: 1670 // CK1-32-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 4 1671 // CK1-32-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 4 1672 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 4 1673 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds double, ptr [[TMP0]], i32 1 1674 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 4 1675 // CK1-32-NEXT: ret void 1676 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 1677 // CK1-32-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 1678 // CK1-32-NEXT: entry: 1679 // CK1-32-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 4 1680 // CK1-32-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 4 1681 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 4 1682 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP0]], i32 1 1683 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 4 1684 // CK1-32-NEXT: ret void 1685 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 1686 // CK1-32-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 1687 // CK1-32-NEXT: entry: 1688 // CK1-32-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 4 1689 // CK1-32-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 4 1690 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 4 1691 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP0]], i32 1 1692 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 4 1693 // CK1-32-NEXT: ret void 1694 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 1695 // CK1-32-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 1696 // CK1-32-NEXT: entry: 1697 // CK1-32-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 1698 // CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 4 1699 // CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 1700 // CK1-32-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 4 1701 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 1702 // CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 1703 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds float, ptr [[TMP1]], i32 1 1704 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 1705 // CK1-32-NEXT: ret void 1706 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 1707 // CK1-32-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 1708 // CK1-32-NEXT: entry: 1709 // CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 1710 // CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 4 1711 // CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 1712 // CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 1713 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 1714 // CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 1715 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 1716 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 1717 // CK1-32-NEXT: ret void 1718 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 1719 // CK1-32-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 1720 // CK1-32-NEXT: entry: 1721 // CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 1722 // CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 4 1723 // CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 1724 // CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 1725 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 1726 // CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 1727 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 1728 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 1729 // CK1-32-NEXT: ret void 1730 // CK1-32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 1731 // CK1-32-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 1732 // CK1-32-NEXT: entry: 1733 // CK1-32-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 1734 // CK1-32-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 1735 // CK1-32-NEXT: [[TMP:%.*]] = alloca ptr, align 4 1736 // CK1-32-NEXT: [[_TMP1:%.*]] = alloca ptr, align 4 1737 // CK1-32-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 1738 // CK1-32-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 1739 // CK1-32-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 1740 // CK1-32-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 4 1741 // CK1-32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 1742 // CK1-32-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 1743 // CK1-32-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i32 1 1744 // CK1-32-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 1745 // CK1-32-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 4 1746 // CK1-32-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 1747 // CK1-32-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 1 1748 // CK1-32-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 4 1749 // CK1-32-NEXT: ret void 1750 // CK1-32-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1751 // 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 void 1755 // CK2-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1756 // CK2-SAME: () #[[ATTR5:[0-9]+]] { 1757 // CK2-NEXT: entry: 1758 // CK2-NEXT: call void @__tgt_register_requires(i64 1) 1759 // CK2-NEXT: ret void 1760 // CK3-LABEL: define {{[^@]+}}@.omp_offloading.requires_reg 1761 // CK3-SAME: () #[[ATTR3:[0-9]+]] { 1762 // CK3-NEXT: entry: 1763 // CK3-NEXT: call void @__tgt_register_requires(i64 1) 1764 // CK3-NEXT: ret void 1765 // CK10-LABEL: define {{[^@]+}}@_Z3barRPfRPi 1766 // 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 8 1769 // CK10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 1770 // CK10-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 1771 // CK10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 1772 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8 1773 // CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8 1774 // 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 void 1776 // 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 8 1782 // CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 1783 // CK10-NEXT: [[L:%.*]] = alloca ptr, align 8 1784 // CK10-NEXT: [[T:%.*]] = alloca ptr, align 8 1785 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 1786 // CK10-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 1787 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 1788 // CK10-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 1789 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 8 1790 // CK10-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 8 1791 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 8 1792 // CK10-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1793 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 8 1794 // CK10-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 8 1795 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 8 1796 // CK10-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1797 // CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 8 1798 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 8 1799 // CK10-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 8 1800 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 8 1801 // CK10-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1802 // CK10-NEXT: [[_TMP19:%.*]] = alloca ptr, align 8 1803 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 8 1804 // CK10-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 8 1805 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 8 1806 // CK10-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1807 // CK10-NEXT: [[_TMP26:%.*]] = alloca ptr, align 8 1808 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 8 1809 // CK10-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 8 1810 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 8 1811 // CK10-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1812 // CK10-NEXT: [[_TMP33:%.*]] = alloca ptr, align 8 1813 // CK10-NEXT: [[_TMP34:%.*]] = alloca ptr, align 8 1814 // CK10-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 8 1815 // CK10-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 8 1816 // CK10-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 8 1817 // CK10-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 1818 // CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 1819 // CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 1820 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8 1821 // CK10-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1822 // CK10-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 1823 // CK10-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1824 // CK10-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 1825 // CK10-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 1826 // CK10-NEXT: store ptr null, ptr [[TMP3]], align 8 1827 // CK10-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 1828 // CK10-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 1829 // CK10-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 1830 // CK10-NEXT: store i32 3, ptr [[TMP6]], align 4 1831 // CK10-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 1832 // CK10-NEXT: store i32 1, ptr [[TMP7]], align 4 1833 // CK10-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 1834 // CK10-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 1835 // CK10-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 1836 // CK10-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 1837 // CK10-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 1838 // CK10-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 1839 // CK10-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 1840 // CK10-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 1841 // CK10-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 1842 // CK10-NEXT: store ptr null, ptr [[TMP12]], align 8 1843 // CK10-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 1844 // CK10-NEXT: store ptr null, ptr [[TMP13]], align 8 1845 // CK10-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 1846 // CK10-NEXT: store i64 0, ptr [[TMP14]], align 8 1847 // CK10-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 1848 // CK10-NEXT: store i64 0, ptr [[TMP15]], align 8 1849 // CK10-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 1850 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 1851 // CK10-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 1852 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 1853 // CK10-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 1854 // CK10-NEXT: store i32 0, ptr [[TMP18]], align 4 1855 // 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]], 0 1857 // 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 8 1863 // CK10-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 1864 // CK10-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 8 1865 // CK10-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 1866 // CK10-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 8 1867 // CK10-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 0 1868 // CK10-NEXT: store ptr null, ptr [[TMP24]], align 8 1869 // CK10-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 1870 // CK10-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 1871 // CK10-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 1872 // CK10-NEXT: store i32 3, ptr [[TMP27]], align 4 1873 // CK10-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 1874 // CK10-NEXT: store i32 1, ptr [[TMP28]], align 4 1875 // CK10-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 1876 // CK10-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 8 1877 // CK10-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 1878 // CK10-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 8 1879 // CK10-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 1880 // CK10-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 8 1881 // CK10-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 1882 // CK10-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 8 1883 // CK10-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 1884 // CK10-NEXT: store ptr null, ptr [[TMP33]], align 8 1885 // CK10-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 1886 // CK10-NEXT: store ptr null, ptr [[TMP34]], align 8 1887 // CK10-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 1888 // CK10-NEXT: store i64 0, ptr [[TMP35]], align 8 1889 // CK10-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 1890 // CK10-NEXT: store i64 0, ptr [[TMP36]], align 8 1891 // CK10-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 1892 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 1893 // CK10-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 1894 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 1895 // CK10-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 1896 // CK10-NEXT: store i32 0, ptr [[TMP39]], align 4 1897 // 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]], 0 1899 // 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 8 1905 // CK10-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 1906 // CK10-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 8 1907 // CK10-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 1908 // CK10-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 8 1909 // CK10-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 0 1910 // CK10-NEXT: store ptr null, ptr [[TMP45]], align 8 1911 // CK10-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 1912 // CK10-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 1913 // CK10-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 1914 // CK10-NEXT: store i32 3, ptr [[TMP48]], align 4 1915 // CK10-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 1916 // CK10-NEXT: store i32 1, ptr [[TMP49]], align 4 1917 // CK10-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 1918 // CK10-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 8 1919 // CK10-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 1920 // CK10-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 8 1921 // CK10-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 1922 // CK10-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 8 1923 // CK10-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 1924 // CK10-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 8 1925 // CK10-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 1926 // CK10-NEXT: store ptr null, ptr [[TMP54]], align 8 1927 // CK10-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 1928 // CK10-NEXT: store ptr null, ptr [[TMP55]], align 8 1929 // CK10-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 1930 // CK10-NEXT: store i64 0, ptr [[TMP56]], align 8 1931 // CK10-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 1932 // CK10-NEXT: store i64 0, ptr [[TMP57]], align 8 1933 // CK10-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 1934 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 1935 // CK10-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 1936 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 1937 // CK10-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 1938 // CK10-NEXT: store i32 0, ptr [[TMP60]], align 4 1939 // 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]], 0 1941 // 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 8 1947 // CK10-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 8 1948 // CK10-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 8 1949 // CK10-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 8 1950 // CK10-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 1951 // CK10-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 8 1952 // CK10-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 1953 // CK10-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 8 1954 // CK10-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 0 1955 // CK10-NEXT: store ptr null, ptr [[TMP68]], align 8 1956 // CK10-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 1957 // CK10-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 1958 // CK10-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 1959 // CK10-NEXT: store i32 3, ptr [[TMP71]], align 4 1960 // CK10-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 1961 // CK10-NEXT: store i32 1, ptr [[TMP72]], align 4 1962 // CK10-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 1963 // CK10-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 8 1964 // CK10-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 1965 // CK10-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 8 1966 // CK10-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 1967 // CK10-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 8 1968 // CK10-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 1969 // CK10-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 8 1970 // CK10-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 1971 // CK10-NEXT: store ptr null, ptr [[TMP77]], align 8 1972 // CK10-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 1973 // CK10-NEXT: store ptr null, ptr [[TMP78]], align 8 1974 // CK10-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 1975 // CK10-NEXT: store i64 0, ptr [[TMP79]], align 8 1976 // CK10-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 1977 // CK10-NEXT: store i64 0, ptr [[TMP80]], align 8 1978 // CK10-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 1979 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 1980 // CK10-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 1981 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 1982 // CK10-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 1983 // CK10-NEXT: store i32 0, ptr [[TMP83]], align 4 1984 // 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]], 0 1986 // 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 8 1992 // CK10-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 8 1993 // CK10-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 8 1994 // CK10-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 8 1995 // CK10-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 1996 // CK10-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 8 1997 // CK10-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 1998 // CK10-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 8 1999 // CK10-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 0 2000 // CK10-NEXT: store ptr null, ptr [[TMP91]], align 8 2001 // CK10-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 2002 // CK10-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 2003 // CK10-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 2004 // CK10-NEXT: store i32 3, ptr [[TMP94]], align 4 2005 // CK10-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 2006 // CK10-NEXT: store i32 1, ptr [[TMP95]], align 4 2007 // CK10-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 2008 // CK10-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 8 2009 // CK10-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 2010 // CK10-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 8 2011 // CK10-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 2012 // CK10-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 8 2013 // CK10-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 2014 // CK10-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 8 2015 // CK10-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 2016 // CK10-NEXT: store ptr null, ptr [[TMP100]], align 8 2017 // CK10-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 2018 // CK10-NEXT: store ptr null, ptr [[TMP101]], align 8 2019 // CK10-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 2020 // CK10-NEXT: store i64 0, ptr [[TMP102]], align 8 2021 // CK10-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 2022 // CK10-NEXT: store i64 0, ptr [[TMP103]], align 8 2023 // CK10-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 2024 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 2025 // CK10-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 2026 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 2027 // CK10-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 2028 // CK10-NEXT: store i32 0, ptr [[TMP106]], align 4 2029 // 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]], 0 2031 // 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 8 2037 // CK10-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 8 2038 // CK10-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 8 2039 // CK10-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 8 2040 // CK10-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2041 // CK10-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 8 2042 // CK10-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2043 // CK10-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 8 2044 // CK10-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 0 2045 // CK10-NEXT: store ptr null, ptr [[TMP114]], align 8 2046 // CK10-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2047 // CK10-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2048 // CK10-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 2049 // CK10-NEXT: store i32 3, ptr [[TMP117]], align 4 2050 // CK10-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 2051 // CK10-NEXT: store i32 1, ptr [[TMP118]], align 4 2052 // CK10-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 2053 // CK10-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 8 2054 // CK10-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 2055 // CK10-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 8 2056 // CK10-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 2057 // CK10-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 8 2058 // CK10-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 2059 // CK10-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 8 2060 // CK10-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 2061 // CK10-NEXT: store ptr null, ptr [[TMP123]], align 8 2062 // CK10-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 2063 // CK10-NEXT: store ptr null, ptr [[TMP124]], align 8 2064 // CK10-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 2065 // CK10-NEXT: store i64 0, ptr [[TMP125]], align 8 2066 // CK10-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 2067 // CK10-NEXT: store i64 0, ptr [[TMP126]], align 8 2068 // CK10-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 2069 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 2070 // CK10-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 2071 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 2072 // CK10-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 2073 // CK10-NEXT: store i32 0, ptr [[TMP129]], align 4 2074 // 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]], 0 2076 // 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 8 2082 // CK10-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 8 2083 // CK10-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 2084 // CK10-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 8 2085 // CK10-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 8 2086 // CK10-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 8 2087 // CK10-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 8 2088 // CK10-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 8 2089 // CK10-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 2090 // CK10-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 8 2091 // CK10-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 2092 // CK10-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 8 2093 // CK10-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 0 2094 // CK10-NEXT: store ptr null, ptr [[TMP140]], align 8 2095 // CK10-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 2096 // CK10-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 8 2097 // CK10-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 2098 // CK10-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 8 2099 // CK10-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 1 2100 // CK10-NEXT: store ptr null, ptr [[TMP143]], align 8 2101 // CK10-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 2102 // CK10-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 2103 // CK10-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 2104 // CK10-NEXT: store i32 3, ptr [[TMP146]], align 4 2105 // CK10-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 2106 // CK10-NEXT: store i32 2, ptr [[TMP147]], align 4 2107 // CK10-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 2108 // CK10-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 8 2109 // CK10-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 2110 // CK10-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 8 2111 // CK10-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 2112 // CK10-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 8 2113 // CK10-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 2114 // CK10-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 8 2115 // CK10-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 2116 // CK10-NEXT: store ptr null, ptr [[TMP152]], align 8 2117 // CK10-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 2118 // CK10-NEXT: store ptr null, ptr [[TMP153]], align 8 2119 // CK10-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 2120 // CK10-NEXT: store i64 0, ptr [[TMP154]], align 8 2121 // CK10-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 2122 // CK10-NEXT: store i64 0, ptr [[TMP155]], align 8 2123 // CK10-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 2124 // CK10-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 2125 // CK10-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 2126 // CK10-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 2127 // CK10-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 2128 // CK10-NEXT: store i32 0, ptr [[TMP158]], align 4 2129 // 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]], 0 2131 // 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 void 2137 // 2138 // 2139 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 2140 // CK10-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 2141 // CK10-NEXT: entry: 2142 // CK10-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 8 2143 // CK10-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 8 2144 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 8 2145 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 2146 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 8 2147 // CK10-NEXT: ret void 2148 // 2149 // 2150 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 2151 // CK10-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 2152 // CK10-NEXT: entry: 2153 // CK10-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 8 2154 // CK10-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 8 2155 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 8 2156 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 1 2157 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 8 2158 // CK10-NEXT: ret void 2159 // 2160 // 2161 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 2162 // CK10-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 2163 // CK10-NEXT: entry: 2164 // CK10-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 8 2165 // CK10-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 8 2166 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 8 2167 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 1 2168 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 8 2169 // CK10-NEXT: ret void 2170 // 2171 // 2172 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 2173 // CK10-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 2174 // CK10-NEXT: entry: 2175 // CK10-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 2176 // CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2177 // CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 2178 // CK10-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 8 2179 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2180 // CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2181 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 2182 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2183 // CK10-NEXT: ret void 2184 // 2185 // 2186 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 2187 // CK10-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 2188 // CK10-NEXT: entry: 2189 // CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2190 // CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2191 // CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2192 // CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2193 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2194 // CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2195 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2196 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2197 // CK10-NEXT: ret void 2198 // 2199 // 2200 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 2201 // CK10-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 2202 // CK10-NEXT: entry: 2203 // CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2204 // CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2205 // CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2206 // CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2207 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2208 // CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2209 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2210 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2211 // CK10-NEXT: ret void 2212 // 2213 // 2214 // CK10-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 2215 // CK10-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 2216 // CK10-NEXT: entry: 2217 // CK10-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2218 // CK10-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 2219 // CK10-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2220 // CK10-NEXT: [[_TMP1:%.*]] = alloca ptr, align 8 2221 // CK10-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2222 // CK10-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 2223 // CK10-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2224 // CK10-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 8 2225 // CK10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2226 // CK10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2227 // CK10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2228 // CK10-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2229 // CK10-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 8 2230 // CK10-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 2231 // CK10-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 1 2232 // CK10-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 8 2233 // CK10-NEXT: ret void 2234 // 2235 // 2236 // CK11-LABEL: define {{[^@]+}}@_Z3barRPfRPi 2237 // 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 8 2240 // CK11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 2241 // CK11-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 2242 // CK11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 2243 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8 2244 // CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8 2245 // 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 void 2247 // 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 8 2253 // CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2254 // CK11-NEXT: [[L:%.*]] = alloca ptr, align 8 2255 // CK11-NEXT: [[T:%.*]] = alloca ptr, align 8 2256 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 2257 // CK11-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 2258 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 2259 // CK11-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 2260 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 8 2261 // CK11-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 8 2262 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 8 2263 // CK11-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2264 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 8 2265 // CK11-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 8 2266 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 8 2267 // CK11-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2268 // CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2269 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 8 2270 // CK11-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 8 2271 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 8 2272 // CK11-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2273 // CK11-NEXT: [[_TMP19:%.*]] = alloca ptr, align 8 2274 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 8 2275 // CK11-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 8 2276 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 8 2277 // CK11-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2278 // CK11-NEXT: [[_TMP26:%.*]] = alloca ptr, align 8 2279 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 8 2280 // CK11-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 8 2281 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 8 2282 // CK11-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2283 // CK11-NEXT: [[_TMP33:%.*]] = alloca ptr, align 8 2284 // CK11-NEXT: [[_TMP34:%.*]] = alloca ptr, align 8 2285 // CK11-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 8 2286 // CK11-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 8 2287 // CK11-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 8 2288 // CK11-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2289 // CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 2290 // CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2291 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8 2292 // CK11-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 2293 // CK11-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 2294 // CK11-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 2295 // CK11-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 2296 // CK11-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 2297 // CK11-NEXT: store ptr null, ptr [[TMP3]], align 8 2298 // CK11-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 2299 // CK11-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 2300 // CK11-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 2301 // CK11-NEXT: store i32 3, ptr [[TMP6]], align 4 2302 // CK11-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 2303 // CK11-NEXT: store i32 1, ptr [[TMP7]], align 4 2304 // CK11-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 2305 // CK11-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 2306 // CK11-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 2307 // CK11-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 2308 // CK11-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 2309 // CK11-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 2310 // CK11-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 2311 // CK11-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 2312 // CK11-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 2313 // CK11-NEXT: store ptr null, ptr [[TMP12]], align 8 2314 // CK11-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 2315 // CK11-NEXT: store ptr null, ptr [[TMP13]], align 8 2316 // CK11-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 2317 // CK11-NEXT: store i64 0, ptr [[TMP14]], align 8 2318 // CK11-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 2319 // CK11-NEXT: store i64 0, ptr [[TMP15]], align 8 2320 // CK11-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 2321 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 2322 // CK11-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 2323 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 2324 // CK11-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 2325 // CK11-NEXT: store i32 0, ptr [[TMP18]], align 4 2326 // 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]], 0 2328 // 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 8 2334 // CK11-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 2335 // CK11-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 8 2336 // CK11-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 2337 // CK11-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 8 2338 // CK11-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i64 0, i64 0 2339 // CK11-NEXT: store ptr null, ptr [[TMP24]], align 8 2340 // CK11-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 2341 // CK11-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 2342 // CK11-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 2343 // CK11-NEXT: store i32 3, ptr [[TMP27]], align 4 2344 // CK11-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 2345 // CK11-NEXT: store i32 1, ptr [[TMP28]], align 4 2346 // CK11-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 2347 // CK11-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 8 2348 // CK11-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 2349 // CK11-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 8 2350 // CK11-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 2351 // CK11-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 8 2352 // CK11-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 2353 // CK11-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 8 2354 // CK11-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 2355 // CK11-NEXT: store ptr null, ptr [[TMP33]], align 8 2356 // CK11-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 2357 // CK11-NEXT: store ptr null, ptr [[TMP34]], align 8 2358 // CK11-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 2359 // CK11-NEXT: store i64 0, ptr [[TMP35]], align 8 2360 // CK11-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 2361 // CK11-NEXT: store i64 0, ptr [[TMP36]], align 8 2362 // CK11-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 2363 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 2364 // CK11-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 2365 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 2366 // CK11-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 2367 // CK11-NEXT: store i32 0, ptr [[TMP39]], align 4 2368 // 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]], 0 2370 // 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 8 2376 // CK11-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 2377 // CK11-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 8 2378 // CK11-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 2379 // CK11-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 8 2380 // CK11-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i64 0, i64 0 2381 // CK11-NEXT: store ptr null, ptr [[TMP45]], align 8 2382 // CK11-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 2383 // CK11-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 2384 // CK11-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 2385 // CK11-NEXT: store i32 3, ptr [[TMP48]], align 4 2386 // CK11-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 2387 // CK11-NEXT: store i32 1, ptr [[TMP49]], align 4 2388 // CK11-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 2389 // CK11-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 8 2390 // CK11-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 2391 // CK11-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 8 2392 // CK11-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 2393 // CK11-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 8 2394 // CK11-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 2395 // CK11-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 8 2396 // CK11-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 2397 // CK11-NEXT: store ptr null, ptr [[TMP54]], align 8 2398 // CK11-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 2399 // CK11-NEXT: store ptr null, ptr [[TMP55]], align 8 2400 // CK11-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 2401 // CK11-NEXT: store i64 0, ptr [[TMP56]], align 8 2402 // CK11-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 2403 // CK11-NEXT: store i64 0, ptr [[TMP57]], align 8 2404 // CK11-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 2405 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 2406 // CK11-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 2407 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 2408 // CK11-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 2409 // CK11-NEXT: store i32 0, ptr [[TMP60]], align 4 2410 // 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]], 0 2412 // 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 8 2418 // CK11-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 8 2419 // CK11-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 8 2420 // CK11-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 8 2421 // CK11-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 2422 // CK11-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 8 2423 // CK11-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 2424 // CK11-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 8 2425 // CK11-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i64 0, i64 0 2426 // CK11-NEXT: store ptr null, ptr [[TMP68]], align 8 2427 // CK11-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 2428 // CK11-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 2429 // CK11-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 2430 // CK11-NEXT: store i32 3, ptr [[TMP71]], align 4 2431 // CK11-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 2432 // CK11-NEXT: store i32 1, ptr [[TMP72]], align 4 2433 // CK11-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 2434 // CK11-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 8 2435 // CK11-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 2436 // CK11-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 8 2437 // CK11-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 2438 // CK11-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 8 2439 // CK11-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 2440 // CK11-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 8 2441 // CK11-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 2442 // CK11-NEXT: store ptr null, ptr [[TMP77]], align 8 2443 // CK11-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 2444 // CK11-NEXT: store ptr null, ptr [[TMP78]], align 8 2445 // CK11-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 2446 // CK11-NEXT: store i64 0, ptr [[TMP79]], align 8 2447 // CK11-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 2448 // CK11-NEXT: store i64 0, ptr [[TMP80]], align 8 2449 // CK11-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 2450 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 2451 // CK11-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 2452 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 2453 // CK11-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 2454 // CK11-NEXT: store i32 0, ptr [[TMP83]], align 4 2455 // 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]], 0 2457 // 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 8 2463 // CK11-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 8 2464 // CK11-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 8 2465 // CK11-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 8 2466 // CK11-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 2467 // CK11-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 8 2468 // CK11-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 2469 // CK11-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 8 2470 // CK11-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i64 0, i64 0 2471 // CK11-NEXT: store ptr null, ptr [[TMP91]], align 8 2472 // CK11-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 2473 // CK11-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 2474 // CK11-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 2475 // CK11-NEXT: store i32 3, ptr [[TMP94]], align 4 2476 // CK11-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 2477 // CK11-NEXT: store i32 1, ptr [[TMP95]], align 4 2478 // CK11-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 2479 // CK11-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 8 2480 // CK11-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 2481 // CK11-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 8 2482 // CK11-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 2483 // CK11-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 8 2484 // CK11-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 2485 // CK11-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 8 2486 // CK11-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 2487 // CK11-NEXT: store ptr null, ptr [[TMP100]], align 8 2488 // CK11-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 2489 // CK11-NEXT: store ptr null, ptr [[TMP101]], align 8 2490 // CK11-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 2491 // CK11-NEXT: store i64 0, ptr [[TMP102]], align 8 2492 // CK11-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 2493 // CK11-NEXT: store i64 0, ptr [[TMP103]], align 8 2494 // CK11-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 2495 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 2496 // CK11-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 2497 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 2498 // CK11-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 2499 // CK11-NEXT: store i32 0, ptr [[TMP106]], align 4 2500 // 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]], 0 2502 // 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 8 2508 // CK11-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 8 2509 // CK11-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 8 2510 // CK11-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 8 2511 // CK11-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2512 // CK11-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 8 2513 // CK11-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2514 // CK11-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 8 2515 // CK11-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i64 0, i64 0 2516 // CK11-NEXT: store ptr null, ptr [[TMP114]], align 8 2517 // CK11-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2518 // CK11-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2519 // CK11-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 2520 // CK11-NEXT: store i32 3, ptr [[TMP117]], align 4 2521 // CK11-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 2522 // CK11-NEXT: store i32 1, ptr [[TMP118]], align 4 2523 // CK11-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 2524 // CK11-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 8 2525 // CK11-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 2526 // CK11-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 8 2527 // CK11-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 2528 // CK11-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 8 2529 // CK11-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 2530 // CK11-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 8 2531 // CK11-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 2532 // CK11-NEXT: store ptr null, ptr [[TMP123]], align 8 2533 // CK11-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 2534 // CK11-NEXT: store ptr null, ptr [[TMP124]], align 8 2535 // CK11-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 2536 // CK11-NEXT: store i64 0, ptr [[TMP125]], align 8 2537 // CK11-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 2538 // CK11-NEXT: store i64 0, ptr [[TMP126]], align 8 2539 // CK11-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 2540 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 2541 // CK11-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 2542 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 2543 // CK11-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 2544 // CK11-NEXT: store i32 0, ptr [[TMP129]], align 4 2545 // 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]], 0 2547 // 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 8 2553 // CK11-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 8 2554 // CK11-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 2555 // CK11-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 8 2556 // CK11-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 8 2557 // CK11-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 8 2558 // CK11-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 8 2559 // CK11-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 8 2560 // CK11-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 2561 // CK11-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 8 2562 // CK11-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 2563 // CK11-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 8 2564 // CK11-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 0 2565 // CK11-NEXT: store ptr null, ptr [[TMP140]], align 8 2566 // CK11-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 2567 // CK11-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 8 2568 // CK11-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 2569 // CK11-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 8 2570 // CK11-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i64 0, i64 1 2571 // CK11-NEXT: store ptr null, ptr [[TMP143]], align 8 2572 // CK11-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 2573 // CK11-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 2574 // CK11-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 2575 // CK11-NEXT: store i32 3, ptr [[TMP146]], align 4 2576 // CK11-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 2577 // CK11-NEXT: store i32 2, ptr [[TMP147]], align 4 2578 // CK11-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 2579 // CK11-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 8 2580 // CK11-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 2581 // CK11-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 8 2582 // CK11-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 2583 // CK11-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 8 2584 // CK11-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 2585 // CK11-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 8 2586 // CK11-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 2587 // CK11-NEXT: store ptr null, ptr [[TMP152]], align 8 2588 // CK11-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 2589 // CK11-NEXT: store ptr null, ptr [[TMP153]], align 8 2590 // CK11-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 2591 // CK11-NEXT: store i64 0, ptr [[TMP154]], align 8 2592 // CK11-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 2593 // CK11-NEXT: store i64 0, ptr [[TMP155]], align 8 2594 // CK11-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 2595 // CK11-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 2596 // CK11-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 2597 // CK11-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 2598 // CK11-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 2599 // CK11-NEXT: store i32 0, ptr [[TMP158]], align 4 2600 // 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]], 0 2602 // 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 void 2608 // 2609 // 2610 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 2611 // CK11-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 2612 // CK11-NEXT: entry: 2613 // CK11-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 8 2614 // CK11-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 8 2615 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 8 2616 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 2617 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 8 2618 // CK11-NEXT: ret void 2619 // 2620 // 2621 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 2622 // CK11-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 2623 // CK11-NEXT: entry: 2624 // CK11-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 8 2625 // CK11-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 8 2626 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 8 2627 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 1 2628 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 8 2629 // CK11-NEXT: ret void 2630 // 2631 // 2632 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 2633 // CK11-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 2634 // CK11-NEXT: entry: 2635 // CK11-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 8 2636 // CK11-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 8 2637 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 8 2638 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 1 2639 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 8 2640 // CK11-NEXT: ret void 2641 // 2642 // 2643 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 2644 // CK11-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 2645 // CK11-NEXT: entry: 2646 // CK11-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 2647 // CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2648 // CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 2649 // CK11-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 8 2650 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2651 // CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2652 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 2653 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2654 // CK11-NEXT: ret void 2655 // 2656 // 2657 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 2658 // CK11-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 2659 // CK11-NEXT: entry: 2660 // CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2661 // CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2662 // CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2663 // CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2664 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2665 // CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2666 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2667 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2668 // CK11-NEXT: ret void 2669 // 2670 // 2671 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 2672 // CK11-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 2673 // CK11-NEXT: entry: 2674 // CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2675 // CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2676 // CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2677 // CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2678 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2679 // CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2680 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2681 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2682 // CK11-NEXT: ret void 2683 // 2684 // 2685 // CK11-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 2686 // CK11-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 2687 // CK11-NEXT: entry: 2688 // CK11-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 2689 // CK11-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 8 2690 // CK11-NEXT: [[TMP:%.*]] = alloca ptr, align 8 2691 // CK11-NEXT: [[_TMP1:%.*]] = alloca ptr, align 8 2692 // CK11-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 2693 // CK11-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 2694 // CK11-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 8 2695 // CK11-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 8 2696 // CK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 8 2697 // CK11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8 2698 // CK11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 2699 // CK11-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 8 2700 // CK11-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 8 2701 // CK11-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 2702 // CK11-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 1 2703 // CK11-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 8 2704 // CK11-NEXT: ret void 2705 // 2706 // 2707 // CK12-LABEL: define {{[^@]+}}@_Z3barRPfRPi 2708 // 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 4 2711 // CK12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 2712 // CK12-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4 2713 // CK12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 2714 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 4 2715 // CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 4 2716 // 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 void 2718 // 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 4 2724 // CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 2725 // CK12-NEXT: [[L:%.*]] = alloca ptr, align 4 2726 // CK12-NEXT: [[T:%.*]] = alloca ptr, align 4 2727 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 2728 // CK12-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 2729 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 2730 // CK12-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 2731 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 4 2732 // CK12-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 4 2733 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 4 2734 // CK12-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2735 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 4 2736 // CK12-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 4 2737 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 4 2738 // CK12-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2739 // CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 4 2740 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 4 2741 // CK12-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 4 2742 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 4 2743 // CK12-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2744 // CK12-NEXT: [[_TMP19:%.*]] = alloca ptr, align 4 2745 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 4 2746 // CK12-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 4 2747 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 4 2748 // CK12-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2749 // CK12-NEXT: [[_TMP26:%.*]] = alloca ptr, align 4 2750 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 4 2751 // CK12-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 4 2752 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 4 2753 // CK12-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2754 // CK12-NEXT: [[_TMP33:%.*]] = alloca ptr, align 4 2755 // CK12-NEXT: [[_TMP34:%.*]] = alloca ptr, align 4 2756 // CK12-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 4 2757 // CK12-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 4 2758 // CK12-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 4 2759 // CK12-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 2760 // CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 2761 // CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 2762 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 4 2763 // CK12-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 2764 // CK12-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 2765 // CK12-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 2766 // CK12-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 2767 // CK12-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 2768 // CK12-NEXT: store ptr null, ptr [[TMP3]], align 4 2769 // CK12-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 2770 // CK12-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 2771 // CK12-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 2772 // CK12-NEXT: store i32 3, ptr [[TMP6]], align 4 2773 // CK12-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 2774 // CK12-NEXT: store i32 1, ptr [[TMP7]], align 4 2775 // CK12-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 2776 // CK12-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 2777 // CK12-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 2778 // CK12-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 2779 // CK12-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 2780 // CK12-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 2781 // CK12-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 2782 // CK12-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 2783 // CK12-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 2784 // CK12-NEXT: store ptr null, ptr [[TMP12]], align 4 2785 // CK12-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 2786 // CK12-NEXT: store ptr null, ptr [[TMP13]], align 4 2787 // CK12-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 2788 // CK12-NEXT: store i64 0, ptr [[TMP14]], align 8 2789 // CK12-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 2790 // CK12-NEXT: store i64 0, ptr [[TMP15]], align 8 2791 // CK12-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 2792 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 2793 // CK12-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 2794 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 2795 // CK12-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 2796 // CK12-NEXT: store i32 0, ptr [[TMP18]], align 4 2797 // 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]], 0 2799 // 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 4 2805 // CK12-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 2806 // CK12-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 4 2807 // CK12-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 2808 // CK12-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 4 2809 // CK12-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 0 2810 // CK12-NEXT: store ptr null, ptr [[TMP24]], align 4 2811 // CK12-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 2812 // CK12-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 2813 // CK12-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 2814 // CK12-NEXT: store i32 3, ptr [[TMP27]], align 4 2815 // CK12-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 2816 // CK12-NEXT: store i32 1, ptr [[TMP28]], align 4 2817 // CK12-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 2818 // CK12-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 4 2819 // CK12-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 2820 // CK12-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 4 2821 // CK12-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 2822 // CK12-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 4 2823 // CK12-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 2824 // CK12-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 4 2825 // CK12-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 2826 // CK12-NEXT: store ptr null, ptr [[TMP33]], align 4 2827 // CK12-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 2828 // CK12-NEXT: store ptr null, ptr [[TMP34]], align 4 2829 // CK12-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 2830 // CK12-NEXT: store i64 0, ptr [[TMP35]], align 8 2831 // CK12-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 2832 // CK12-NEXT: store i64 0, ptr [[TMP36]], align 8 2833 // CK12-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 2834 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 2835 // CK12-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 2836 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 2837 // CK12-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 2838 // CK12-NEXT: store i32 0, ptr [[TMP39]], align 4 2839 // 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]], 0 2841 // 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 4 2847 // CK12-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 2848 // CK12-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 4 2849 // CK12-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 2850 // CK12-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 4 2851 // CK12-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 0 2852 // CK12-NEXT: store ptr null, ptr [[TMP45]], align 4 2853 // CK12-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 2854 // CK12-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 2855 // CK12-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 2856 // CK12-NEXT: store i32 3, ptr [[TMP48]], align 4 2857 // CK12-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 2858 // CK12-NEXT: store i32 1, ptr [[TMP49]], align 4 2859 // CK12-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 2860 // CK12-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 4 2861 // CK12-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 2862 // CK12-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 4 2863 // CK12-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 2864 // CK12-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 4 2865 // CK12-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 2866 // CK12-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 4 2867 // CK12-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 2868 // CK12-NEXT: store ptr null, ptr [[TMP54]], align 4 2869 // CK12-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 2870 // CK12-NEXT: store ptr null, ptr [[TMP55]], align 4 2871 // CK12-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 2872 // CK12-NEXT: store i64 0, ptr [[TMP56]], align 8 2873 // CK12-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 2874 // CK12-NEXT: store i64 0, ptr [[TMP57]], align 8 2875 // CK12-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 2876 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 2877 // CK12-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 2878 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 2879 // CK12-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 2880 // CK12-NEXT: store i32 0, ptr [[TMP60]], align 4 2881 // 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]], 0 2883 // 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 4 2889 // CK12-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 4 2890 // CK12-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 4 2891 // CK12-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 4 2892 // CK12-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 2893 // CK12-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 4 2894 // CK12-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 2895 // CK12-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 4 2896 // CK12-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 0 2897 // CK12-NEXT: store ptr null, ptr [[TMP68]], align 4 2898 // CK12-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 2899 // CK12-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 2900 // CK12-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 2901 // CK12-NEXT: store i32 3, ptr [[TMP71]], align 4 2902 // CK12-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 2903 // CK12-NEXT: store i32 1, ptr [[TMP72]], align 4 2904 // CK12-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 2905 // CK12-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 4 2906 // CK12-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 2907 // CK12-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 4 2908 // CK12-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 2909 // CK12-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 4 2910 // CK12-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 2911 // CK12-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 4 2912 // CK12-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 2913 // CK12-NEXT: store ptr null, ptr [[TMP77]], align 4 2914 // CK12-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 2915 // CK12-NEXT: store ptr null, ptr [[TMP78]], align 4 2916 // CK12-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 2917 // CK12-NEXT: store i64 0, ptr [[TMP79]], align 8 2918 // CK12-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 2919 // CK12-NEXT: store i64 0, ptr [[TMP80]], align 8 2920 // CK12-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 2921 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 2922 // CK12-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 2923 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 2924 // CK12-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 2925 // CK12-NEXT: store i32 0, ptr [[TMP83]], align 4 2926 // 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]], 0 2928 // 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 4 2934 // CK12-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 4 2935 // CK12-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 4 2936 // CK12-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 4 2937 // CK12-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 2938 // CK12-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 4 2939 // CK12-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 2940 // CK12-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 4 2941 // CK12-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 0 2942 // CK12-NEXT: store ptr null, ptr [[TMP91]], align 4 2943 // CK12-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 2944 // CK12-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 2945 // CK12-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 2946 // CK12-NEXT: store i32 3, ptr [[TMP94]], align 4 2947 // CK12-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 2948 // CK12-NEXT: store i32 1, ptr [[TMP95]], align 4 2949 // CK12-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 2950 // CK12-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 4 2951 // CK12-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 2952 // CK12-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 4 2953 // CK12-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 2954 // CK12-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 4 2955 // CK12-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 2956 // CK12-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 4 2957 // CK12-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 2958 // CK12-NEXT: store ptr null, ptr [[TMP100]], align 4 2959 // CK12-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 2960 // CK12-NEXT: store ptr null, ptr [[TMP101]], align 4 2961 // CK12-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 2962 // CK12-NEXT: store i64 0, ptr [[TMP102]], align 8 2963 // CK12-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 2964 // CK12-NEXT: store i64 0, ptr [[TMP103]], align 8 2965 // CK12-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 2966 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 2967 // CK12-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 2968 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 2969 // CK12-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 2970 // CK12-NEXT: store i32 0, ptr [[TMP106]], align 4 2971 // 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]], 0 2973 // 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 4 2979 // CK12-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 4 2980 // CK12-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 4 2981 // CK12-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 4 2982 // CK12-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2983 // CK12-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 4 2984 // CK12-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2985 // CK12-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 4 2986 // CK12-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 0 2987 // CK12-NEXT: store ptr null, ptr [[TMP114]], align 4 2988 // CK12-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 2989 // CK12-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 2990 // CK12-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 2991 // CK12-NEXT: store i32 3, ptr [[TMP117]], align 4 2992 // CK12-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 2993 // CK12-NEXT: store i32 1, ptr [[TMP118]], align 4 2994 // CK12-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 2995 // CK12-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 4 2996 // CK12-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 2997 // CK12-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 4 2998 // CK12-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 2999 // CK12-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 4 3000 // CK12-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 3001 // CK12-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 4 3002 // CK12-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 3003 // CK12-NEXT: store ptr null, ptr [[TMP123]], align 4 3004 // CK12-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 3005 // CK12-NEXT: store ptr null, ptr [[TMP124]], align 4 3006 // CK12-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 3007 // CK12-NEXT: store i64 0, ptr [[TMP125]], align 8 3008 // CK12-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 3009 // CK12-NEXT: store i64 0, ptr [[TMP126]], align 8 3010 // CK12-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 3011 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 3012 // CK12-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 3013 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 3014 // CK12-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 3015 // CK12-NEXT: store i32 0, ptr [[TMP129]], align 4 3016 // 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]], 0 3018 // 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 4 3024 // CK12-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 4 3025 // CK12-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3026 // CK12-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 4 3027 // CK12-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 4 3028 // CK12-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 4 3029 // CK12-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 4 3030 // CK12-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 4 3031 // CK12-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 3032 // CK12-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 4 3033 // CK12-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 3034 // CK12-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 4 3035 // CK12-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 0 3036 // CK12-NEXT: store ptr null, ptr [[TMP140]], align 4 3037 // CK12-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 3038 // CK12-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 4 3039 // CK12-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 3040 // CK12-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 4 3041 // CK12-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 1 3042 // CK12-NEXT: store ptr null, ptr [[TMP143]], align 4 3043 // CK12-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 3044 // CK12-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 3045 // CK12-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 3046 // CK12-NEXT: store i32 3, ptr [[TMP146]], align 4 3047 // CK12-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 3048 // CK12-NEXT: store i32 2, ptr [[TMP147]], align 4 3049 // CK12-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 3050 // CK12-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 4 3051 // CK12-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 3052 // CK12-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 4 3053 // CK12-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 3054 // CK12-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 4 3055 // CK12-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 3056 // CK12-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 4 3057 // CK12-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 3058 // CK12-NEXT: store ptr null, ptr [[TMP152]], align 4 3059 // CK12-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 3060 // CK12-NEXT: store ptr null, ptr [[TMP153]], align 4 3061 // CK12-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 3062 // CK12-NEXT: store i64 0, ptr [[TMP154]], align 8 3063 // CK12-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 3064 // CK12-NEXT: store i64 0, ptr [[TMP155]], align 8 3065 // CK12-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 3066 // CK12-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 3067 // CK12-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 3068 // CK12-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 3069 // CK12-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 3070 // CK12-NEXT: store i32 0, ptr [[TMP158]], align 4 3071 // 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]], 0 3073 // 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 void 3079 // 3080 // 3081 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 3082 // CK12-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 3083 // CK12-NEXT: entry: 3084 // CK12-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 4 3085 // CK12-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 4 3086 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 4 3087 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3088 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 4 3089 // CK12-NEXT: ret void 3090 // 3091 // 3092 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 3093 // CK12-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 3094 // CK12-NEXT: entry: 3095 // CK12-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 4 3096 // CK12-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 4 3097 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 4 3098 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 1 3099 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 4 3100 // CK12-NEXT: ret void 3101 // 3102 // 3103 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 3104 // CK12-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 3105 // CK12-NEXT: entry: 3106 // CK12-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 4 3107 // CK12-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 4 3108 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 4 3109 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 1 3110 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 4 3111 // CK12-NEXT: ret void 3112 // 3113 // 3114 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 3115 // CK12-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 3116 // CK12-NEXT: entry: 3117 // CK12-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 3118 // CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3119 // CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3120 // CK12-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 4 3121 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3122 // CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3123 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3124 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3125 // CK12-NEXT: ret void 3126 // 3127 // 3128 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 3129 // CK12-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 3130 // CK12-NEXT: entry: 3131 // CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3132 // CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3133 // CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3134 // CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3135 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3136 // CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3137 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3138 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3139 // CK12-NEXT: ret void 3140 // 3141 // 3142 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 3143 // CK12-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 3144 // CK12-NEXT: entry: 3145 // CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3146 // CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3147 // CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3148 // CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3149 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3150 // CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3151 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3152 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3153 // CK12-NEXT: ret void 3154 // 3155 // 3156 // CK12-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 3157 // CK12-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 3158 // CK12-NEXT: entry: 3159 // CK12-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3160 // CK12-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 3161 // CK12-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3162 // CK12-NEXT: [[_TMP1:%.*]] = alloca ptr, align 4 3163 // CK12-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3164 // CK12-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3165 // CK12-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3166 // CK12-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 4 3167 // CK12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3168 // CK12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3169 // CK12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3170 // CK12-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3171 // CK12-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 4 3172 // CK12-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 3173 // CK12-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 1 3174 // CK12-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 4 3175 // CK12-NEXT: ret void 3176 // 3177 // 3178 // CK13-LABEL: define {{[^@]+}}@_Z3barRPfRPi 3179 // 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 4 3182 // CK13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 3183 // CK13-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4 3184 // CK13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 3185 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 4 3186 // CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 4 3187 // 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 void 3189 // 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 4 3195 // CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3196 // CK13-NEXT: [[L:%.*]] = alloca ptr, align 4 3197 // CK13-NEXT: [[T:%.*]] = alloca ptr, align 4 3198 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 3199 // CK13-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 3200 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 3201 // CK13-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 3202 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS1:%.*]] = alloca [1 x ptr], align 4 3203 // CK13-NEXT: [[DOTOFFLOAD_PTRS2:%.*]] = alloca [1 x ptr], align 4 3204 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS3:%.*]] = alloca [1 x ptr], align 4 3205 // CK13-NEXT: [[KERNEL_ARGS4:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3206 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS7:%.*]] = alloca [1 x ptr], align 4 3207 // CK13-NEXT: [[DOTOFFLOAD_PTRS8:%.*]] = alloca [1 x ptr], align 4 3208 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS9:%.*]] = alloca [1 x ptr], align 4 3209 // CK13-NEXT: [[KERNEL_ARGS10:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3210 // CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3211 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS13:%.*]] = alloca [1 x ptr], align 4 3212 // CK13-NEXT: [[DOTOFFLOAD_PTRS14:%.*]] = alloca [1 x ptr], align 4 3213 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS15:%.*]] = alloca [1 x ptr], align 4 3214 // CK13-NEXT: [[KERNEL_ARGS16:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3215 // CK13-NEXT: [[_TMP19:%.*]] = alloca ptr, align 4 3216 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS20:%.*]] = alloca [1 x ptr], align 4 3217 // CK13-NEXT: [[DOTOFFLOAD_PTRS21:%.*]] = alloca [1 x ptr], align 4 3218 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS22:%.*]] = alloca [1 x ptr], align 4 3219 // CK13-NEXT: [[KERNEL_ARGS23:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3220 // CK13-NEXT: [[_TMP26:%.*]] = alloca ptr, align 4 3221 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS27:%.*]] = alloca [1 x ptr], align 4 3222 // CK13-NEXT: [[DOTOFFLOAD_PTRS28:%.*]] = alloca [1 x ptr], align 4 3223 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS29:%.*]] = alloca [1 x ptr], align 4 3224 // CK13-NEXT: [[KERNEL_ARGS30:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3225 // CK13-NEXT: [[_TMP33:%.*]] = alloca ptr, align 4 3226 // CK13-NEXT: [[_TMP34:%.*]] = alloca ptr, align 4 3227 // CK13-NEXT: [[DOTOFFLOAD_BASEPTRS35:%.*]] = alloca [2 x ptr], align 4 3228 // CK13-NEXT: [[DOTOFFLOAD_PTRS36:%.*]] = alloca [2 x ptr], align 4 3229 // CK13-NEXT: [[DOTOFFLOAD_MAPPERS37:%.*]] = alloca [2 x ptr], align 4 3230 // CK13-NEXT: [[KERNEL_ARGS38:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3231 // CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3232 // CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3233 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 4 3234 // CK13-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 3235 // CK13-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 3236 // CK13-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 3237 // CK13-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 3238 // CK13-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 3239 // CK13-NEXT: store ptr null, ptr [[TMP3]], align 4 3240 // CK13-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 3241 // CK13-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 3242 // CK13-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 3243 // CK13-NEXT: store i32 3, ptr [[TMP6]], align 4 3244 // CK13-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 3245 // CK13-NEXT: store i32 1, ptr [[TMP7]], align 4 3246 // CK13-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 3247 // CK13-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 3248 // CK13-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 3249 // CK13-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 3250 // CK13-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 3251 // CK13-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 3252 // CK13-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 3253 // CK13-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 3254 // CK13-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 3255 // CK13-NEXT: store ptr null, ptr [[TMP12]], align 4 3256 // CK13-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 3257 // CK13-NEXT: store ptr null, ptr [[TMP13]], align 4 3258 // CK13-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 3259 // CK13-NEXT: store i64 0, ptr [[TMP14]], align 8 3260 // CK13-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 3261 // CK13-NEXT: store i64 0, ptr [[TMP15]], align 8 3262 // CK13-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 3263 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 3264 // CK13-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 3265 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 3266 // CK13-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 3267 // CK13-NEXT: store i32 0, ptr [[TMP18]], align 4 3268 // 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]], 0 3270 // 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 4 3276 // CK13-NEXT: [[TMP22:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 3277 // CK13-NEXT: store ptr [[TMP21]], ptr [[TMP22]], align 4 3278 // CK13-NEXT: [[TMP23:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 3279 // CK13-NEXT: store ptr [[TMP21]], ptr [[TMP23]], align 4 3280 // CK13-NEXT: [[TMP24:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS3]], i32 0, i32 0 3281 // CK13-NEXT: store ptr null, ptr [[TMP24]], align 4 3282 // CK13-NEXT: [[TMP25:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS1]], i32 0, i32 0 3283 // CK13-NEXT: [[TMP26:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS2]], i32 0, i32 0 3284 // CK13-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 0 3285 // CK13-NEXT: store i32 3, ptr [[TMP27]], align 4 3286 // CK13-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 1 3287 // CK13-NEXT: store i32 1, ptr [[TMP28]], align 4 3288 // CK13-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 2 3289 // CK13-NEXT: store ptr [[TMP25]], ptr [[TMP29]], align 4 3290 // CK13-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 3 3291 // CK13-NEXT: store ptr [[TMP26]], ptr [[TMP30]], align 4 3292 // CK13-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 4 3293 // CK13-NEXT: store ptr @.offload_sizes.1, ptr [[TMP31]], align 4 3294 // CK13-NEXT: [[TMP32:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 5 3295 // CK13-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP32]], align 4 3296 // CK13-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 6 3297 // CK13-NEXT: store ptr null, ptr [[TMP33]], align 4 3298 // CK13-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 7 3299 // CK13-NEXT: store ptr null, ptr [[TMP34]], align 4 3300 // CK13-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 8 3301 // CK13-NEXT: store i64 0, ptr [[TMP35]], align 8 3302 // CK13-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 9 3303 // CK13-NEXT: store i64 0, ptr [[TMP36]], align 8 3304 // CK13-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 10 3305 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP37]], align 4 3306 // CK13-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 11 3307 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP38]], align 4 3308 // CK13-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS4]], i32 0, i32 12 3309 // CK13-NEXT: store i32 0, ptr [[TMP39]], align 4 3310 // 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]], 0 3312 // 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 4 3318 // CK13-NEXT: [[TMP43:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 3319 // CK13-NEXT: store ptr [[TMP42]], ptr [[TMP43]], align 4 3320 // CK13-NEXT: [[TMP44:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 3321 // CK13-NEXT: store ptr [[TMP42]], ptr [[TMP44]], align 4 3322 // CK13-NEXT: [[TMP45:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS9]], i32 0, i32 0 3323 // CK13-NEXT: store ptr null, ptr [[TMP45]], align 4 3324 // CK13-NEXT: [[TMP46:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS7]], i32 0, i32 0 3325 // CK13-NEXT: [[TMP47:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS8]], i32 0, i32 0 3326 // CK13-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 0 3327 // CK13-NEXT: store i32 3, ptr [[TMP48]], align 4 3328 // CK13-NEXT: [[TMP49:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 1 3329 // CK13-NEXT: store i32 1, ptr [[TMP49]], align 4 3330 // CK13-NEXT: [[TMP50:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 2 3331 // CK13-NEXT: store ptr [[TMP46]], ptr [[TMP50]], align 4 3332 // CK13-NEXT: [[TMP51:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 3 3333 // CK13-NEXT: store ptr [[TMP47]], ptr [[TMP51]], align 4 3334 // CK13-NEXT: [[TMP52:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 4 3335 // CK13-NEXT: store ptr @.offload_sizes.3, ptr [[TMP52]], align 4 3336 // CK13-NEXT: [[TMP53:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 5 3337 // CK13-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP53]], align 4 3338 // CK13-NEXT: [[TMP54:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 6 3339 // CK13-NEXT: store ptr null, ptr [[TMP54]], align 4 3340 // CK13-NEXT: [[TMP55:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 7 3341 // CK13-NEXT: store ptr null, ptr [[TMP55]], align 4 3342 // CK13-NEXT: [[TMP56:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 8 3343 // CK13-NEXT: store i64 0, ptr [[TMP56]], align 8 3344 // CK13-NEXT: [[TMP57:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 9 3345 // CK13-NEXT: store i64 0, ptr [[TMP57]], align 8 3346 // CK13-NEXT: [[TMP58:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 10 3347 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP58]], align 4 3348 // CK13-NEXT: [[TMP59:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 11 3349 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP59]], align 4 3350 // CK13-NEXT: [[TMP60:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS10]], i32 0, i32 12 3351 // CK13-NEXT: store i32 0, ptr [[TMP60]], align 4 3352 // 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]], 0 3354 // 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 4 3360 // CK13-NEXT: store ptr [[TMP63]], ptr [[TMP]], align 4 3361 // CK13-NEXT: [[TMP64:%.*]] = load ptr, ptr [[TMP]], align 4 3362 // CK13-NEXT: [[TMP65:%.*]] = load ptr, ptr [[TMP64]], align 4 3363 // CK13-NEXT: [[TMP66:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 3364 // CK13-NEXT: store ptr [[TMP65]], ptr [[TMP66]], align 4 3365 // CK13-NEXT: [[TMP67:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 3366 // CK13-NEXT: store ptr [[TMP65]], ptr [[TMP67]], align 4 3367 // CK13-NEXT: [[TMP68:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS15]], i32 0, i32 0 3368 // CK13-NEXT: store ptr null, ptr [[TMP68]], align 4 3369 // CK13-NEXT: [[TMP69:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS13]], i32 0, i32 0 3370 // CK13-NEXT: [[TMP70:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS14]], i32 0, i32 0 3371 // CK13-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 0 3372 // CK13-NEXT: store i32 3, ptr [[TMP71]], align 4 3373 // CK13-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 1 3374 // CK13-NEXT: store i32 1, ptr [[TMP72]], align 4 3375 // CK13-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 2 3376 // CK13-NEXT: store ptr [[TMP69]], ptr [[TMP73]], align 4 3377 // CK13-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 3 3378 // CK13-NEXT: store ptr [[TMP70]], ptr [[TMP74]], align 4 3379 // CK13-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 4 3380 // CK13-NEXT: store ptr @.offload_sizes.5, ptr [[TMP75]], align 4 3381 // CK13-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 5 3382 // CK13-NEXT: store ptr @.offload_maptypes.6, ptr [[TMP76]], align 4 3383 // CK13-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 6 3384 // CK13-NEXT: store ptr null, ptr [[TMP77]], align 4 3385 // CK13-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 7 3386 // CK13-NEXT: store ptr null, ptr [[TMP78]], align 4 3387 // CK13-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 8 3388 // CK13-NEXT: store i64 0, ptr [[TMP79]], align 8 3389 // CK13-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 9 3390 // CK13-NEXT: store i64 0, ptr [[TMP80]], align 8 3391 // CK13-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 10 3392 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP81]], align 4 3393 // CK13-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 11 3394 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP82]], align 4 3395 // CK13-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS16]], i32 0, i32 12 3396 // CK13-NEXT: store i32 0, ptr [[TMP83]], align 4 3397 // 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]], 0 3399 // 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 4 3405 // CK13-NEXT: store ptr [[TMP86]], ptr [[_TMP19]], align 4 3406 // CK13-NEXT: [[TMP87:%.*]] = load ptr, ptr [[_TMP19]], align 4 3407 // CK13-NEXT: [[TMP88:%.*]] = load ptr, ptr [[TMP87]], align 4 3408 // CK13-NEXT: [[TMP89:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 3409 // CK13-NEXT: store ptr [[TMP88]], ptr [[TMP89]], align 4 3410 // CK13-NEXT: [[TMP90:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 3411 // CK13-NEXT: store ptr [[TMP88]], ptr [[TMP90]], align 4 3412 // CK13-NEXT: [[TMP91:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS22]], i32 0, i32 0 3413 // CK13-NEXT: store ptr null, ptr [[TMP91]], align 4 3414 // CK13-NEXT: [[TMP92:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS20]], i32 0, i32 0 3415 // CK13-NEXT: [[TMP93:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS21]], i32 0, i32 0 3416 // CK13-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 0 3417 // CK13-NEXT: store i32 3, ptr [[TMP94]], align 4 3418 // CK13-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 1 3419 // CK13-NEXT: store i32 1, ptr [[TMP95]], align 4 3420 // CK13-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 2 3421 // CK13-NEXT: store ptr [[TMP92]], ptr [[TMP96]], align 4 3422 // CK13-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 3 3423 // CK13-NEXT: store ptr [[TMP93]], ptr [[TMP97]], align 4 3424 // CK13-NEXT: [[TMP98:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 4 3425 // CK13-NEXT: store ptr @.offload_sizes.7, ptr [[TMP98]], align 4 3426 // CK13-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 5 3427 // CK13-NEXT: store ptr @.offload_maptypes.8, ptr [[TMP99]], align 4 3428 // CK13-NEXT: [[TMP100:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 6 3429 // CK13-NEXT: store ptr null, ptr [[TMP100]], align 4 3430 // CK13-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 7 3431 // CK13-NEXT: store ptr null, ptr [[TMP101]], align 4 3432 // CK13-NEXT: [[TMP102:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 8 3433 // CK13-NEXT: store i64 0, ptr [[TMP102]], align 8 3434 // CK13-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 9 3435 // CK13-NEXT: store i64 0, ptr [[TMP103]], align 8 3436 // CK13-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 10 3437 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP104]], align 4 3438 // CK13-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 11 3439 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP105]], align 4 3440 // CK13-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS23]], i32 0, i32 12 3441 // CK13-NEXT: store i32 0, ptr [[TMP106]], align 4 3442 // 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]], 0 3444 // 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 4 3450 // CK13-NEXT: store ptr [[TMP109]], ptr [[_TMP26]], align 4 3451 // CK13-NEXT: [[TMP110:%.*]] = load ptr, ptr [[_TMP26]], align 4 3452 // CK13-NEXT: [[TMP111:%.*]] = load ptr, ptr [[TMP110]], align 4 3453 // CK13-NEXT: [[TMP112:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 3454 // CK13-NEXT: store ptr [[TMP111]], ptr [[TMP112]], align 4 3455 // CK13-NEXT: [[TMP113:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 3456 // CK13-NEXT: store ptr [[TMP111]], ptr [[TMP113]], align 4 3457 // CK13-NEXT: [[TMP114:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS29]], i32 0, i32 0 3458 // CK13-NEXT: store ptr null, ptr [[TMP114]], align 4 3459 // CK13-NEXT: [[TMP115:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS27]], i32 0, i32 0 3460 // CK13-NEXT: [[TMP116:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS28]], i32 0, i32 0 3461 // CK13-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 0 3462 // CK13-NEXT: store i32 3, ptr [[TMP117]], align 4 3463 // CK13-NEXT: [[TMP118:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 1 3464 // CK13-NEXT: store i32 1, ptr [[TMP118]], align 4 3465 // CK13-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 2 3466 // CK13-NEXT: store ptr [[TMP115]], ptr [[TMP119]], align 4 3467 // CK13-NEXT: [[TMP120:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 3 3468 // CK13-NEXT: store ptr [[TMP116]], ptr [[TMP120]], align 4 3469 // CK13-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 4 3470 // CK13-NEXT: store ptr @.offload_sizes.9, ptr [[TMP121]], align 4 3471 // CK13-NEXT: [[TMP122:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 5 3472 // CK13-NEXT: store ptr @.offload_maptypes.10, ptr [[TMP122]], align 4 3473 // CK13-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 6 3474 // CK13-NEXT: store ptr null, ptr [[TMP123]], align 4 3475 // CK13-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 7 3476 // CK13-NEXT: store ptr null, ptr [[TMP124]], align 4 3477 // CK13-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 8 3478 // CK13-NEXT: store i64 0, ptr [[TMP125]], align 8 3479 // CK13-NEXT: [[TMP126:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 9 3480 // CK13-NEXT: store i64 0, ptr [[TMP126]], align 8 3481 // CK13-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 10 3482 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP127]], align 4 3483 // CK13-NEXT: [[TMP128:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 11 3484 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP128]], align 4 3485 // CK13-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS30]], i32 0, i32 12 3486 // CK13-NEXT: store i32 0, ptr [[TMP129]], align 4 3487 // 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]], 0 3489 // 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 4 3495 // CK13-NEXT: store ptr [[TMP132]], ptr [[_TMP33]], align 4 3496 // CK13-NEXT: [[TMP133:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3497 // CK13-NEXT: store ptr [[TMP133]], ptr [[_TMP34]], align 4 3498 // CK13-NEXT: [[TMP134:%.*]] = load ptr, ptr [[_TMP33]], align 4 3499 // CK13-NEXT: [[TMP135:%.*]] = load ptr, ptr [[TMP134]], align 4 3500 // CK13-NEXT: [[TMP136:%.*]] = load ptr, ptr [[_TMP34]], align 4 3501 // CK13-NEXT: [[TMP137:%.*]] = load ptr, ptr [[TMP136]], align 4 3502 // CK13-NEXT: [[TMP138:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 3503 // CK13-NEXT: store ptr [[TMP135]], ptr [[TMP138]], align 4 3504 // CK13-NEXT: [[TMP139:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 3505 // CK13-NEXT: store ptr [[TMP135]], ptr [[TMP139]], align 4 3506 // CK13-NEXT: [[TMP140:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 0 3507 // CK13-NEXT: store ptr null, ptr [[TMP140]], align 4 3508 // CK13-NEXT: [[TMP141:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 1 3509 // CK13-NEXT: store ptr [[TMP137]], ptr [[TMP141]], align 4 3510 // CK13-NEXT: [[TMP142:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 1 3511 // CK13-NEXT: store ptr [[TMP137]], ptr [[TMP142]], align 4 3512 // CK13-NEXT: [[TMP143:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS37]], i32 0, i32 1 3513 // CK13-NEXT: store ptr null, ptr [[TMP143]], align 4 3514 // CK13-NEXT: [[TMP144:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS35]], i32 0, i32 0 3515 // CK13-NEXT: [[TMP145:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS36]], i32 0, i32 0 3516 // CK13-NEXT: [[TMP146:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 0 3517 // CK13-NEXT: store i32 3, ptr [[TMP146]], align 4 3518 // CK13-NEXT: [[TMP147:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 1 3519 // CK13-NEXT: store i32 2, ptr [[TMP147]], align 4 3520 // CK13-NEXT: [[TMP148:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 2 3521 // CK13-NEXT: store ptr [[TMP144]], ptr [[TMP148]], align 4 3522 // CK13-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 3 3523 // CK13-NEXT: store ptr [[TMP145]], ptr [[TMP149]], align 4 3524 // CK13-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 4 3525 // CK13-NEXT: store ptr @.offload_sizes.11, ptr [[TMP150]], align 4 3526 // CK13-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 5 3527 // CK13-NEXT: store ptr @.offload_maptypes.12, ptr [[TMP151]], align 4 3528 // CK13-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 6 3529 // CK13-NEXT: store ptr null, ptr [[TMP152]], align 4 3530 // CK13-NEXT: [[TMP153:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 7 3531 // CK13-NEXT: store ptr null, ptr [[TMP153]], align 4 3532 // CK13-NEXT: [[TMP154:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 8 3533 // CK13-NEXT: store i64 0, ptr [[TMP154]], align 8 3534 // CK13-NEXT: [[TMP155:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 9 3535 // CK13-NEXT: store i64 0, ptr [[TMP155]], align 8 3536 // CK13-NEXT: [[TMP156:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 10 3537 // CK13-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP156]], align 4 3538 // CK13-NEXT: [[TMP157:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 11 3539 // CK13-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP157]], align 4 3540 // CK13-NEXT: [[TMP158:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS38]], i32 0, i32 12 3541 // CK13-NEXT: store i32 0, ptr [[TMP158]], align 4 3542 // 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]], 0 3544 // 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 void 3550 // 3551 // 3552 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l37 3553 // CK13-SAME: (ptr noundef [[G:%.*]]) #[[ATTR1:[0-9]+]] { 3554 // CK13-NEXT: entry: 3555 // CK13-NEXT: [[G_ADDR:%.*]] = alloca ptr, align 4 3556 // CK13-NEXT: store ptr [[G]], ptr [[G_ADDR]], align 4 3557 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[G_ADDR]], align 4 3558 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3559 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[G_ADDR]], align 4 3560 // CK13-NEXT: ret void 3561 // 3562 // 3563 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l43 3564 // CK13-SAME: (ptr noundef [[L:%.*]]) #[[ATTR1]] { 3565 // CK13-NEXT: entry: 3566 // CK13-NEXT: [[L_ADDR:%.*]] = alloca ptr, align 4 3567 // CK13-NEXT: store ptr [[L]], ptr [[L_ADDR]], align 4 3568 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[L_ADDR]], align 4 3569 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP0]], i32 1 3570 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[L_ADDR]], align 4 3571 // CK13-NEXT: ret void 3572 // 3573 // 3574 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l49 3575 // CK13-SAME: (ptr noundef [[T:%.*]]) #[[ATTR1]] { 3576 // CK13-NEXT: entry: 3577 // CK13-NEXT: [[T_ADDR:%.*]] = alloca ptr, align 4 3578 // CK13-NEXT: store ptr [[T]], ptr [[T_ADDR]], align 4 3579 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[T_ADDR]], align 4 3580 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP0]], i32 1 3581 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[T_ADDR]], align 4 3582 // CK13-NEXT: ret void 3583 // 3584 // 3585 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l55 3586 // CK13-SAME: (ptr noundef [[LR:%.*]]) #[[ATTR1]] { 3587 // CK13-NEXT: entry: 3588 // CK13-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 3589 // CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3590 // CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3591 // CK13-NEXT: store ptr [[LR_ADDR]], ptr [[TMP]], align 4 3592 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3593 // CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3594 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3595 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3596 // CK13-NEXT: ret void 3597 // 3598 // 3599 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l61 3600 // CK13-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 3601 // CK13-NEXT: entry: 3602 // CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3603 // CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3604 // CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3605 // CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3606 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3607 // CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3608 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3609 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3610 // CK13-NEXT: ret void 3611 // 3612 // 3613 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l67 3614 // CK13-SAME: (ptr noundef [[TR:%.*]]) #[[ATTR1]] { 3615 // CK13-NEXT: entry: 3616 // CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3617 // CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3618 // CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3619 // CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3620 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3621 // CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3622 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3623 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3624 // CK13-NEXT: ret void 3625 // 3626 // 3627 // CK13-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3fooIiEvRPfRPT__l74 3628 // CK13-SAME: (ptr noundef [[TR:%.*]], ptr noundef [[LR:%.*]]) #[[ATTR1]] { 3629 // CK13-NEXT: entry: 3630 // CK13-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3631 // CK13-NEXT: [[LR_ADDR:%.*]] = alloca ptr, align 4 3632 // CK13-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3633 // CK13-NEXT: [[_TMP1:%.*]] = alloca ptr, align 4 3634 // CK13-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3635 // CK13-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3636 // CK13-NEXT: store ptr [[TR_ADDR]], ptr [[TMP]], align 4 3637 // CK13-NEXT: store ptr [[LR_ADDR]], ptr [[_TMP1]], align 4 3638 // CK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[TMP]], align 4 3639 // CK13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 4 3640 // CK13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP1]], i32 1 3641 // CK13-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP0]], align 4 3642 // CK13-NEXT: [[TMP2:%.*]] = load ptr, ptr [[_TMP1]], align 4 3643 // CK13-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 3644 // CK13-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw float, ptr [[TMP3]], i32 1 3645 // CK13-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP2]], align 4 3646 // CK13-NEXT: ret void 3647 // 3648 // 3649 // SIMD-ONLY00-LABEL: define {{[^@]+}}@_Z3barRPfRPi 3650 // 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 8 3653 // SIMD-ONLY00-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 3654 // SIMD-ONLY00-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 3655 // SIMD-ONLY00-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 3656 // SIMD-ONLY00-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8 3657 // SIMD-ONLY00-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8 3658 // 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 void 3660 // 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 8 3666 // SIMD-ONLY00-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 3667 // SIMD-ONLY00-NEXT: [[L:%.*]] = alloca ptr, align 8 3668 // SIMD-ONLY00-NEXT: [[T:%.*]] = alloca ptr, align 8 3669 // SIMD-ONLY00-NEXT: [[TMP:%.*]] = alloca ptr, align 8 3670 // SIMD-ONLY00-NEXT: [[_TMP4:%.*]] = alloca ptr, align 8 3671 // SIMD-ONLY00-NEXT: [[_TMP6:%.*]] = alloca ptr, align 8 3672 // SIMD-ONLY00-NEXT: [[_TMP8:%.*]] = alloca ptr, align 8 3673 // SIMD-ONLY00-NEXT: [[_TMP9:%.*]] = alloca ptr, align 8 3674 // SIMD-ONLY00-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 3675 // SIMD-ONLY00-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 3676 // SIMD-ONLY00-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8 3677 // SIMD-ONLY00-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3678 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 8 3679 // SIMD-ONLY00-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 8 3680 // SIMD-ONLY00-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3681 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 8 3682 // SIMD-ONLY00-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 8 3683 // SIMD-ONLY00-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 1 3684 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 8 3685 // SIMD-ONLY00-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3686 // SIMD-ONLY00-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 8 3687 // SIMD-ONLY00-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3688 // SIMD-ONLY00-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 8 3689 // SIMD-ONLY00-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 8 3690 // SIMD-ONLY00-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 1 3691 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 8 3692 // SIMD-ONLY00-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3693 // SIMD-ONLY00-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 8 3694 // SIMD-ONLY00-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3695 // SIMD-ONLY00-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 8 3696 // SIMD-ONLY00-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 8 3697 // SIMD-ONLY00-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 1 3698 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 8 3699 // SIMD-ONLY00-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3700 // SIMD-ONLY00-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 8 3701 // SIMD-ONLY00-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3702 // SIMD-ONLY00-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 8 3703 // SIMD-ONLY00-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 8 3704 // SIMD-ONLY00-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 1 3705 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 8 3706 // SIMD-ONLY00-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3707 // SIMD-ONLY00-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 8 3708 // SIMD-ONLY00-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3709 // SIMD-ONLY00-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 8 3710 // SIMD-ONLY00-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3711 // SIMD-ONLY00-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3712 // SIMD-ONLY00-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 8 3713 // SIMD-ONLY00-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 8 3714 // SIMD-ONLY00-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 1 3715 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 8 3716 // SIMD-ONLY00-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 8 3717 // SIMD-ONLY00-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 8 3718 // SIMD-ONLY00-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 1 3719 // SIMD-ONLY00-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 8 3720 // SIMD-ONLY00-NEXT: ret void 3721 // 3722 // 3723 // SIMD-ONLY01-LABEL: define {{[^@]+}}@_Z3barRPfRPi 3724 // 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 8 3727 // SIMD-ONLY01-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 3728 // SIMD-ONLY01-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8 3729 // SIMD-ONLY01-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 3730 // SIMD-ONLY01-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 8 3731 // SIMD-ONLY01-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 8 3732 // 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 void 3734 // 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 8 3740 // SIMD-ONLY01-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 8 3741 // SIMD-ONLY01-NEXT: [[L:%.*]] = alloca ptr, align 8 3742 // SIMD-ONLY01-NEXT: [[T:%.*]] = alloca ptr, align 8 3743 // SIMD-ONLY01-NEXT: [[TMP:%.*]] = alloca ptr, align 8 3744 // SIMD-ONLY01-NEXT: [[_TMP4:%.*]] = alloca ptr, align 8 3745 // SIMD-ONLY01-NEXT: [[_TMP6:%.*]] = alloca ptr, align 8 3746 // SIMD-ONLY01-NEXT: [[_TMP8:%.*]] = alloca ptr, align 8 3747 // SIMD-ONLY01-NEXT: [[_TMP9:%.*]] = alloca ptr, align 8 3748 // SIMD-ONLY01-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 8 3749 // SIMD-ONLY01-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 8 3750 // SIMD-ONLY01-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 8 3751 // SIMD-ONLY01-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3752 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 8 3753 // SIMD-ONLY01-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 8 3754 // SIMD-ONLY01-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3755 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 8 3756 // SIMD-ONLY01-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 8 3757 // SIMD-ONLY01-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 1 3758 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 8 3759 // SIMD-ONLY01-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3760 // SIMD-ONLY01-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 8 3761 // SIMD-ONLY01-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3762 // SIMD-ONLY01-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 8 3763 // SIMD-ONLY01-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 8 3764 // SIMD-ONLY01-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 1 3765 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 8 3766 // SIMD-ONLY01-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3767 // SIMD-ONLY01-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 8 3768 // SIMD-ONLY01-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3769 // SIMD-ONLY01-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 8 3770 // SIMD-ONLY01-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 8 3771 // SIMD-ONLY01-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 1 3772 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 8 3773 // SIMD-ONLY01-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3774 // SIMD-ONLY01-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 8 3775 // SIMD-ONLY01-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3776 // SIMD-ONLY01-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 8 3777 // SIMD-ONLY01-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 8 3778 // SIMD-ONLY01-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 1 3779 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 8 3780 // SIMD-ONLY01-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3781 // SIMD-ONLY01-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 8 3782 // SIMD-ONLY01-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3783 // SIMD-ONLY01-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 8 3784 // SIMD-ONLY01-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 8 3785 // SIMD-ONLY01-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 8 3786 // SIMD-ONLY01-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 8 3787 // SIMD-ONLY01-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 8 3788 // SIMD-ONLY01-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 1 3789 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 8 3790 // SIMD-ONLY01-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 8 3791 // SIMD-ONLY01-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 8 3792 // SIMD-ONLY01-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 1 3793 // SIMD-ONLY01-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 8 3794 // SIMD-ONLY01-NEXT: ret void 3795 // 3796 // 3797 // SIMD-ONLY02-LABEL: define {{[^@]+}}@_Z3barRPfRPi 3798 // 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 4 3801 // SIMD-ONLY02-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 3802 // SIMD-ONLY02-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4 3803 // SIMD-ONLY02-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 3804 // SIMD-ONLY02-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 4 3805 // SIMD-ONLY02-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 4 3806 // 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 void 3808 // 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 4 3814 // SIMD-ONLY02-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3815 // SIMD-ONLY02-NEXT: [[L:%.*]] = alloca ptr, align 4 3816 // SIMD-ONLY02-NEXT: [[T:%.*]] = alloca ptr, align 4 3817 // SIMD-ONLY02-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3818 // SIMD-ONLY02-NEXT: [[_TMP4:%.*]] = alloca ptr, align 4 3819 // SIMD-ONLY02-NEXT: [[_TMP6:%.*]] = alloca ptr, align 4 3820 // SIMD-ONLY02-NEXT: [[_TMP8:%.*]] = alloca ptr, align 4 3821 // SIMD-ONLY02-NEXT: [[_TMP9:%.*]] = alloca ptr, align 4 3822 // SIMD-ONLY02-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3823 // SIMD-ONLY02-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3824 // SIMD-ONLY02-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 4 3825 // SIMD-ONLY02-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3826 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 4 3827 // SIMD-ONLY02-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 4 3828 // SIMD-ONLY02-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3829 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 4 3830 // SIMD-ONLY02-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 4 3831 // SIMD-ONLY02-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 1 3832 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 4 3833 // SIMD-ONLY02-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3834 // SIMD-ONLY02-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 4 3835 // SIMD-ONLY02-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3836 // SIMD-ONLY02-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 4 3837 // SIMD-ONLY02-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 4 3838 // SIMD-ONLY02-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 1 3839 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 4 3840 // SIMD-ONLY02-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3841 // SIMD-ONLY02-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 4 3842 // SIMD-ONLY02-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3843 // SIMD-ONLY02-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 4 3844 // SIMD-ONLY02-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 4 3845 // SIMD-ONLY02-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 1 3846 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 4 3847 // SIMD-ONLY02-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3848 // SIMD-ONLY02-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 4 3849 // SIMD-ONLY02-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3850 // SIMD-ONLY02-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 4 3851 // SIMD-ONLY02-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 4 3852 // SIMD-ONLY02-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 1 3853 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 4 3854 // SIMD-ONLY02-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3855 // SIMD-ONLY02-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 4 3856 // SIMD-ONLY02-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3857 // SIMD-ONLY02-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 4 3858 // SIMD-ONLY02-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3859 // SIMD-ONLY02-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3860 // SIMD-ONLY02-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 4 3861 // SIMD-ONLY02-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 4 3862 // SIMD-ONLY02-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 1 3863 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 4 3864 // SIMD-ONLY02-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 4 3865 // SIMD-ONLY02-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 4 3866 // SIMD-ONLY02-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 1 3867 // SIMD-ONLY02-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 4 3868 // SIMD-ONLY02-NEXT: ret void 3869 // 3870 // 3871 // SIMD-ONLY03-LABEL: define {{[^@]+}}@_Z3barRPfRPi 3872 // 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 4 3875 // SIMD-ONLY03-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 3876 // SIMD-ONLY03-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4 3877 // SIMD-ONLY03-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 3878 // SIMD-ONLY03-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 4 3879 // SIMD-ONLY03-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B_ADDR]], align 4 3880 // 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 void 3882 // 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 4 3888 // SIMD-ONLY03-NEXT: [[TR_ADDR:%.*]] = alloca ptr, align 4 3889 // SIMD-ONLY03-NEXT: [[L:%.*]] = alloca ptr, align 4 3890 // SIMD-ONLY03-NEXT: [[T:%.*]] = alloca ptr, align 4 3891 // SIMD-ONLY03-NEXT: [[TMP:%.*]] = alloca ptr, align 4 3892 // SIMD-ONLY03-NEXT: [[_TMP4:%.*]] = alloca ptr, align 4 3893 // SIMD-ONLY03-NEXT: [[_TMP6:%.*]] = alloca ptr, align 4 3894 // SIMD-ONLY03-NEXT: [[_TMP8:%.*]] = alloca ptr, align 4 3895 // SIMD-ONLY03-NEXT: [[_TMP9:%.*]] = alloca ptr, align 4 3896 // SIMD-ONLY03-NEXT: store ptr [[LR]], ptr [[LR_ADDR]], align 4 3897 // SIMD-ONLY03-NEXT: store ptr [[TR]], ptr [[TR_ADDR]], align 4 3898 // SIMD-ONLY03-NEXT: [[TMP0:%.*]] = load ptr, ptr @g, align 4 3899 // SIMD-ONLY03-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3900 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR]], ptr @g, align 4 3901 // SIMD-ONLY03-NEXT: [[TMP1:%.*]] = load ptr, ptr [[L]], align 4 3902 // SIMD-ONLY03-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw float, ptr [[TMP1]], i32 1 3903 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR1]], ptr [[L]], align 4 3904 // SIMD-ONLY03-NEXT: [[TMP2:%.*]] = load ptr, ptr [[T]], align 4 3905 // SIMD-ONLY03-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP2]], i32 1 3906 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR2]], ptr [[T]], align 4 3907 // SIMD-ONLY03-NEXT: [[TMP3:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3908 // SIMD-ONLY03-NEXT: store ptr [[TMP3]], ptr [[TMP]], align 4 3909 // SIMD-ONLY03-NEXT: [[TMP4:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3910 // SIMD-ONLY03-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP]], align 4 3911 // SIMD-ONLY03-NEXT: [[TMP6:%.*]] = load ptr, ptr [[TMP5]], align 4 3912 // SIMD-ONLY03-NEXT: [[INCDEC_PTR3:%.*]] = getelementptr inbounds nuw float, ptr [[TMP6]], i32 1 3913 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR3]], ptr [[TMP5]], align 4 3914 // SIMD-ONLY03-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3915 // SIMD-ONLY03-NEXT: store ptr [[TMP7]], ptr [[_TMP4]], align 4 3916 // SIMD-ONLY03-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3917 // SIMD-ONLY03-NEXT: [[TMP9:%.*]] = load ptr, ptr [[_TMP4]], align 4 3918 // SIMD-ONLY03-NEXT: [[TMP10:%.*]] = load ptr, ptr [[TMP9]], align 4 3919 // SIMD-ONLY03-NEXT: [[INCDEC_PTR5:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP10]], i32 1 3920 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR5]], ptr [[TMP9]], align 4 3921 // SIMD-ONLY03-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3922 // SIMD-ONLY03-NEXT: store ptr [[TMP11]], ptr [[_TMP6]], align 4 3923 // SIMD-ONLY03-NEXT: [[TMP12:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3924 // SIMD-ONLY03-NEXT: [[TMP13:%.*]] = load ptr, ptr [[_TMP6]], align 4 3925 // SIMD-ONLY03-NEXT: [[TMP14:%.*]] = load ptr, ptr [[TMP13]], align 4 3926 // SIMD-ONLY03-NEXT: [[INCDEC_PTR7:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP14]], i32 1 3927 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR7]], ptr [[TMP13]], align 4 3928 // SIMD-ONLY03-NEXT: [[TMP15:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3929 // SIMD-ONLY03-NEXT: store ptr [[TMP15]], ptr [[_TMP8]], align 4 3930 // SIMD-ONLY03-NEXT: [[TMP16:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3931 // SIMD-ONLY03-NEXT: store ptr [[TMP16]], ptr [[_TMP9]], align 4 3932 // SIMD-ONLY03-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TR_ADDR]], align 4 3933 // SIMD-ONLY03-NEXT: [[TMP18:%.*]] = load ptr, ptr [[LR_ADDR]], align 4 3934 // SIMD-ONLY03-NEXT: [[TMP19:%.*]] = load ptr, ptr [[_TMP8]], align 4 3935 // SIMD-ONLY03-NEXT: [[TMP20:%.*]] = load ptr, ptr [[TMP19]], align 4 3936 // SIMD-ONLY03-NEXT: [[INCDEC_PTR10:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP20]], i32 1 3937 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR10]], ptr [[TMP19]], align 4 3938 // SIMD-ONLY03-NEXT: [[TMP21:%.*]] = load ptr, ptr [[_TMP9]], align 4 3939 // SIMD-ONLY03-NEXT: [[TMP22:%.*]] = load ptr, ptr [[TMP21]], align 4 3940 // SIMD-ONLY03-NEXT: [[INCDEC_PTR11:%.*]] = getelementptr inbounds nuw float, ptr [[TMP22]], i32 1 3941 // SIMD-ONLY03-NEXT: store ptr [[INCDEC_PTR11]], ptr [[TMP21]], align 4 3942 // SIMD-ONLY03-NEXT: ret void 3943 // 3944 // 3945 // CK20-LABEL: define {{[^@]+}}@_Z3barPd 3946 // CK20-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 3947 // CK20-NEXT: entry: 3948 // CK20-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 3949 // CK20-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8 3950 // CK20-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 3951 // 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 8 3954 // CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 3955 // CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8 3956 // CK20-NEXT: ret void 3957 // 3958 // 3959 // CK20-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 3960 // 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 8 3963 // CK20-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 3964 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 3965 // CK20-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 3966 // CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 3967 // CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 3968 // 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 void 3970 // 3971 // 3972 // CK20-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 3973 // 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 8 3976 // CK20-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 3977 // CK20-NEXT: [[LA:%.*]] = alloca ptr, align 8 3978 // CK20-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 3979 // CK20-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 3980 // CK20-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 3981 // CK20-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 3982 // CK20-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 8 3983 // CK20-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 8 3984 // CK20-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 8 3985 // CK20-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 8 3986 // CK20-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3987 // CK20-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 8 3988 // CK20-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 8 3989 // CK20-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 8 3990 // CK20-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 8 3991 // CK20-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 3992 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 3993 // CK20-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 3994 // CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 3995 // CK20-NEXT: store ptr null, ptr [[LA]], align 8 3996 // CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 3997 // CK20-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 3998 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 8 3999 // CK20-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4000 // CK20-NEXT: store ptr [[A]], ptr [[TMP1]], align 8 4001 // CK20-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 4002 // CK20-NEXT: store ptr null, ptr [[TMP2]], align 8 4003 // CK20-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4004 // CK20-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4005 // CK20-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 4006 // CK20-NEXT: store i32 3, ptr [[TMP5]], align 4 4007 // CK20-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 4008 // CK20-NEXT: store i32 1, ptr [[TMP6]], align 4 4009 // CK20-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 4010 // CK20-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 8 4011 // CK20-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 4012 // CK20-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 4013 // CK20-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 4014 // CK20-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 8 4015 // CK20-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 4016 // CK20-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 8 4017 // CK20-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 4018 // CK20-NEXT: store ptr null, ptr [[TMP11]], align 8 4019 // CK20-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 4020 // CK20-NEXT: store ptr null, ptr [[TMP12]], align 8 4021 // CK20-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 4022 // CK20-NEXT: store i64 0, ptr [[TMP13]], align 8 4023 // CK20-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 4024 // CK20-NEXT: store i64 0, ptr [[TMP14]], align 8 4025 // CK20-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 4026 // CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 4027 // CK20-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 4028 // CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 4029 // CK20-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 4030 // CK20-NEXT: store i32 0, ptr [[TMP17]], align 4 4031 // 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]], 0 4033 // 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 1 4039 // CK20-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 8 4040 // CK20-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 4041 // CK20-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 4042 // CK20-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 4043 // 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 0 4047 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 8 4048 // CK20-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4049 // CK20-NEXT: store ptr [[B]], ptr [[TMP27]], align 8 4050 // CK20-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4051 // CK20-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 8 4052 // CK20-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 0 4053 // CK20-NEXT: store ptr null, ptr [[TMP29]], align 8 4054 // CK20-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 4055 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 8 4056 // CK20-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 4057 // CK20-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 8 4058 // CK20-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 1 4059 // CK20-NEXT: store ptr null, ptr [[TMP32]], align 8 4060 // CK20-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 4061 // CK20-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4062 // CK20-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4063 // CK20-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 4064 // CK20-NEXT: store i32 3, ptr [[TMP36]], align 4 4065 // CK20-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 4066 // CK20-NEXT: store i32 2, ptr [[TMP37]], align 4 4067 // CK20-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 4068 // CK20-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 8 4069 // CK20-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 4070 // CK20-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 8 4071 // CK20-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 4072 // CK20-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 8 4073 // CK20-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 4074 // CK20-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 8 4075 // CK20-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 4076 // CK20-NEXT: store ptr null, ptr [[TMP42]], align 8 4077 // CK20-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 4078 // CK20-NEXT: store ptr null, ptr [[TMP43]], align 8 4079 // CK20-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 4080 // CK20-NEXT: store i64 0, ptr [[TMP44]], align 8 4081 // CK20-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 4082 // CK20-NEXT: store i64 0, ptr [[TMP45]], align 8 4083 // CK20-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 4084 // CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 4085 // CK20-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 4086 // CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 4087 // CK20-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 4088 // CK20-NEXT: store i32 0, ptr [[TMP48]], align 4 4089 // 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]], 0 4091 // 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 0 4097 // CK20-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4098 // CK20-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 8 4099 // CK20-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 4100 // CK20-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 4101 // CK20-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 4102 // 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 0 4106 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 8 4107 // CK20-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4108 // CK20-NEXT: store ptr [[A8]], ptr [[TMP58]], align 8 4109 // CK20-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4110 // CK20-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 8 4111 // CK20-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 0 4112 // CK20-NEXT: store ptr null, ptr [[TMP60]], align 8 4113 // CK20-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 4114 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 8 4115 // CK20-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 4116 // CK20-NEXT: store ptr [[A8]], ptr [[TMP62]], align 8 4117 // CK20-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 1 4118 // CK20-NEXT: store ptr null, ptr [[TMP63]], align 8 4119 // CK20-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 4120 // CK20-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 8 4121 // CK20-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 4122 // CK20-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 8 4123 // CK20-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 2 4124 // CK20-NEXT: store ptr null, ptr [[TMP66]], align 8 4125 // CK20-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 4126 // CK20-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4127 // CK20-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4128 // CK20-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 4129 // CK20-NEXT: store i32 3, ptr [[TMP70]], align 4 4130 // CK20-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 4131 // CK20-NEXT: store i32 3, ptr [[TMP71]], align 4 4132 // CK20-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 4133 // CK20-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 8 4134 // CK20-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 4135 // CK20-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 8 4136 // CK20-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 4137 // CK20-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 8 4138 // CK20-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 4139 // CK20-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 8 4140 // CK20-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 4141 // CK20-NEXT: store ptr null, ptr [[TMP76]], align 8 4142 // CK20-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 4143 // CK20-NEXT: store ptr null, ptr [[TMP77]], align 8 4144 // CK20-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 4145 // CK20-NEXT: store i64 0, ptr [[TMP78]], align 8 4146 // CK20-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 4147 // CK20-NEXT: store i64 0, ptr [[TMP79]], align 8 4148 // CK20-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 4149 // CK20-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 4150 // CK20-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 4151 // CK20-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 4152 // CK20-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 4153 // CK20-NEXT: store i32 0, ptr [[TMP82]], align 4 4154 // 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]], 0 4156 // 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 void 4162 // 4163 // 4164 // CK20-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 4165 // 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 8 4168 // CK20-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 4169 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4170 // CK20-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 4171 // CK20-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4172 // CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4173 // CK20-NEXT: store ptr null, ptr [[A]], align 8 4174 // CK20-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4175 // CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 4176 // CK20-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8 4177 // CK20-NEXT: ret void 4178 // 4179 // 4180 // CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 4181 // CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] { 4182 // CK20-NEXT: entry: 4183 // CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4184 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4185 // CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4186 // CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4187 // CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 4188 // CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4189 // CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 4190 // CK20-NEXT: ret void 4191 // 4192 // 4193 // CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 4194 // CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4195 // CK20-NEXT: entry: 4196 // CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4197 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4198 // CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4199 // CK20-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 4200 // CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8 4201 // CK20-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8 4202 // CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 4203 // CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 8 4204 // CK20-NEXT: ret void 4205 // 4206 // 4207 // CK20-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 4208 // CK20-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4209 // CK20-NEXT: entry: 4210 // CK20-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4211 // CK20-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4212 // CK20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4213 // CK20-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4214 // CK20-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 4215 // CK20-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4216 // CK20-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 4217 // CK20-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 4218 // CK20-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 8 4219 // CK20-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 4220 // CK20-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 4221 // CK20-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 8 4222 // CK20-NEXT: ret void 4223 // 4224 // 4225 // CK21-LABEL: define {{[^@]+}}@_Z3barPd 4226 // CK21-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 4227 // CK21-NEXT: entry: 4228 // CK21-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 4229 // CK21-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8 4230 // CK21-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 4231 // 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 8 4234 // CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 4235 // CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8 4236 // CK21-NEXT: ret void 4237 // 4238 // 4239 // CK21-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 4240 // 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 8 4243 // CK21-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 4244 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4245 // CK21-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 4246 // CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4247 // CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 4248 // 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 void 4250 // 4251 // 4252 // CK21-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 4253 // 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 8 4256 // CK21-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 4257 // CK21-NEXT: [[LA:%.*]] = alloca ptr, align 8 4258 // CK21-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 4259 // CK21-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 4260 // CK21-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 4261 // CK21-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 4262 // CK21-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 8 4263 // CK21-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 8 4264 // CK21-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 8 4265 // CK21-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 8 4266 // CK21-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4267 // CK21-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 8 4268 // CK21-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 8 4269 // CK21-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 8 4270 // CK21-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 8 4271 // CK21-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4272 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4273 // CK21-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 4274 // CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4275 // CK21-NEXT: store ptr null, ptr [[LA]], align 8 4276 // CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4277 // CK21-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4278 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 8 4279 // CK21-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4280 // CK21-NEXT: store ptr [[A]], ptr [[TMP1]], align 8 4281 // CK21-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 4282 // CK21-NEXT: store ptr null, ptr [[TMP2]], align 8 4283 // CK21-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4284 // CK21-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4285 // CK21-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 4286 // CK21-NEXT: store i32 3, ptr [[TMP5]], align 4 4287 // CK21-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 4288 // CK21-NEXT: store i32 1, ptr [[TMP6]], align 4 4289 // CK21-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 4290 // CK21-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 8 4291 // CK21-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 4292 // CK21-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 4293 // CK21-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 4294 // CK21-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 8 4295 // CK21-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 4296 // CK21-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 8 4297 // CK21-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 4298 // CK21-NEXT: store ptr null, ptr [[TMP11]], align 8 4299 // CK21-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 4300 // CK21-NEXT: store ptr null, ptr [[TMP12]], align 8 4301 // CK21-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 4302 // CK21-NEXT: store i64 0, ptr [[TMP13]], align 8 4303 // CK21-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 4304 // CK21-NEXT: store i64 0, ptr [[TMP14]], align 8 4305 // CK21-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 4306 // CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 4307 // CK21-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 4308 // CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 4309 // CK21-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 4310 // CK21-NEXT: store i32 0, ptr [[TMP17]], align 4 4311 // 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]], 0 4313 // 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 1 4319 // CK21-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 8 4320 // CK21-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 4321 // CK21-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 4322 // CK21-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 4323 // 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 0 4327 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 8 4328 // CK21-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4329 // CK21-NEXT: store ptr [[B]], ptr [[TMP27]], align 8 4330 // CK21-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4331 // CK21-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 8 4332 // CK21-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 0 4333 // CK21-NEXT: store ptr null, ptr [[TMP29]], align 8 4334 // CK21-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 4335 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 8 4336 // CK21-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 4337 // CK21-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 8 4338 // CK21-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i64 0, i64 1 4339 // CK21-NEXT: store ptr null, ptr [[TMP32]], align 8 4340 // CK21-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 4341 // CK21-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4342 // CK21-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4343 // CK21-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 4344 // CK21-NEXT: store i32 3, ptr [[TMP36]], align 4 4345 // CK21-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 4346 // CK21-NEXT: store i32 2, ptr [[TMP37]], align 4 4347 // CK21-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 4348 // CK21-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 8 4349 // CK21-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 4350 // CK21-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 8 4351 // CK21-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 4352 // CK21-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 8 4353 // CK21-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 4354 // CK21-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 8 4355 // CK21-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 4356 // CK21-NEXT: store ptr null, ptr [[TMP42]], align 8 4357 // CK21-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 4358 // CK21-NEXT: store ptr null, ptr [[TMP43]], align 8 4359 // CK21-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 4360 // CK21-NEXT: store i64 0, ptr [[TMP44]], align 8 4361 // CK21-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 4362 // CK21-NEXT: store i64 0, ptr [[TMP45]], align 8 4363 // CK21-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 4364 // CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 4365 // CK21-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 4366 // CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 4367 // CK21-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 4368 // CK21-NEXT: store i32 0, ptr [[TMP48]], align 4 4369 // 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]], 0 4371 // 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 0 4377 // CK21-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4378 // CK21-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 8 4379 // CK21-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 4380 // CK21-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 4381 // CK21-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 4382 // 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 0 4386 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 8 4387 // CK21-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4388 // CK21-NEXT: store ptr [[A8]], ptr [[TMP58]], align 8 4389 // CK21-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4390 // CK21-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 8 4391 // CK21-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 0 4392 // CK21-NEXT: store ptr null, ptr [[TMP60]], align 8 4393 // CK21-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 4394 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 8 4395 // CK21-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 4396 // CK21-NEXT: store ptr [[A8]], ptr [[TMP62]], align 8 4397 // CK21-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 1 4398 // CK21-NEXT: store ptr null, ptr [[TMP63]], align 8 4399 // CK21-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 4400 // CK21-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 8 4401 // CK21-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 4402 // CK21-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 8 4403 // CK21-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i64 0, i64 2 4404 // CK21-NEXT: store ptr null, ptr [[TMP66]], align 8 4405 // CK21-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 4406 // CK21-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4407 // CK21-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4408 // CK21-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 4409 // CK21-NEXT: store i32 3, ptr [[TMP70]], align 4 4410 // CK21-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 4411 // CK21-NEXT: store i32 3, ptr [[TMP71]], align 4 4412 // CK21-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 4413 // CK21-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 8 4414 // CK21-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 4415 // CK21-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 8 4416 // CK21-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 4417 // CK21-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 8 4418 // CK21-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 4419 // CK21-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 8 4420 // CK21-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 4421 // CK21-NEXT: store ptr null, ptr [[TMP76]], align 8 4422 // CK21-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 4423 // CK21-NEXT: store ptr null, ptr [[TMP77]], align 8 4424 // CK21-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 4425 // CK21-NEXT: store i64 0, ptr [[TMP78]], align 8 4426 // CK21-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 4427 // CK21-NEXT: store i64 0, ptr [[TMP79]], align 8 4428 // CK21-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 4429 // CK21-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 4430 // CK21-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 4431 // CK21-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 4432 // CK21-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 4433 // CK21-NEXT: store i32 0, ptr [[TMP82]], align 4 4434 // 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]], 0 4436 // 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 void 4442 // 4443 // 4444 // CK21-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 4445 // 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 8 4448 // CK21-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 4449 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4450 // CK21-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 4451 // CK21-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4452 // CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4453 // CK21-NEXT: store ptr null, ptr [[A]], align 8 4454 // CK21-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4455 // CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 4456 // CK21-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8 4457 // CK21-NEXT: ret void 4458 // 4459 // 4460 // CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 4461 // CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] { 4462 // CK21-NEXT: entry: 4463 // CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4464 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4465 // CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4466 // CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4467 // CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 4468 // CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4469 // CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 4470 // CK21-NEXT: ret void 4471 // 4472 // 4473 // CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 4474 // CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4475 // CK21-NEXT: entry: 4476 // CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4477 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4478 // CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4479 // CK21-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 4480 // CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8 4481 // CK21-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8 4482 // CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 4483 // CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 8 4484 // CK21-NEXT: ret void 4485 // 4486 // 4487 // CK21-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 4488 // CK21-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4489 // CK21-NEXT: entry: 4490 // CK21-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8 4491 // CK21-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 4492 // CK21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 4493 // CK21-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4494 // CK21-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 8 4495 // CK21-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4496 // CK21-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 4497 // CK21-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 4498 // CK21-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 8 4499 // CK21-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 4500 // CK21-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 4501 // CK21-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 8 4502 // CK21-NEXT: ret void 4503 // 4504 // 4505 // CK22-LABEL: define {{[^@]+}}@_Z3barPd 4506 // CK22-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 4507 // CK22-NEXT: entry: 4508 // CK22-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 4509 // CK22-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4 4510 // CK22-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 4511 // 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 4 4514 // CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 4515 // CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4 4516 // CK22-NEXT: ret void 4517 // 4518 // 4519 // CK22-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 4520 // 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 4 4523 // CK22-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 4524 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4525 // CK22-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 4526 // CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4527 // CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 4528 // 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 void 4530 // 4531 // 4532 // CK22-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 4533 // 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 4 4536 // CK22-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 4537 // CK22-NEXT: [[LA:%.*]] = alloca ptr, align 4 4538 // CK22-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 4539 // CK22-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 4540 // CK22-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 4541 // CK22-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 4542 // CK22-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 4 4543 // CK22-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 4 4544 // CK22-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 4 4545 // CK22-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 4 4546 // CK22-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4547 // CK22-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 4 4548 // CK22-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 4 4549 // CK22-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 4 4550 // CK22-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 4 4551 // CK22-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4552 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4553 // CK22-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 4554 // CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4555 // CK22-NEXT: store ptr null, ptr [[LA]], align 4 4556 // CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4557 // CK22-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4558 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 4 4559 // CK22-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4560 // CK22-NEXT: store ptr [[A]], ptr [[TMP1]], align 4 4561 // CK22-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 4562 // CK22-NEXT: store ptr null, ptr [[TMP2]], align 4 4563 // CK22-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4564 // CK22-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4565 // CK22-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 4566 // CK22-NEXT: store i32 3, ptr [[TMP5]], align 4 4567 // CK22-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 4568 // CK22-NEXT: store i32 1, ptr [[TMP6]], align 4 4569 // CK22-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 4570 // CK22-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 4 4571 // CK22-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 4572 // CK22-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 4573 // CK22-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 4574 // CK22-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 4 4575 // CK22-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 4576 // CK22-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 4 4577 // CK22-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 4578 // CK22-NEXT: store ptr null, ptr [[TMP11]], align 4 4579 // CK22-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 4580 // CK22-NEXT: store ptr null, ptr [[TMP12]], align 4 4581 // CK22-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 4582 // CK22-NEXT: store i64 0, ptr [[TMP13]], align 8 4583 // CK22-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 4584 // CK22-NEXT: store i64 0, ptr [[TMP14]], align 8 4585 // CK22-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 4586 // CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 4587 // CK22-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 4588 // CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 4589 // CK22-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 4590 // CK22-NEXT: store i32 0, ptr [[TMP17]], align 4 4591 // 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]], 0 4593 // 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 1 4599 // CK22-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 4 4600 // CK22-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 4601 // CK22-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 4602 // CK22-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 4603 // 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 0 4607 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 4 4608 // CK22-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4609 // CK22-NEXT: store ptr [[B]], ptr [[TMP27]], align 4 4610 // CK22-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4611 // CK22-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 4 4612 // CK22-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 0 4613 // CK22-NEXT: store ptr null, ptr [[TMP29]], align 4 4614 // CK22-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 4615 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 4 4616 // CK22-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 4617 // CK22-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 4 4618 // CK22-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 1 4619 // CK22-NEXT: store ptr null, ptr [[TMP32]], align 4 4620 // CK22-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 4621 // CK22-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4622 // CK22-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4623 // CK22-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 4624 // CK22-NEXT: store i32 3, ptr [[TMP36]], align 4 4625 // CK22-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 4626 // CK22-NEXT: store i32 2, ptr [[TMP37]], align 4 4627 // CK22-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 4628 // CK22-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 4 4629 // CK22-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 4630 // CK22-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 4 4631 // CK22-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 4632 // CK22-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 4 4633 // CK22-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 4634 // CK22-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 4 4635 // CK22-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 4636 // CK22-NEXT: store ptr null, ptr [[TMP42]], align 4 4637 // CK22-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 4638 // CK22-NEXT: store ptr null, ptr [[TMP43]], align 4 4639 // CK22-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 4640 // CK22-NEXT: store i64 0, ptr [[TMP44]], align 8 4641 // CK22-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 4642 // CK22-NEXT: store i64 0, ptr [[TMP45]], align 8 4643 // CK22-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 4644 // CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 4645 // CK22-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 4646 // CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 4647 // CK22-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 4648 // CK22-NEXT: store i32 0, ptr [[TMP48]], align 4 4649 // 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]], 0 4651 // 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 0 4657 // CK22-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4658 // CK22-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 4 4659 // CK22-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 4660 // CK22-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 4661 // CK22-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 4662 // 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 0 4666 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 4 4667 // CK22-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4668 // CK22-NEXT: store ptr [[A8]], ptr [[TMP58]], align 4 4669 // CK22-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4670 // CK22-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 4 4671 // CK22-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 0 4672 // CK22-NEXT: store ptr null, ptr [[TMP60]], align 4 4673 // CK22-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 4674 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 4 4675 // CK22-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 4676 // CK22-NEXT: store ptr [[A8]], ptr [[TMP62]], align 4 4677 // CK22-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 1 4678 // CK22-NEXT: store ptr null, ptr [[TMP63]], align 4 4679 // CK22-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 4680 // CK22-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 4 4681 // CK22-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 4682 // CK22-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 4 4683 // CK22-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 2 4684 // CK22-NEXT: store ptr null, ptr [[TMP66]], align 4 4685 // CK22-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 4686 // CK22-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4687 // CK22-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4688 // CK22-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 4689 // CK22-NEXT: store i32 3, ptr [[TMP70]], align 4 4690 // CK22-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 4691 // CK22-NEXT: store i32 3, ptr [[TMP71]], align 4 4692 // CK22-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 4693 // CK22-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 4 4694 // CK22-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 4695 // CK22-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 4 4696 // CK22-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 4697 // CK22-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 4 4698 // CK22-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 4699 // CK22-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 4 4700 // CK22-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 4701 // CK22-NEXT: store ptr null, ptr [[TMP76]], align 4 4702 // CK22-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 4703 // CK22-NEXT: store ptr null, ptr [[TMP77]], align 4 4704 // CK22-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 4705 // CK22-NEXT: store i64 0, ptr [[TMP78]], align 8 4706 // CK22-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 4707 // CK22-NEXT: store i64 0, ptr [[TMP79]], align 8 4708 // CK22-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 4709 // CK22-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 4710 // CK22-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 4711 // CK22-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 4712 // CK22-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 4713 // CK22-NEXT: store i32 0, ptr [[TMP82]], align 4 4714 // 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]], 0 4716 // 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 void 4722 // 4723 // 4724 // CK22-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 4725 // 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 4 4728 // CK22-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 4729 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4730 // CK22-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 4731 // CK22-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4732 // CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4733 // CK22-NEXT: store ptr null, ptr [[A]], align 4 4734 // CK22-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4735 // CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 4736 // CK22-NEXT: store ptr [[TMP0]], ptr [[B2]], align 4 4737 // CK22-NEXT: ret void 4738 // 4739 // 4740 // CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 4741 // CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] { 4742 // CK22-NEXT: entry: 4743 // CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 4744 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4745 // CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4746 // CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4747 // CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 4748 // CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4749 // CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 4750 // CK22-NEXT: ret void 4751 // 4752 // 4753 // CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 4754 // CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4755 // CK22-NEXT: entry: 4756 // CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 4757 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4758 // CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4759 // CK22-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 4760 // CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 4 4761 // CK22-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 4 4762 // CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 4763 // CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 4 4764 // CK22-NEXT: ret void 4765 // 4766 // 4767 // CK22-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 4768 // CK22-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 4769 // CK22-NEXT: entry: 4770 // CK22-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 4771 // CK22-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4772 // CK22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4773 // CK22-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 4774 // CK22-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 4775 // CK22-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 4776 // CK22-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 4777 // CK22-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 4778 // CK22-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 4 4779 // CK22-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 4780 // CK22-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 4781 // CK22-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 4 4782 // CK22-NEXT: ret void 4783 // 4784 // 4785 // CK23-LABEL: define {{[^@]+}}@_Z3barPd 4786 // CK23-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 4787 // CK23-NEXT: entry: 4788 // CK23-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 4789 // CK23-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4 4790 // CK23-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 4791 // 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 4 4794 // CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 4795 // CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4 4796 // CK23-NEXT: ret void 4797 // 4798 // 4799 // CK23-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 4800 // 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 4 4803 // CK23-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 4804 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4805 // CK23-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 4806 // CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4807 // CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 4808 // 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 void 4810 // 4811 // 4812 // CK23-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 4813 // 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 4 4816 // CK23-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 4817 // CK23-NEXT: [[LA:%.*]] = alloca ptr, align 4 4818 // CK23-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 4819 // CK23-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 4820 // CK23-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 4821 // CK23-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 4822 // CK23-NEXT: [[DOTOFFLOAD_BASEPTRS2:%.*]] = alloca [2 x ptr], align 4 4823 // CK23-NEXT: [[DOTOFFLOAD_PTRS3:%.*]] = alloca [2 x ptr], align 4 4824 // CK23-NEXT: [[DOTOFFLOAD_MAPPERS4:%.*]] = alloca [2 x ptr], align 4 4825 // CK23-NEXT: [[DOTOFFLOAD_SIZES:%.*]] = alloca [2 x i64], align 4 4826 // CK23-NEXT: [[KERNEL_ARGS5:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4827 // CK23-NEXT: [[DOTOFFLOAD_BASEPTRS10:%.*]] = alloca [3 x ptr], align 4 4828 // CK23-NEXT: [[DOTOFFLOAD_PTRS11:%.*]] = alloca [3 x ptr], align 4 4829 // CK23-NEXT: [[DOTOFFLOAD_MAPPERS12:%.*]] = alloca [3 x ptr], align 4 4830 // CK23-NEXT: [[DOTOFFLOAD_SIZES13:%.*]] = alloca [3 x i64], align 4 4831 // CK23-NEXT: [[KERNEL_ARGS14:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS]], align 8 4832 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 4833 // CK23-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 4834 // CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 4835 // CK23-NEXT: store ptr null, ptr [[LA]], align 4 4836 // CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 4837 // CK23-NEXT: [[TMP0:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4838 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP0]], align 4 4839 // CK23-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4840 // CK23-NEXT: store ptr [[A]], ptr [[TMP1]], align 4 4841 // CK23-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 4842 // CK23-NEXT: store ptr null, ptr [[TMP2]], align 4 4843 // CK23-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 4844 // CK23-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 4845 // CK23-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 4846 // CK23-NEXT: store i32 3, ptr [[TMP5]], align 4 4847 // CK23-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 4848 // CK23-NEXT: store i32 1, ptr [[TMP6]], align 4 4849 // CK23-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 4850 // CK23-NEXT: store ptr [[TMP3]], ptr [[TMP7]], align 4 4851 // CK23-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 4852 // CK23-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 4853 // CK23-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 4854 // CK23-NEXT: store ptr @.offload_sizes, ptr [[TMP9]], align 4 4855 // CK23-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 4856 // CK23-NEXT: store ptr @.offload_maptypes, ptr [[TMP10]], align 4 4857 // CK23-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 4858 // CK23-NEXT: store ptr null, ptr [[TMP11]], align 4 4859 // CK23-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 4860 // CK23-NEXT: store ptr null, ptr [[TMP12]], align 4 4861 // CK23-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 4862 // CK23-NEXT: store i64 0, ptr [[TMP13]], align 8 4863 // CK23-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 4864 // CK23-NEXT: store i64 0, ptr [[TMP14]], align 8 4865 // CK23-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 4866 // CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP15]], align 4 4867 // CK23-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 4868 // CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP16]], align 4 4869 // CK23-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 4870 // CK23-NEXT: store i32 0, ptr [[TMP17]], align 4 4871 // 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]], 0 4873 // 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 1 4879 // CK23-NEXT: [[TMP20:%.*]] = load ptr, ptr [[B]], align 4 4880 // CK23-NEXT: [[TMP21:%.*]] = getelementptr ptr, ptr [[B]], i32 1 4881 // CK23-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[TMP21]] to i64 4882 // CK23-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[B]] to i64 4883 // 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 0 4887 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP26]], align 4 4888 // CK23-NEXT: [[TMP27:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4889 // CK23-NEXT: store ptr [[B]], ptr [[TMP27]], align 4 4890 // CK23-NEXT: [[TMP28:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4891 // CK23-NEXT: store i64 [[TMP25]], ptr [[TMP28]], align 4 4892 // CK23-NEXT: [[TMP29:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 0 4893 // CK23-NEXT: store ptr null, ptr [[TMP29]], align 4 4894 // CK23-NEXT: [[TMP30:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 1 4895 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP30]], align 4 4896 // CK23-NEXT: [[TMP31:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 1 4897 // CK23-NEXT: store ptr [[TMP20]], ptr [[TMP31]], align 4 4898 // CK23-NEXT: [[TMP32:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_MAPPERS4]], i32 0, i32 1 4899 // CK23-NEXT: store ptr null, ptr [[TMP32]], align 4 4900 // CK23-NEXT: [[TMP33:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_BASEPTRS2]], i32 0, i32 0 4901 // CK23-NEXT: [[TMP34:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOFFLOAD_PTRS3]], i32 0, i32 0 4902 // CK23-NEXT: [[TMP35:%.*]] = getelementptr inbounds [2 x i64], ptr [[DOTOFFLOAD_SIZES]], i32 0, i32 0 4903 // CK23-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 0 4904 // CK23-NEXT: store i32 3, ptr [[TMP36]], align 4 4905 // CK23-NEXT: [[TMP37:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 1 4906 // CK23-NEXT: store i32 2, ptr [[TMP37]], align 4 4907 // CK23-NEXT: [[TMP38:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 2 4908 // CK23-NEXT: store ptr [[TMP33]], ptr [[TMP38]], align 4 4909 // CK23-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 3 4910 // CK23-NEXT: store ptr [[TMP34]], ptr [[TMP39]], align 4 4911 // CK23-NEXT: [[TMP40:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 4 4912 // CK23-NEXT: store ptr [[TMP35]], ptr [[TMP40]], align 4 4913 // CK23-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 5 4914 // CK23-NEXT: store ptr @.offload_maptypes.2, ptr [[TMP41]], align 4 4915 // CK23-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 6 4916 // CK23-NEXT: store ptr null, ptr [[TMP42]], align 4 4917 // CK23-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 7 4918 // CK23-NEXT: store ptr null, ptr [[TMP43]], align 4 4919 // CK23-NEXT: [[TMP44:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 8 4920 // CK23-NEXT: store i64 0, ptr [[TMP44]], align 8 4921 // CK23-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 9 4922 // CK23-NEXT: store i64 0, ptr [[TMP45]], align 8 4923 // CK23-NEXT: [[TMP46:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 10 4924 // CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP46]], align 4 4925 // CK23-NEXT: [[TMP47:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 11 4926 // CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP47]], align 4 4927 // CK23-NEXT: [[TMP48:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS5]], i32 0, i32 12 4928 // CK23-NEXT: store i32 0, ptr [[TMP48]], align 4 4929 // 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]], 0 4931 // 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 0 4937 // CK23-NEXT: [[B9:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 4938 // CK23-NEXT: [[TMP51:%.*]] = load ptr, ptr [[B9]], align 4 4939 // CK23-NEXT: [[TMP52:%.*]] = getelementptr ptr, ptr [[B9]], i32 1 4940 // CK23-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[TMP52]] to i64 4941 // CK23-NEXT: [[TMP54:%.*]] = ptrtoint ptr [[A8]] to i64 4942 // 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 0 4946 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP57]], align 4 4947 // CK23-NEXT: [[TMP58:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4948 // CK23-NEXT: store ptr [[A8]], ptr [[TMP58]], align 4 4949 // CK23-NEXT: [[TMP59:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4950 // CK23-NEXT: store i64 [[TMP56]], ptr [[TMP59]], align 4 4951 // CK23-NEXT: [[TMP60:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 0 4952 // CK23-NEXT: store ptr null, ptr [[TMP60]], align 4 4953 // CK23-NEXT: [[TMP61:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 1 4954 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP61]], align 4 4955 // CK23-NEXT: [[TMP62:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 1 4956 // CK23-NEXT: store ptr [[A8]], ptr [[TMP62]], align 4 4957 // CK23-NEXT: [[TMP63:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 1 4958 // CK23-NEXT: store ptr null, ptr [[TMP63]], align 4 4959 // CK23-NEXT: [[TMP64:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 2 4960 // CK23-NEXT: store ptr [[THIS1]], ptr [[TMP64]], align 4 4961 // CK23-NEXT: [[TMP65:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 2 4962 // CK23-NEXT: store ptr [[TMP51]], ptr [[TMP65]], align 4 4963 // CK23-NEXT: [[TMP66:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_MAPPERS12]], i32 0, i32 2 4964 // CK23-NEXT: store ptr null, ptr [[TMP66]], align 4 4965 // CK23-NEXT: [[TMP67:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_BASEPTRS10]], i32 0, i32 0 4966 // CK23-NEXT: [[TMP68:%.*]] = getelementptr inbounds [3 x ptr], ptr [[DOTOFFLOAD_PTRS11]], i32 0, i32 0 4967 // CK23-NEXT: [[TMP69:%.*]] = getelementptr inbounds [3 x i64], ptr [[DOTOFFLOAD_SIZES13]], i32 0, i32 0 4968 // CK23-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 0 4969 // CK23-NEXT: store i32 3, ptr [[TMP70]], align 4 4970 // CK23-NEXT: [[TMP71:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 1 4971 // CK23-NEXT: store i32 3, ptr [[TMP71]], align 4 4972 // CK23-NEXT: [[TMP72:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 2 4973 // CK23-NEXT: store ptr [[TMP67]], ptr [[TMP72]], align 4 4974 // CK23-NEXT: [[TMP73:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 3 4975 // CK23-NEXT: store ptr [[TMP68]], ptr [[TMP73]], align 4 4976 // CK23-NEXT: [[TMP74:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 4 4977 // CK23-NEXT: store ptr [[TMP69]], ptr [[TMP74]], align 4 4978 // CK23-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 5 4979 // CK23-NEXT: store ptr @.offload_maptypes.4, ptr [[TMP75]], align 4 4980 // CK23-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 6 4981 // CK23-NEXT: store ptr null, ptr [[TMP76]], align 4 4982 // CK23-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 7 4983 // CK23-NEXT: store ptr null, ptr [[TMP77]], align 4 4984 // CK23-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 8 4985 // CK23-NEXT: store i64 0, ptr [[TMP78]], align 8 4986 // CK23-NEXT: [[TMP79:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 9 4987 // CK23-NEXT: store i64 0, ptr [[TMP79]], align 8 4988 // CK23-NEXT: [[TMP80:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 10 4989 // CK23-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP80]], align 4 4990 // CK23-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 11 4991 // CK23-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP81]], align 4 4992 // CK23-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS14]], i32 0, i32 12 4993 // CK23-NEXT: store i32 0, ptr [[TMP82]], align 4 4994 // 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]], 0 4996 // 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 void 5002 // 5003 // 5004 // CK23-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 5005 // 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 4 5008 // CK23-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 5009 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5010 // CK23-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 5011 // CK23-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5012 // CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5013 // CK23-NEXT: store ptr null, ptr [[A]], align 4 5014 // CK23-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5015 // CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 5016 // CK23-NEXT: store ptr [[TMP0]], ptr [[B2]], align 4 5017 // CK23-NEXT: ret void 5018 // 5019 // 5020 // CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l112 5021 // CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1:[0-9]+]] { 5022 // CK23-NEXT: entry: 5023 // CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 5024 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5025 // CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5026 // CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 5027 // CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 5028 // CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 5029 // CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 5030 // CK23-NEXT: ret void 5031 // 5032 // 5033 // CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l118 5034 // CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 5035 // CK23-NEXT: entry: 5036 // CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 5037 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5038 // CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5039 // CK23-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 1 5040 // CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 4 5041 // CK23-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 4 5042 // CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 5043 // CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[TMP1]], align 4 5044 // CK23-NEXT: ret void 5045 // 5046 // 5047 // CK23-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__ZN2STIdE3fooERPd_l125 5048 // CK23-SAME: (ptr noundef [[THIS:%.*]]) #[[ATTR1]] { 5049 // CK23-NEXT: entry: 5050 // CK23-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4 5051 // CK23-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5052 // CK23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5053 // CK23-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[TMP0]], i32 0, i32 0 5054 // CK23-NEXT: [[TMP1:%.*]] = load ptr, ptr [[A]], align 4 5055 // CK23-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP1]], i32 1 5056 // CK23-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 5057 // CK23-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[TMP0]], i32 0, i32 1 5058 // CK23-NEXT: [[TMP2:%.*]] = load ptr, ptr [[B]], align 4 5059 // CK23-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 4 5060 // CK23-NEXT: [[INCDEC_PTR1:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 5061 // CK23-NEXT: store ptr [[INCDEC_PTR1]], ptr [[TMP2]], align 4 5062 // CK23-NEXT: ret void 5063 // 5064 // 5065 // SIMD-ONLY10-LABEL: define {{[^@]+}}@_Z3barPd 5066 // SIMD-ONLY10-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 5067 // SIMD-ONLY10-NEXT: entry: 5068 // SIMD-ONLY10-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 5069 // SIMD-ONLY10-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8 5070 // SIMD-ONLY10-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 5071 // 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 8 5074 // SIMD-ONLY10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5075 // SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8 5076 // SIMD-ONLY10-NEXT: ret void 5077 // 5078 // 5079 // SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 5080 // 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 8 5083 // SIMD-ONLY10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 5084 // SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5085 // SIMD-ONLY10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 5086 // SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5087 // SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 5088 // 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 void 5090 // 5091 // 5092 // SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 5093 // 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 8 5096 // SIMD-ONLY10-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 5097 // SIMD-ONLY10-NEXT: [[LA:%.*]] = alloca ptr, align 8 5098 // SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5099 // SIMD-ONLY10-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 5100 // SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5101 // SIMD-ONLY10-NEXT: store ptr null, ptr [[LA]], align 8 5102 // SIMD-ONLY10-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5103 // SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 8 5104 // SIMD-ONLY10-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5105 // SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 5106 // SIMD-ONLY10-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5107 // SIMD-ONLY10-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8 5108 // SIMD-ONLY10-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8 5109 // SIMD-ONLY10-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 5110 // SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 8 5111 // SIMD-ONLY10-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 0 5112 // SIMD-ONLY10-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 8 5113 // SIMD-ONLY10-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 5114 // SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 8 5115 // SIMD-ONLY10-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5116 // SIMD-ONLY10-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 8 5117 // SIMD-ONLY10-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 8 5118 // SIMD-ONLY10-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 1 5119 // SIMD-ONLY10-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 8 5120 // SIMD-ONLY10-NEXT: ret void 5121 // 5122 // 5123 // SIMD-ONLY10-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 5124 // 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 8 5127 // SIMD-ONLY10-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 5128 // SIMD-ONLY10-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5129 // SIMD-ONLY10-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 5130 // SIMD-ONLY10-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5131 // SIMD-ONLY10-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5132 // SIMD-ONLY10-NEXT: store ptr null, ptr [[A]], align 8 5133 // SIMD-ONLY10-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5134 // SIMD-ONLY10-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 5135 // SIMD-ONLY10-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8 5136 // SIMD-ONLY10-NEXT: ret void 5137 // 5138 // 5139 // SIMD-ONLY11-LABEL: define {{[^@]+}}@_Z3barPd 5140 // SIMD-ONLY11-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 5141 // SIMD-ONLY11-NEXT: entry: 5142 // SIMD-ONLY11-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 5143 // SIMD-ONLY11-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 8 5144 // SIMD-ONLY11-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 5145 // 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 8 5148 // SIMD-ONLY11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5149 // SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 8 5150 // SIMD-ONLY11-NEXT: ret void 5151 // 5152 // 5153 // SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 5154 // 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 8 5157 // SIMD-ONLY11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 5158 // SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5159 // SIMD-ONLY11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 5160 // SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5161 // SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 5162 // 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 void 5164 // 5165 // 5166 // SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 5167 // 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 8 5170 // SIMD-ONLY11-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 8 5171 // SIMD-ONLY11-NEXT: [[LA:%.*]] = alloca ptr, align 8 5172 // SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5173 // SIMD-ONLY11-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 8 5174 // SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5175 // SIMD-ONLY11-NEXT: store ptr null, ptr [[LA]], align 8 5176 // SIMD-ONLY11-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5177 // SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 8 5178 // SIMD-ONLY11-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5179 // SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 8 5180 // SIMD-ONLY11-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5181 // SIMD-ONLY11-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 8 5182 // SIMD-ONLY11-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8 5183 // SIMD-ONLY11-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 5184 // SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 8 5185 // SIMD-ONLY11-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 0 5186 // SIMD-ONLY11-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 8 5187 // SIMD-ONLY11-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 5188 // SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 8 5189 // SIMD-ONLY11-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5190 // SIMD-ONLY11-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 8 5191 // SIMD-ONLY11-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 8 5192 // SIMD-ONLY11-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 1 5193 // SIMD-ONLY11-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 8 5194 // SIMD-ONLY11-NEXT: ret void 5195 // 5196 // 5197 // SIMD-ONLY11-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 5198 // 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 8 5201 // SIMD-ONLY11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8 5202 // SIMD-ONLY11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8 5203 // SIMD-ONLY11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8 5204 // SIMD-ONLY11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8 5205 // SIMD-ONLY11-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5206 // SIMD-ONLY11-NEXT: store ptr null, ptr [[A]], align 8 5207 // SIMD-ONLY11-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5208 // SIMD-ONLY11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 8 5209 // SIMD-ONLY11-NEXT: store ptr [[TMP0]], ptr [[B2]], align 8 5210 // SIMD-ONLY11-NEXT: ret void 5211 // 5212 // 5213 // SIMD-ONLY12-LABEL: define {{[^@]+}}@_Z3barPd 5214 // SIMD-ONLY12-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 5215 // SIMD-ONLY12-NEXT: entry: 5216 // SIMD-ONLY12-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 5217 // SIMD-ONLY12-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4 5218 // SIMD-ONLY12-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 5219 // 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 4 5222 // SIMD-ONLY12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5223 // SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4 5224 // SIMD-ONLY12-NEXT: ret void 5225 // 5226 // 5227 // SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 5228 // 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 4 5231 // SIMD-ONLY12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 5232 // SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5233 // SIMD-ONLY12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 5234 // SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5235 // SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 5236 // 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 void 5238 // 5239 // 5240 // SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 5241 // 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 4 5244 // SIMD-ONLY12-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 5245 // SIMD-ONLY12-NEXT: [[LA:%.*]] = alloca ptr, align 4 5246 // SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5247 // SIMD-ONLY12-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 5248 // SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5249 // SIMD-ONLY12-NEXT: store ptr null, ptr [[LA]], align 4 5250 // SIMD-ONLY12-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5251 // SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 4 5252 // SIMD-ONLY12-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5253 // SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 5254 // SIMD-ONLY12-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5255 // SIMD-ONLY12-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 4 5256 // SIMD-ONLY12-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 4 5257 // SIMD-ONLY12-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 5258 // SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 4 5259 // SIMD-ONLY12-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 0 5260 // SIMD-ONLY12-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 4 5261 // SIMD-ONLY12-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 5262 // SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 4 5263 // SIMD-ONLY12-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5264 // SIMD-ONLY12-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 4 5265 // SIMD-ONLY12-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 4 5266 // SIMD-ONLY12-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 1 5267 // SIMD-ONLY12-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 4 5268 // SIMD-ONLY12-NEXT: ret void 5269 // 5270 // 5271 // SIMD-ONLY12-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 5272 // 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 4 5275 // SIMD-ONLY12-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 5276 // SIMD-ONLY12-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5277 // SIMD-ONLY12-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 5278 // SIMD-ONLY12-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5279 // SIMD-ONLY12-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5280 // SIMD-ONLY12-NEXT: store ptr null, ptr [[A]], align 4 5281 // SIMD-ONLY12-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5282 // SIMD-ONLY12-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 5283 // SIMD-ONLY12-NEXT: store ptr [[TMP0]], ptr [[B2]], align 4 5284 // SIMD-ONLY12-NEXT: ret void 5285 // 5286 // 5287 // SIMD-ONLY13-LABEL: define {{[^@]+}}@_Z3barPd 5288 // SIMD-ONLY13-SAME: (ptr noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 5289 // SIMD-ONLY13-NEXT: entry: 5290 // SIMD-ONLY13-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 5291 // SIMD-ONLY13-NEXT: [[A:%.*]] = alloca [[STRUCT_ST:%.*]], align 4 5292 // SIMD-ONLY13-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 5293 // 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 4 5296 // SIMD-ONLY13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5297 // SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR]], ptr [[ARG_ADDR]], align 4 5298 // SIMD-ONLY13-NEXT: ret void 5299 // 5300 // 5301 // SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdEC1ERPd 5302 // 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 4 5305 // SIMD-ONLY13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 5306 // SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5307 // SIMD-ONLY13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 5308 // SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5309 // SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 5310 // 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 void 5312 // 5313 // 5314 // SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdE3fooERPd 5315 // 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 4 5318 // SIMD-ONLY13-NEXT: [[ARG_ADDR:%.*]] = alloca ptr, align 4 5319 // SIMD-ONLY13-NEXT: [[LA:%.*]] = alloca ptr, align 4 5320 // SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5321 // SIMD-ONLY13-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]], align 4 5322 // SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5323 // SIMD-ONLY13-NEXT: store ptr null, ptr [[LA]], align 4 5324 // SIMD-ONLY13-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5325 // SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[A]], align 4 5326 // SIMD-ONLY13-NEXT: [[INCDEC_PTR:%.*]] = getelementptr inbounds nuw double, ptr [[TMP0]], i32 1 5327 // SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR]], ptr [[A]], align 4 5328 // SIMD-ONLY13-NEXT: [[B:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5329 // SIMD-ONLY13-NEXT: [[TMP1:%.*]] = load ptr, ptr [[B]], align 4 5330 // SIMD-ONLY13-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 4 5331 // SIMD-ONLY13-NEXT: [[INCDEC_PTR2:%.*]] = getelementptr inbounds nuw double, ptr [[TMP2]], i32 1 5332 // SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR2]], ptr [[TMP1]], align 4 5333 // SIMD-ONLY13-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 0 5334 // SIMD-ONLY13-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A3]], align 4 5335 // SIMD-ONLY13-NEXT: [[INCDEC_PTR4:%.*]] = getelementptr inbounds nuw double, ptr [[TMP3]], i32 1 5336 // SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR4]], ptr [[A3]], align 4 5337 // SIMD-ONLY13-NEXT: [[B5:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5338 // SIMD-ONLY13-NEXT: [[TMP4:%.*]] = load ptr, ptr [[B5]], align 4 5339 // SIMD-ONLY13-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 4 5340 // SIMD-ONLY13-NEXT: [[INCDEC_PTR6:%.*]] = getelementptr inbounds nuw double, ptr [[TMP5]], i32 1 5341 // SIMD-ONLY13-NEXT: store ptr [[INCDEC_PTR6]], ptr [[TMP4]], align 4 5342 // SIMD-ONLY13-NEXT: ret void 5343 // 5344 // 5345 // SIMD-ONLY13-LABEL: define {{[^@]+}}@_ZN2STIdEC2ERPd 5346 // 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 4 5349 // SIMD-ONLY13-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4 5350 // SIMD-ONLY13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4 5351 // SIMD-ONLY13-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4 5352 // SIMD-ONLY13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4 5353 // SIMD-ONLY13-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_ST:%.*]], ptr [[THIS1]], i32 0, i32 0 5354 // SIMD-ONLY13-NEXT: store ptr null, ptr [[A]], align 4 5355 // SIMD-ONLY13-NEXT: [[B2:%.*]] = getelementptr inbounds nuw [[STRUCT_ST]], ptr [[THIS1]], i32 0, i32 1 5356 // SIMD-ONLY13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B_ADDR]], align 4 5357 // SIMD-ONLY13-NEXT: store ptr [[TMP0]], ptr [[B2]], align 4 5358 // SIMD-ONLY13-NEXT: ret void 5359 // 5360 // 5361 // CK30-LABEL: define {{[^@]+}}@_Z3barv 5362 // CK30-SAME: () #[[ATTR0:[0-9]+]] { 5363 // CK30-NEXT: entry: 5364 // CK30-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5365 // CK30-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 5366 // CK30-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 5367 // CK30-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 5368 // CK30-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 5369 // CK30-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5370 // CK30-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5371 // CK30-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 5372 // CK30-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5373 // CK30-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 5374 // CK30-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 5375 // CK30-NEXT: store ptr null, ptr [[TMP3]], align 8 5376 // CK30-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5377 // CK30-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5378 // CK30-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 5379 // CK30-NEXT: store i32 3, ptr [[TMP6]], align 4 5380 // CK30-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 5381 // CK30-NEXT: store i32 1, ptr [[TMP7]], align 4 5382 // CK30-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 5383 // CK30-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 5384 // CK30-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 5385 // CK30-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 5386 // CK30-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 5387 // CK30-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 5388 // CK30-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 5389 // CK30-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 5390 // CK30-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 5391 // CK30-NEXT: store ptr null, ptr [[TMP12]], align 8 5392 // CK30-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 5393 // CK30-NEXT: store ptr null, ptr [[TMP13]], align 8 5394 // CK30-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 5395 // CK30-NEXT: store i64 0, ptr [[TMP14]], align 8 5396 // CK30-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 5397 // CK30-NEXT: store i64 0, ptr [[TMP15]], align 8 5398 // CK30-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 5399 // CK30-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 5400 // CK30-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 5401 // CK30-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 5402 // CK30-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 5403 // CK30-NEXT: store i32 0, ptr [[TMP18]], align 4 5404 // 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]], 0 5406 // 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 void 5412 // 5413 // 5414 // CK30-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 5415 // CK30-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 5416 // CK30-NEXT: entry: 5417 // CK30-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 8 5418 // CK30-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 8 5419 // CK30-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 8 5420 // CK30-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 8 5421 // CK30-NEXT: ret void 5422 // 5423 // 5424 // CK31-LABEL: define {{[^@]+}}@_Z3barv 5425 // CK31-SAME: () #[[ATTR0:[0-9]+]] { 5426 // CK31-NEXT: entry: 5427 // CK31-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5428 // CK31-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8 5429 // CK31-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8 5430 // CK31-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8 5431 // CK31-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 5432 // CK31-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5433 // CK31-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5434 // CK31-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 5435 // CK31-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5436 // CK31-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 8 5437 // CK31-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i64 0, i64 0 5438 // CK31-NEXT: store ptr null, ptr [[TMP3]], align 8 5439 // CK31-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5440 // CK31-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5441 // CK31-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 5442 // CK31-NEXT: store i32 3, ptr [[TMP6]], align 4 5443 // CK31-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 5444 // CK31-NEXT: store i32 1, ptr [[TMP7]], align 4 5445 // CK31-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 5446 // CK31-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 8 5447 // CK31-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 5448 // CK31-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 8 5449 // CK31-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 5450 // CK31-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 8 5451 // CK31-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 5452 // CK31-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 8 5453 // CK31-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 5454 // CK31-NEXT: store ptr null, ptr [[TMP12]], align 8 5455 // CK31-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 5456 // CK31-NEXT: store ptr null, ptr [[TMP13]], align 8 5457 // CK31-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 5458 // CK31-NEXT: store i64 0, ptr [[TMP14]], align 8 5459 // CK31-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 5460 // CK31-NEXT: store i64 0, ptr [[TMP15]], align 8 5461 // CK31-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 5462 // CK31-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 5463 // CK31-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 5464 // CK31-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 5465 // CK31-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 5466 // CK31-NEXT: store i32 0, ptr [[TMP18]], align 4 5467 // 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]], 0 5469 // 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 void 5475 // 5476 // 5477 // CK31-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 5478 // CK31-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 5479 // CK31-NEXT: entry: 5480 // CK31-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 8 5481 // CK31-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 8 5482 // CK31-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 8 5483 // CK31-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 8 5484 // CK31-NEXT: ret void 5485 // 5486 // 5487 // CK32-LABEL: define {{[^@]+}}@_Z3barv 5488 // CK32-SAME: () #[[ATTR0:[0-9]+]] { 5489 // CK32-NEXT: entry: 5490 // CK32-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5491 // CK32-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 5492 // CK32-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 5493 // CK32-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 5494 // CK32-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 5495 // CK32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5496 // CK32-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5497 // CK32-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 5498 // CK32-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5499 // CK32-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 5500 // CK32-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 5501 // CK32-NEXT: store ptr null, ptr [[TMP3]], align 4 5502 // CK32-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5503 // CK32-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5504 // CK32-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 5505 // CK32-NEXT: store i32 3, ptr [[TMP6]], align 4 5506 // CK32-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 5507 // CK32-NEXT: store i32 1, ptr [[TMP7]], align 4 5508 // CK32-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 5509 // CK32-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 5510 // CK32-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 5511 // CK32-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 5512 // CK32-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 5513 // CK32-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 5514 // CK32-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 5515 // CK32-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 5516 // CK32-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 5517 // CK32-NEXT: store ptr null, ptr [[TMP12]], align 4 5518 // CK32-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 5519 // CK32-NEXT: store ptr null, ptr [[TMP13]], align 4 5520 // CK32-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 5521 // CK32-NEXT: store i64 0, ptr [[TMP14]], align 8 5522 // CK32-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 5523 // CK32-NEXT: store i64 0, ptr [[TMP15]], align 8 5524 // CK32-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 5525 // CK32-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 5526 // CK32-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 5527 // CK32-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 5528 // CK32-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 5529 // CK32-NEXT: store i32 0, ptr [[TMP18]], align 4 5530 // 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]], 0 5532 // 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 void 5538 // 5539 // 5540 // CK32-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 5541 // CK32-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 5542 // CK32-NEXT: entry: 5543 // CK32-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 4 5544 // CK32-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 4 5545 // CK32-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 4 5546 // CK32-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 4 5547 // CK32-NEXT: ret void 5548 // 5549 // 5550 // CK33-LABEL: define {{[^@]+}}@_Z3barv 5551 // CK33-SAME: () #[[ATTR0:[0-9]+]] { 5552 // CK33-NEXT: entry: 5553 // CK33-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5554 // CK33-NEXT: [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 4 5555 // CK33-NEXT: [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 4 5556 // CK33-NEXT: [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 4 5557 // CK33-NEXT: [[KERNEL_ARGS:%.*]] = alloca [[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8 5558 // CK33-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5559 // CK33-NEXT: [[TMP1:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5560 // CK33-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 4 5561 // CK33-NEXT: [[TMP2:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5562 // CK33-NEXT: store ptr [[TMP0]], ptr [[TMP2]], align 4 5563 // CK33-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_MAPPERS]], i32 0, i32 0 5564 // CK33-NEXT: store ptr null, ptr [[TMP3]], align 4 5565 // CK33-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_BASEPTRS]], i32 0, i32 0 5566 // CK33-NEXT: [[TMP5:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOFFLOAD_PTRS]], i32 0, i32 0 5567 // CK33-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 0 5568 // CK33-NEXT: store i32 3, ptr [[TMP6]], align 4 5569 // CK33-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 1 5570 // CK33-NEXT: store i32 1, ptr [[TMP7]], align 4 5571 // CK33-NEXT: [[TMP8:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 2 5572 // CK33-NEXT: store ptr [[TMP4]], ptr [[TMP8]], align 4 5573 // CK33-NEXT: [[TMP9:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 3 5574 // CK33-NEXT: store ptr [[TMP5]], ptr [[TMP9]], align 4 5575 // CK33-NEXT: [[TMP10:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 4 5576 // CK33-NEXT: store ptr @.offload_sizes, ptr [[TMP10]], align 4 5577 // CK33-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 5 5578 // CK33-NEXT: store ptr @.offload_maptypes, ptr [[TMP11]], align 4 5579 // CK33-NEXT: [[TMP12:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 6 5580 // CK33-NEXT: store ptr null, ptr [[TMP12]], align 4 5581 // CK33-NEXT: [[TMP13:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 7 5582 // CK33-NEXT: store ptr null, ptr [[TMP13]], align 4 5583 // CK33-NEXT: [[TMP14:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 8 5584 // CK33-NEXT: store i64 0, ptr [[TMP14]], align 8 5585 // CK33-NEXT: [[TMP15:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 9 5586 // CK33-NEXT: store i64 0, ptr [[TMP15]], align 8 5587 // CK33-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 10 5588 // CK33-NEXT: store [3 x i32] [i32 -1, i32 0, i32 0], ptr [[TMP16]], align 4 5589 // CK33-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 11 5590 // CK33-NEXT: store [3 x i32] zeroinitializer, ptr [[TMP17]], align 4 5591 // CK33-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [[STRUCT___TGT_KERNEL_ARGUMENTS]], ptr [[KERNEL_ARGS]], i32 0, i32 12 5592 // CK33-NEXT: store i32 0, ptr [[TMP18]], align 4 5593 // 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]], 0 5595 // 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 void 5601 // 5602 // 5603 // CK33-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}__Z3barv_l159 5604 // CK33-SAME: (ptr noundef [[PTR:%.*]]) #[[ATTR1:[0-9]+]] { 5605 // CK33-NEXT: entry: 5606 // CK33-NEXT: [[PTR_ADDR:%.*]] = alloca ptr, align 4 5607 // CK33-NEXT: store ptr [[PTR]], ptr [[PTR_ADDR]], align 4 5608 // CK33-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR_ADDR]], align 4 5609 // CK33-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 4 5610 // CK33-NEXT: ret void 5611 // 5612 // 5613 // SIMD-ONLY20-LABEL: define {{[^@]+}}@_Z3barv 5614 // SIMD-ONLY20-SAME: () #[[ATTR0:[0-9]+]] { 5615 // SIMD-ONLY20-NEXT: entry: 5616 // SIMD-ONLY20-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5617 // SIMD-ONLY20-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5618 // SIMD-ONLY20-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 8 5619 // SIMD-ONLY20-NEXT: ret void 5620 // 5621 // 5622 // SIMD-ONLY21-LABEL: define {{[^@]+}}@_Z3barv 5623 // SIMD-ONLY21-SAME: () #[[ATTR0:[0-9]+]] { 5624 // SIMD-ONLY21-NEXT: entry: 5625 // SIMD-ONLY21-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5626 // SIMD-ONLY21-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5627 // SIMD-ONLY21-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 8 5628 // SIMD-ONLY21-NEXT: ret void 5629 // 5630 // 5631 // SIMD-ONLY22-LABEL: define {{[^@]+}}@_Z3barv 5632 // SIMD-ONLY22-SAME: () #[[ATTR0:[0-9]+]] { 5633 // SIMD-ONLY22-NEXT: entry: 5634 // SIMD-ONLY22-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5635 // SIMD-ONLY22-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5636 // SIMD-ONLY22-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 4 5637 // SIMD-ONLY22-NEXT: ret void 5638 // 5639 // 5640 // SIMD-ONLY23-LABEL: define {{[^@]+}}@_Z3barv 5641 // SIMD-ONLY23-SAME: () #[[ATTR0:[0-9]+]] { 5642 // SIMD-ONLY23-NEXT: entry: 5643 // SIMD-ONLY23-NEXT: [[PTR:%.*]] = alloca ptr, align 64 5644 // SIMD-ONLY23-NEXT: [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 64 5645 // SIMD-ONLY23-NEXT: store double 0.000000e+00, ptr [[TMP0]], align 4 5646 // SIMD-ONLY23-NEXT: ret void 5647 // 5648