; LLVM IR from libxsmm/libxsmm :: src (generator_common_aarch64)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str.1 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [286 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [296 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [286 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [296 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [281 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [271 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [271 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [271 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [276 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [281 x i8], align 1
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c0_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c1_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c2_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.idx_array = external hidden unnamed_addr constant [4 x i32], align 16
@__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd = external hidden unnamed_addr constant [558 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i64 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12, i32 noundef %13, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21, i32 noundef %22) #3 {
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca [16 x i32], align 16
  %53 = alloca [16 x i32], align 16
  %54 = alloca [16 x i32], align 16
  %55 = alloca [4 x i32], align 16
  store ptr %0, ptr %24, align 8, !tbaa !5
  store i32 %1, ptr %25, align 4, !tbaa !9
  store i32 %2, ptr %26, align 4, !tbaa !9
  store i32 %3, ptr %27, align 4, !tbaa !9
  store i32 %4, ptr %28, align 4, !tbaa !9
  store i32 %5, ptr %29, align 4, !tbaa !9
  store i32 %6, ptr %30, align 4, !tbaa !9
  store i32 %7, ptr %31, align 4, !tbaa !9
  store i32 %8, ptr %32, align 4, !tbaa !9
  store i32 %9, ptr %33, align 4, !tbaa !9
  store i32 %10, ptr %34, align 4, !tbaa !9
  store i32 %11, ptr %35, align 4, !tbaa !9
  store i32 %12, ptr %36, align 4, !tbaa !9
  store i32 %13, ptr %37, align 4, !tbaa !9
  store i32 %14, ptr %38, align 4, !tbaa !9
  store i32 %15, ptr %39, align 4, !tbaa !9
  store i32 %16, ptr %40, align 4, !tbaa !9
  store i32 %17, ptr %41, align 4, !tbaa !9
  store i32 %18, ptr %42, align 4, !tbaa !9
  store i32 %19, ptr %43, align 4, !tbaa !9
  store i32 %20, ptr %44, align 4, !tbaa !9
  store i32 %21, ptr %45, align 4, !tbaa !9
  store i32 %22, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  store i64 1083138047, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  store i64 2147483647, ptr %48, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  store i64 1079863241, ptr %49, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  store i64 1262485504, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  store i64 1056964608, ptr %51, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c0_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %53, ptr align 16 @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c1_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %54) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %54, ptr align 16 @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c2_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %55, ptr align 16 @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.idx_array, i64 16, i1 false)
  %56 = load ptr, ptr %24, align 8, !tbaa !5
  %57 = load i32, ptr %25, align 4, !tbaa !9
  %58 = trunc i32 %57 to i8
  %59 = zext i8 %58 to i32
  %60 = icmp eq i32 0, %59
  br i1 %60, label %66, label %61

61:                                               ; preds = %23
  %62 = load i32, ptr %25, align 4, !tbaa !9
  %63 = trunc i32 %62 to i8
  %64 = zext i8 %63 to i32
  %65 = icmp slt i32 0, %64
  br i1 %65, label %66, label %84

66:                                               ; preds = %61, %23
  %67 = load i32, ptr %25, align 4, !tbaa !9
  %68 = zext i32 %67 to i64
  %69 = mul i64 1, %68
  %70 = icmp ult i64 %69, 255
  br i1 %70, label %71, label %75

71:                                               ; preds = %66
  %72 = load i32, ptr %25, align 4, !tbaa !9
  %73 = zext i32 %72 to i64
  %74 = mul i64 1, %73
  br label %76

75:                                               ; preds = %66
  br label %76

76:                                               ; preds = %75, %71
  %77 = phi i64 [ %74, %71 ], [ 255, %75 ]
  %78 = icmp ule i64 %77, 255
  br i1 %78, label %79, label %84

79:                                               ; preds = %76
  %80 = load i32, ptr %25, align 4, !tbaa !9
  %81 = uitofp i32 %80 to double
  %82 = fcmp ole double 0.000000e+00, %81
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  br label %85

84:                                               ; preds = %79, %76, %61
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 2729, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

85:                                               ; preds = %83
  %86 = load i32, ptr %25, align 4, !tbaa !9
  %87 = trunc i32 %86 to i8
  %88 = load i32, ptr %44, align 4, !tbaa !9
  %89 = load i32, ptr %46, align 4, !tbaa !9
  %90 = load i64, ptr %47, align 8, !tbaa !11
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %56, i8 noundef zeroext %87, i32 noundef %88, i32 noundef %89, i64 noundef %90)
  %91 = load ptr, ptr %24, align 8, !tbaa !5
  %92 = load i32, ptr %26, align 4, !tbaa !9
  %93 = trunc i32 %92 to i8
  %94 = zext i8 %93 to i32
  %95 = icmp eq i32 0, %94
  br i1 %95, label %101, label %96

96:                                               ; preds = %85
  %97 = load i32, ptr %26, align 4, !tbaa !9
  %98 = trunc i32 %97 to i8
  %99 = zext i8 %98 to i32
  %100 = icmp slt i32 0, %99
  br i1 %100, label %101, label %119

101:                                              ; preds = %96, %85
  %102 = load i32, ptr %26, align 4, !tbaa !9
  %103 = zext i32 %102 to i64
  %104 = mul i64 1, %103
  %105 = icmp ult i64 %104, 255
  br i1 %105, label %106, label %110

106:                                              ; preds = %101
  %107 = load i32, ptr %26, align 4, !tbaa !9
  %108 = zext i32 %107 to i64
  %109 = mul i64 1, %108
  br label %111

110:                                              ; preds = %101
  br label %111

111:                                              ; preds = %110, %106
  %112 = phi i64 [ %109, %106 ], [ 255, %110 ]
  %113 = icmp ule i64 %112, 255
  br i1 %113, label %114, label %119

114:                                              ; preds = %111
  %115 = load i32, ptr %26, align 4, !tbaa !9
  %116 = uitofp i32 %115 to double
  %117 = fcmp ole double 0.000000e+00, %116
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  br label %120

119:                                              ; preds = %114, %111, %96
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 2730, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

120:                                              ; preds = %118
  %121 = load i32, ptr %26, align 4, !tbaa !9
  %122 = trunc i32 %121 to i8
  %123 = load i32, ptr %44, align 4, !tbaa !9
  %124 = load i32, ptr %46, align 4, !tbaa !9
  %125 = load i64, ptr %48, align 8, !tbaa !11
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %91, i8 noundef zeroext %122, i32 noundef %123, i32 noundef %124, i64 noundef %125)
  %126 = load ptr, ptr %24, align 8, !tbaa !5
  %127 = load i32, ptr %27, align 4, !tbaa !9
  %128 = trunc i32 %127 to i8
  %129 = zext i8 %128 to i32
  %130 = icmp eq i32 0, %129
  br i1 %130, label %136, label %131

131:                                              ; preds = %120
  %132 = load i32, ptr %27, align 4, !tbaa !9
  %133 = trunc i32 %132 to i8
  %134 = zext i8 %133 to i32
  %135 = icmp slt i32 0, %134
  br i1 %135, label %136, label %154

136:                                              ; preds = %131, %120
  %137 = load i32, ptr %27, align 4, !tbaa !9
  %138 = zext i32 %137 to i64
  %139 = mul i64 1, %138
  %140 = icmp ult i64 %139, 255
  br i1 %140, label %141, label %145

141:                                              ; preds = %136
  %142 = load i32, ptr %27, align 4, !tbaa !9
  %143 = zext i32 %142 to i64
  %144 = mul i64 1, %143
  br label %146

145:                                              ; preds = %136
  br label %146

146:                                              ; preds = %145, %141
  %147 = phi i64 [ %144, %141 ], [ 255, %145 ]
  %148 = icmp ule i64 %147, 255
  br i1 %148, label %149, label %154

149:                                              ; preds = %146
  %150 = load i32, ptr %27, align 4, !tbaa !9
  %151 = uitofp i32 %150 to double
  %152 = fcmp ole double 0.000000e+00, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  br label %155

154:                                              ; preds = %149, %146, %131
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 2731, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

155:                                              ; preds = %153
  %156 = load i32, ptr %27, align 4, !tbaa !9
  %157 = trunc i32 %156 to i8
  %158 = load i32, ptr %44, align 4, !tbaa !9
  %159 = load i32, ptr %46, align 4, !tbaa !9
  %160 = load i64, ptr %49, align 8, !tbaa !11
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %126, i8 noundef zeroext %157, i32 noundef %158, i32 noundef %159, i64 noundef %160)
  %161 = load ptr, ptr %24, align 8, !tbaa !5
  %162 = load i32, ptr %28, align 4, !tbaa !9
  %163 = trunc i32 %162 to i8
  %164 = zext i8 %163 to i32
  %165 = icmp eq i32 0, %164
  br i1 %165, label %171, label %166

166:                                              ; preds = %155
  %167 = load i32, ptr %28, align 4, !tbaa !9
  %168 = trunc i32 %167 to i8
  %169 = zext i8 %168 to i32
  %170 = icmp slt i32 0, %169
  br i1 %170, label %171, label %189

171:                                              ; preds = %166, %155
  %172 = load i32, ptr %28, align 4, !tbaa !9
  %173 = zext i32 %172 to i64
  %174 = mul i64 1, %173
  %175 = icmp ult i64 %174, 255
  br i1 %175, label %176, label %180

176:                                              ; preds = %171
  %177 = load i32, ptr %28, align 4, !tbaa !9
  %178 = zext i32 %177 to i64
  %179 = mul i64 1, %178
  br label %181

180:                                              ; preds = %171
  br label %181

181:                                              ; preds = %180, %176
  %182 = phi i64 [ %179, %176 ], [ 255, %180 ]
  %183 = icmp ule i64 %182, 255
  br i1 %183, label %184, label %189

184:                                              ; preds = %181
  %185 = load i32, ptr %28, align 4, !tbaa !9
  %186 = uitofp i32 %185 to double
  %187 = fcmp ole double 0.000000e+00, %186
  br i1 %187, label %188, label %189

188:                                              ; preds = %184
  br label %190

189:                                              ; preds = %184, %181, %166
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 2732, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

190:                                              ; preds = %188
  %191 = load i32, ptr %28, align 4, !tbaa !9
  %192 = trunc i32 %191 to i8
  %193 = load i32, ptr %44, align 4, !tbaa !9
  %194 = load i32, ptr %46, align 4, !tbaa !9
  %195 = load i64, ptr %50, align 8, !tbaa !11
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %161, i8 noundef zeroext %192, i32 noundef %193, i32 noundef %194, i64 noundef %195)
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load i32, ptr %29, align 4, !tbaa !9
  %198 = trunc i32 %197 to i8
  %199 = zext i8 %198 to i32
  %200 = icmp eq i32 0, %199
  br i1 %200, label %206, label %201

201:                                              ; preds = %190
  %202 = load i32, ptr %29, align 4, !tbaa !9
  %203 = trunc i32 %202 to i8
  %204 = zext i8 %203 to i32
  %205 = icmp slt i32 0, %204
  br i1 %205, label %206, label %224

206:                                              ; preds = %201, %190
  %207 = load i32, ptr %29, align 4, !tbaa !9
  %208 = zext i32 %207 to i64
  %209 = mul i64 1, %208
  %210 = icmp ult i64 %209, 255
  br i1 %210, label %211, label %215

211:                                              ; preds = %206
  %212 = load i32, ptr %29, align 4, !tbaa !9
  %213 = zext i32 %212 to i64
  %214 = mul i64 1, %213
  br label %216

215:                                              ; preds = %206
  br label %216

216:                                              ; preds = %215, %211
  %217 = phi i64 [ %214, %211 ], [ 255, %215 ]
  %218 = icmp ule i64 %217, 255
  br i1 %218, label %219, label %224

219:                                              ; preds = %216
  %220 = load i32, ptr %29, align 4, !tbaa !9
  %221 = uitofp i32 %220 to double
  %222 = fcmp ole double 0.000000e+00, %221
  br i1 %222, label %223, label %224

223:                                              ; preds = %219
  br label %225

224:                                              ; preds = %219, %216, %201
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 2733, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

225:                                              ; preds = %223
  %226 = load i32, ptr %29, align 4, !tbaa !9
  %227 = trunc i32 %226 to i8
  %228 = load i32, ptr %44, align 4, !tbaa !9
  %229 = load i32, ptr %46, align 4, !tbaa !9
  %230 = load i64, ptr %51, align 8, !tbaa !11
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %196, i8 noundef zeroext %227, i32 noundef %228, i32 noundef %229, i64 noundef %230)
  %231 = load ptr, ptr %24, align 8, !tbaa !5
  %232 = load i32, ptr %30, align 4, !tbaa !9
  %233 = trunc i32 %232 to i8
  %234 = zext i8 %233 to i32
  %235 = icmp eq i32 0, %234
  br i1 %235, label %241, label %236

236:                                              ; preds = %225
  %237 = load i32, ptr %30, align 4, !tbaa !9
  %238 = trunc i32 %237 to i8
  %239 = zext i8 %238 to i32
  %240 = icmp slt i32 0, %239
  br i1 %240, label %241, label %259

241:                                              ; preds = %236, %225
  %242 = load i32, ptr %30, align 4, !tbaa !9
  %243 = zext i32 %242 to i64
  %244 = mul i64 1, %243
  %245 = icmp ult i64 %244, 255
  br i1 %245, label %246, label %250

246:                                              ; preds = %241
  %247 = load i32, ptr %30, align 4, !tbaa !9
  %248 = zext i32 %247 to i64
  %249 = mul i64 1, %248
  br label %251

250:                                              ; preds = %241
  br label %251

251:                                              ; preds = %250, %246
  %252 = phi i64 [ %249, %246 ], [ 255, %250 ]
  %253 = icmp ule i64 %252, 255
  br i1 %253, label %254, label %259

254:                                              ; preds = %251
  %255 = load i32, ptr %30, align 4, !tbaa !9
  %256 = uitofp i32 %255 to double
  %257 = fcmp ole double 0.000000e+00, %256
  br i1 %257, label %258, label %259

258:                                              ; preds = %254
  br label %260

259:                                              ; preds = %254, %251, %236
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 2735, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

260:                                              ; preds = %258
  %261 = load i32, ptr %30, align 4, !tbaa !9
  %262 = trunc i32 %261 to i8
  %263 = load i32, ptr %44, align 4, !tbaa !9
  %264 = load i32, ptr %45, align 4, !tbaa !9
  %265 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %231, i8 noundef zeroext %262, i32 noundef %263, i32 noundef %264, ptr noundef %265, i32 noundef 0)
  %266 = load ptr, ptr %24, align 8, !tbaa !5
  %267 = load i32, ptr %31, align 4, !tbaa !9
  %268 = trunc i32 %267 to i8
  %269 = zext i8 %268 to i32
  %270 = icmp eq i32 0, %269
  br i1 %270, label %276, label %271

271:                                              ; preds = %260
  %272 = load i32, ptr %31, align 4, !tbaa !9
  %273 = trunc i32 %272 to i8
  %274 = zext i8 %273 to i32
  %275 = icmp slt i32 0, %274
  br i1 %275, label %276, label %294

276:                                              ; preds = %271, %260
  %277 = load i32, ptr %31, align 4, !tbaa !9
  %278 = zext i32 %277 to i64
  %279 = mul i64 1, %278
  %280 = icmp ult i64 %279, 255
  br i1 %280, label %281, label %285

281:                                              ; preds = %276
  %282 = load i32, ptr %31, align 4, !tbaa !9
  %283 = zext i32 %282 to i64
  %284 = mul i64 1, %283
  br label %286

285:                                              ; preds = %276
  br label %286

286:                                              ; preds = %285, %281
  %287 = phi i64 [ %284, %281 ], [ 255, %285 ]
  %288 = icmp ule i64 %287, 255
  br i1 %288, label %289, label %294

289:                                              ; preds = %286
  %290 = load i32, ptr %31, align 4, !tbaa !9
  %291 = uitofp i32 %290 to double
  %292 = fcmp ole double 0.000000e+00, %291
  br i1 %292, label %293, label %294

293:                                              ; preds = %289
  br label %295

294:                                              ; preds = %289, %286, %271
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 2736, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

295:                                              ; preds = %293
  %296 = load i32, ptr %31, align 4, !tbaa !9
  %297 = trunc i32 %296 to i8
  %298 = load i32, ptr %44, align 4, !tbaa !9
  %299 = load i32, ptr %45, align 4, !tbaa !9
  %300 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %266, i8 noundef zeroext %297, i32 noundef %298, i32 noundef %299, ptr noundef %300, i32 noundef 2)
  %301 = load ptr, ptr %24, align 8, !tbaa !5
  %302 = load i32, ptr %32, align 4, !tbaa !9
  %303 = trunc i32 %302 to i8
  %304 = zext i8 %303 to i32
  %305 = icmp eq i32 0, %304
  br i1 %305, label %311, label %306

306:                                              ; preds = %295
  %307 = load i32, ptr %32, align 4, !tbaa !9
  %308 = trunc i32 %307 to i8
  %309 = zext i8 %308 to i32
  %310 = icmp slt i32 0, %309
  br i1 %310, label %311, label %329

311:                                              ; preds = %306, %295
  %312 = load i32, ptr %32, align 4, !tbaa !9
  %313 = zext i32 %312 to i64
  %314 = mul i64 1, %313
  %315 = icmp ult i64 %314, 255
  br i1 %315, label %316, label %320

316:                                              ; preds = %311
  %317 = load i32, ptr %32, align 4, !tbaa !9
  %318 = zext i32 %317 to i64
  %319 = mul i64 1, %318
  br label %321

320:                                              ; preds = %311
  br label %321

321:                                              ; preds = %320, %316
  %322 = phi i64 [ %319, %316 ], [ 255, %320 ]
  %323 = icmp ule i64 %322, 255
  br i1 %323, label %324, label %329

324:                                              ; preds = %321
  %325 = load i32, ptr %32, align 4, !tbaa !9
  %326 = uitofp i32 %325 to double
  %327 = fcmp ole double 0.000000e+00, %326
  br i1 %327, label %328, label %329

328:                                              ; preds = %324
  br label %330

329:                                              ; preds = %324, %321, %306
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 2737, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

330:                                              ; preds = %328
  %331 = load i32, ptr %32, align 4, !tbaa !9
  %332 = trunc i32 %331 to i8
  %333 = load i32, ptr %44, align 4, !tbaa !9
  %334 = load i32, ptr %45, align 4, !tbaa !9
  %335 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %301, i8 noundef zeroext %332, i32 noundef %333, i32 noundef %334, ptr noundef %335, i32 noundef 4)
  %336 = load ptr, ptr %24, align 8, !tbaa !5
  %337 = load i32, ptr %33, align 4, !tbaa !9
  %338 = trunc i32 %337 to i8
  %339 = zext i8 %338 to i32
  %340 = icmp eq i32 0, %339
  br i1 %340, label %346, label %341

341:                                              ; preds = %330
  %342 = load i32, ptr %33, align 4, !tbaa !9
  %343 = trunc i32 %342 to i8
  %344 = zext i8 %343 to i32
  %345 = icmp slt i32 0, %344
  br i1 %345, label %346, label %364

346:                                              ; preds = %341, %330
  %347 = load i32, ptr %33, align 4, !tbaa !9
  %348 = zext i32 %347 to i64
  %349 = mul i64 1, %348
  %350 = icmp ult i64 %349, 255
  br i1 %350, label %351, label %355

351:                                              ; preds = %346
  %352 = load i32, ptr %33, align 4, !tbaa !9
  %353 = zext i32 %352 to i64
  %354 = mul i64 1, %353
  br label %356

355:                                              ; preds = %346
  br label %356

356:                                              ; preds = %355, %351
  %357 = phi i64 [ %354, %351 ], [ 255, %355 ]
  %358 = icmp ule i64 %357, 255
  br i1 %358, label %359, label %364

359:                                              ; preds = %356
  %360 = load i32, ptr %33, align 4, !tbaa !9
  %361 = uitofp i32 %360 to double
  %362 = fcmp ole double 0.000000e+00, %361
  br i1 %362, label %363, label %364

363:                                              ; preds = %359
  br label %365

364:                                              ; preds = %359, %356, %341
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 2738, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

365:                                              ; preds = %363
  %366 = load i32, ptr %33, align 4, !tbaa !9
  %367 = trunc i32 %366 to i8
  %368 = load i32, ptr %44, align 4, !tbaa !9
  %369 = load i32, ptr %45, align 4, !tbaa !9
  %370 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %336, i8 noundef zeroext %367, i32 noundef %368, i32 noundef %369, ptr noundef %370, i32 noundef 6)
  %371 = load ptr, ptr %24, align 8, !tbaa !5
  %372 = load i32, ptr %34, align 4, !tbaa !9
  %373 = trunc i32 %372 to i8
  %374 = zext i8 %373 to i32
  %375 = icmp eq i32 0, %374
  br i1 %375, label %381, label %376

376:                                              ; preds = %365
  %377 = load i32, ptr %34, align 4, !tbaa !9
  %378 = trunc i32 %377 to i8
  %379 = zext i8 %378 to i32
  %380 = icmp slt i32 0, %379
  br i1 %380, label %381, label %399

381:                                              ; preds = %376, %365
  %382 = load i32, ptr %34, align 4, !tbaa !9
  %383 = zext i32 %382 to i64
  %384 = mul i64 1, %383
  %385 = icmp ult i64 %384, 255
  br i1 %385, label %386, label %390

386:                                              ; preds = %381
  %387 = load i32, ptr %34, align 4, !tbaa !9
  %388 = zext i32 %387 to i64
  %389 = mul i64 1, %388
  br label %391

390:                                              ; preds = %381
  br label %391

391:                                              ; preds = %390, %386
  %392 = phi i64 [ %389, %386 ], [ 255, %390 ]
  %393 = icmp ule i64 %392, 255
  br i1 %393, label %394, label %399

394:                                              ; preds = %391
  %395 = load i32, ptr %34, align 4, !tbaa !9
  %396 = uitofp i32 %395 to double
  %397 = fcmp ole double 0.000000e+00, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %394
  br label %400

399:                                              ; preds = %394, %391, %376
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 2740, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

400:                                              ; preds = %398
  %401 = load i32, ptr %34, align 4, !tbaa !9
  %402 = trunc i32 %401 to i8
  %403 = load i32, ptr %44, align 4, !tbaa !9
  %404 = load i32, ptr %45, align 4, !tbaa !9
  %405 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %371, i8 noundef zeroext %402, i32 noundef %403, i32 noundef %404, ptr noundef %405, i32 noundef 0)
  %406 = load ptr, ptr %24, align 8, !tbaa !5
  %407 = load i32, ptr %35, align 4, !tbaa !9
  %408 = trunc i32 %407 to i8
  %409 = zext i8 %408 to i32
  %410 = icmp eq i32 0, %409
  br i1 %410, label %416, label %411

411:                                              ; preds = %400
  %412 = load i32, ptr %35, align 4, !tbaa !9
  %413 = trunc i32 %412 to i8
  %414 = zext i8 %413 to i32
  %415 = icmp slt i32 0, %414
  br i1 %415, label %416, label %434

416:                                              ; preds = %411, %400
  %417 = load i32, ptr %35, align 4, !tbaa !9
  %418 = zext i32 %417 to i64
  %419 = mul i64 1, %418
  %420 = icmp ult i64 %419, 255
  br i1 %420, label %421, label %425

421:                                              ; preds = %416
  %422 = load i32, ptr %35, align 4, !tbaa !9
  %423 = zext i32 %422 to i64
  %424 = mul i64 1, %423
  br label %426

425:                                              ; preds = %416
  br label %426

426:                                              ; preds = %425, %421
  %427 = phi i64 [ %424, %421 ], [ 255, %425 ]
  %428 = icmp ule i64 %427, 255
  br i1 %428, label %429, label %434

429:                                              ; preds = %426
  %430 = load i32, ptr %35, align 4, !tbaa !9
  %431 = uitofp i32 %430 to double
  %432 = fcmp ole double 0.000000e+00, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %429
  br label %435

434:                                              ; preds = %429, %426, %411
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 2741, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

435:                                              ; preds = %433
  %436 = load i32, ptr %35, align 4, !tbaa !9
  %437 = trunc i32 %436 to i8
  %438 = load i32, ptr %44, align 4, !tbaa !9
  %439 = load i32, ptr %45, align 4, !tbaa !9
  %440 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %406, i8 noundef zeroext %437, i32 noundef %438, i32 noundef %439, ptr noundef %440, i32 noundef 2)
  %441 = load ptr, ptr %24, align 8, !tbaa !5
  %442 = load i32, ptr %36, align 4, !tbaa !9
  %443 = trunc i32 %442 to i8
  %444 = zext i8 %443 to i32
  %445 = icmp eq i32 0, %444
  br i1 %445, label %451, label %446

446:                                              ; preds = %435
  %447 = load i32, ptr %36, align 4, !tbaa !9
  %448 = trunc i32 %447 to i8
  %449 = zext i8 %448 to i32
  %450 = icmp slt i32 0, %449
  br i1 %450, label %451, label %469

451:                                              ; preds = %446, %435
  %452 = load i32, ptr %36, align 4, !tbaa !9
  %453 = zext i32 %452 to i64
  %454 = mul i64 1, %453
  %455 = icmp ult i64 %454, 255
  br i1 %455, label %456, label %460

456:                                              ; preds = %451
  %457 = load i32, ptr %36, align 4, !tbaa !9
  %458 = zext i32 %457 to i64
  %459 = mul i64 1, %458
  br label %461

460:                                              ; preds = %451
  br label %461

461:                                              ; preds = %460, %456
  %462 = phi i64 [ %459, %456 ], [ 255, %460 ]
  %463 = icmp ule i64 %462, 255
  br i1 %463, label %464, label %469

464:                                              ; preds = %461
  %465 = load i32, ptr %36, align 4, !tbaa !9
  %466 = uitofp i32 %465 to double
  %467 = fcmp ole double 0.000000e+00, %466
  br i1 %467, label %468, label %469

468:                                              ; preds = %464
  br label %470

469:                                              ; preds = %464, %461, %446
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 2742, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

470:                                              ; preds = %468
  %471 = load i32, ptr %36, align 4, !tbaa !9
  %472 = trunc i32 %471 to i8
  %473 = load i32, ptr %44, align 4, !tbaa !9
  %474 = load i32, ptr %45, align 4, !tbaa !9
  %475 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %441, i8 noundef zeroext %472, i32 noundef %473, i32 noundef %474, ptr noundef %475, i32 noundef 4)
  %476 = load ptr, ptr %24, align 8, !tbaa !5
  %477 = load i32, ptr %37, align 4, !tbaa !9
  %478 = trunc i32 %477 to i8
  %479 = zext i8 %478 to i32
  %480 = icmp eq i32 0, %479
  br i1 %480, label %486, label %481

481:                                              ; preds = %470
  %482 = load i32, ptr %37, align 4, !tbaa !9
  %483 = trunc i32 %482 to i8
  %484 = zext i8 %483 to i32
  %485 = icmp slt i32 0, %484
  br i1 %485, label %486, label %504

486:                                              ; preds = %481, %470
  %487 = load i32, ptr %37, align 4, !tbaa !9
  %488 = zext i32 %487 to i64
  %489 = mul i64 1, %488
  %490 = icmp ult i64 %489, 255
  br i1 %490, label %491, label %495

491:                                              ; preds = %486
  %492 = load i32, ptr %37, align 4, !tbaa !9
  %493 = zext i32 %492 to i64
  %494 = mul i64 1, %493
  br label %496

495:                                              ; preds = %486
  br label %496

496:                                              ; preds = %495, %491
  %497 = phi i64 [ %494, %491 ], [ 255, %495 ]
  %498 = icmp ule i64 %497, 255
  br i1 %498, label %499, label %504

499:                                              ; preds = %496
  %500 = load i32, ptr %37, align 4, !tbaa !9
  %501 = uitofp i32 %500 to double
  %502 = fcmp ole double 0.000000e+00, %501
  br i1 %502, label %503, label %504

503:                                              ; preds = %499
  br label %505

504:                                              ; preds = %499, %496, %481
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 2743, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

505:                                              ; preds = %503
  %506 = load i32, ptr %37, align 4, !tbaa !9
  %507 = trunc i32 %506 to i8
  %508 = load i32, ptr %44, align 4, !tbaa !9
  %509 = load i32, ptr %45, align 4, !tbaa !9
  %510 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %476, i8 noundef zeroext %507, i32 noundef %508, i32 noundef %509, ptr noundef %510, i32 noundef 6)
  %511 = load ptr, ptr %24, align 8, !tbaa !5
  %512 = load i32, ptr %38, align 4, !tbaa !9
  %513 = trunc i32 %512 to i8
  %514 = zext i8 %513 to i32
  %515 = icmp eq i32 0, %514
  br i1 %515, label %521, label %516

516:                                              ; preds = %505
  %517 = load i32, ptr %38, align 4, !tbaa !9
  %518 = trunc i32 %517 to i8
  %519 = zext i8 %518 to i32
  %520 = icmp slt i32 0, %519
  br i1 %520, label %521, label %539

521:                                              ; preds = %516, %505
  %522 = load i32, ptr %38, align 4, !tbaa !9
  %523 = zext i32 %522 to i64
  %524 = mul i64 1, %523
  %525 = icmp ult i64 %524, 255
  br i1 %525, label %526, label %530

526:                                              ; preds = %521
  %527 = load i32, ptr %38, align 4, !tbaa !9
  %528 = zext i32 %527 to i64
  %529 = mul i64 1, %528
  br label %531

530:                                              ; preds = %521
  br label %531

531:                                              ; preds = %530, %526
  %532 = phi i64 [ %529, %526 ], [ 255, %530 ]
  %533 = icmp ule i64 %532, 255
  br i1 %533, label %534, label %539

534:                                              ; preds = %531
  %535 = load i32, ptr %38, align 4, !tbaa !9
  %536 = uitofp i32 %535 to double
  %537 = fcmp ole double 0.000000e+00, %536
  br i1 %537, label %538, label %539

538:                                              ; preds = %534
  br label %540

539:                                              ; preds = %534, %531, %516
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 2745, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

540:                                              ; preds = %538
  %541 = load i32, ptr %38, align 4, !tbaa !9
  %542 = trunc i32 %541 to i8
  %543 = load i32, ptr %44, align 4, !tbaa !9
  %544 = load i32, ptr %45, align 4, !tbaa !9
  %545 = getelementptr inbounds [16 x i32], ptr %54, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %511, i8 noundef zeroext %542, i32 noundef %543, i32 noundef %544, ptr noundef %545, i32 noundef 0)
  %546 = load ptr, ptr %24, align 8, !tbaa !5
  %547 = load i32, ptr %39, align 4, !tbaa !9
  %548 = trunc i32 %547 to i8
  %549 = zext i8 %548 to i32
  %550 = icmp eq i32 0, %549
  br i1 %550, label %556, label %551

551:                                              ; preds = %540
  %552 = load i32, ptr %39, align 4, !tbaa !9
  %553 = trunc i32 %552 to i8
  %554 = zext i8 %553 to i32
  %555 = icmp slt i32 0, %554
  br i1 %555, label %556, label %574

556:                                              ; preds = %551, %540
  %557 = load i32, ptr %39, align 4, !tbaa !9
  %558 = zext i32 %557 to i64
  %559 = mul i64 1, %558
  %560 = icmp ult i64 %559, 255
  br i1 %560, label %561, label %565

561:                                              ; preds = %556
  %562 = load i32, ptr %39, align 4, !tbaa !9
  %563 = zext i32 %562 to i64
  %564 = mul i64 1, %563
  br label %566

565:                                              ; preds = %556
  br label %566

566:                                              ; preds = %565, %561
  %567 = phi i64 [ %564, %561 ], [ 255, %565 ]
  %568 = icmp ule i64 %567, 255
  br i1 %568, label %569, label %574

569:                                              ; preds = %566
  %570 = load i32, ptr %39, align 4, !tbaa !9
  %571 = uitofp i32 %570 to double
  %572 = fcmp ole double 0.000000e+00, %571
  br i1 %572, label %573, label %574

573:                                              ; preds = %569
  br label %575

574:                                              ; preds = %569, %566, %551
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 2746, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

575:                                              ; preds = %573
  %576 = load i32, ptr %39, align 4, !tbaa !9
  %577 = trunc i32 %576 to i8
  %578 = load i32, ptr %44, align 4, !tbaa !9
  %579 = load i32, ptr %45, align 4, !tbaa !9
  %580 = getelementptr inbounds [16 x i32], ptr %54, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %546, i8 noundef zeroext %577, i32 noundef %578, i32 noundef %579, ptr noundef %580, i32 noundef 2)
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = load i32, ptr %40, align 4, !tbaa !9
  %583 = trunc i32 %582 to i8
  %584 = zext i8 %583 to i32
  %585 = icmp eq i32 0, %584
  br i1 %585, label %591, label %586

586:                                              ; preds = %575
  %587 = load i32, ptr %40, align 4, !tbaa !9
  %588 = trunc i32 %587 to i8
  %589 = zext i8 %588 to i32
  %590 = icmp slt i32 0, %589
  br i1 %590, label %591, label %609

591:                                              ; preds = %586, %575
  %592 = load i32, ptr %40, align 4, !tbaa !9
  %593 = zext i32 %592 to i64
  %594 = mul i64 1, %593
  %595 = icmp ult i64 %594, 255
  br i1 %595, label %596, label %600

596:                                              ; preds = %591
  %597 = load i32, ptr %40, align 4, !tbaa !9
  %598 = zext i32 %597 to i64
  %599 = mul i64 1, %598
  br label %601

600:                                              ; preds = %591
  br label %601

601:                                              ; preds = %600, %596
  %602 = phi i64 [ %599, %596 ], [ 255, %600 ]
  %603 = icmp ule i64 %602, 255
  br i1 %603, label %604, label %609

604:                                              ; preds = %601
  %605 = load i32, ptr %40, align 4, !tbaa !9
  %606 = uitofp i32 %605 to double
  %607 = fcmp ole double 0.000000e+00, %606
  br i1 %607, label %608, label %609

608:                                              ; preds = %604
  br label %610

609:                                              ; preds = %604, %601, %586
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 2747, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

610:                                              ; preds = %608
  %611 = load i32, ptr %40, align 4, !tbaa !9
  %612 = trunc i32 %611 to i8
  %613 = load i32, ptr %44, align 4, !tbaa !9
  %614 = load i32, ptr %45, align 4, !tbaa !9
  %615 = getelementptr inbounds [16 x i32], ptr %54, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %581, i8 noundef zeroext %612, i32 noundef %613, i32 noundef %614, ptr noundef %615, i32 noundef 4)
  %616 = load ptr, ptr %24, align 8, !tbaa !5
  %617 = load i32, ptr %41, align 4, !tbaa !9
  %618 = trunc i32 %617 to i8
  %619 = zext i8 %618 to i32
  %620 = icmp eq i32 0, %619
  br i1 %620, label %626, label %621

621:                                              ; preds = %610
  %622 = load i32, ptr %41, align 4, !tbaa !9
  %623 = trunc i32 %622 to i8
  %624 = zext i8 %623 to i32
  %625 = icmp slt i32 0, %624
  br i1 %625, label %626, label %644

626:                                              ; preds = %621, %610
  %627 = load i32, ptr %41, align 4, !tbaa !9
  %628 = zext i32 %627 to i64
  %629 = mul i64 1, %628
  %630 = icmp ult i64 %629, 255
  br i1 %630, label %631, label %635

631:                                              ; preds = %626
  %632 = load i32, ptr %41, align 4, !tbaa !9
  %633 = zext i32 %632 to i64
  %634 = mul i64 1, %633
  br label %636

635:                                              ; preds = %626
  br label %636

636:                                              ; preds = %635, %631
  %637 = phi i64 [ %634, %631 ], [ 255, %635 ]
  %638 = icmp ule i64 %637, 255
  br i1 %638, label %639, label %644

639:                                              ; preds = %636
  %640 = load i32, ptr %41, align 4, !tbaa !9
  %641 = uitofp i32 %640 to double
  %642 = fcmp ole double 0.000000e+00, %641
  br i1 %642, label %643, label %644

643:                                              ; preds = %639
  br label %645

644:                                              ; preds = %639, %636, %621
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 2748, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

645:                                              ; preds = %643
  %646 = load i32, ptr %41, align 4, !tbaa !9
  %647 = trunc i32 %646 to i8
  %648 = load i32, ptr %44, align 4, !tbaa !9
  %649 = load i32, ptr %45, align 4, !tbaa !9
  %650 = getelementptr inbounds [16 x i32], ptr %54, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %616, i8 noundef zeroext %647, i32 noundef %648, i32 noundef %649, ptr noundef %650, i32 noundef 6)
  %651 = load ptr, ptr %24, align 8, !tbaa !5
  %652 = load i32, ptr %42, align 4, !tbaa !9
  %653 = trunc i32 %652 to i8
  %654 = zext i8 %653 to i32
  %655 = icmp eq i32 0, %654
  br i1 %655, label %661, label %656

656:                                              ; preds = %645
  %657 = load i32, ptr %42, align 4, !tbaa !9
  %658 = trunc i32 %657 to i8
  %659 = zext i8 %658 to i32
  %660 = icmp slt i32 0, %659
  br i1 %660, label %661, label %679

661:                                              ; preds = %656, %645
  %662 = load i32, ptr %42, align 4, !tbaa !9
  %663 = zext i32 %662 to i64
  %664 = mul i64 1, %663
  %665 = icmp ult i64 %664, 255
  br i1 %665, label %666, label %670

666:                                              ; preds = %661
  %667 = load i32, ptr %42, align 4, !tbaa !9
  %668 = zext i32 %667 to i64
  %669 = mul i64 1, %668
  br label %671

670:                                              ; preds = %661
  br label %671

671:                                              ; preds = %670, %666
  %672 = phi i64 [ %669, %666 ], [ 255, %670 ]
  %673 = icmp ule i64 %672, 255
  br i1 %673, label %674, label %679

674:                                              ; preds = %671
  %675 = load i32, ptr %42, align 4, !tbaa !9
  %676 = uitofp i32 %675 to double
  %677 = fcmp ole double 0.000000e+00, %676
  br i1 %677, label %678, label %679

678:                                              ; preds = %674
  br label %680

679:                                              ; preds = %674, %671, %656
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 2750, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

680:                                              ; preds = %678
  %681 = load i32, ptr %42, align 4, !tbaa !9
  %682 = trunc i32 %681 to i8
  %683 = load i32, ptr %44, align 4, !tbaa !9
  %684 = load i32, ptr %45, align 4, !tbaa !9
  %685 = getelementptr inbounds [4 x i32], ptr %55, i64 0, i64 0
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %651, i8 noundef zeroext %682, i32 noundef %683, i32 noundef %684, ptr noundef %685, i32 noundef 0)
  %686 = load ptr, ptr %24, align 8, !tbaa !5
  %687 = load i32, ptr %43, align 4, !tbaa !9
  %688 = trunc i32 %687 to i8
  %689 = zext i8 %688 to i32
  %690 = icmp eq i32 0, %689
  br i1 %690, label %696, label %691

691:                                              ; preds = %680
  %692 = load i32, ptr %43, align 4, !tbaa !9
  %693 = trunc i32 %692 to i8
  %694 = zext i8 %693 to i32
  %695 = icmp slt i32 0, %694
  br i1 %695, label %696, label %714

696:                                              ; preds = %691, %680
  %697 = load i32, ptr %43, align 4, !tbaa !9
  %698 = zext i32 %697 to i64
  %699 = mul i64 1, %698
  %700 = icmp ult i64 %699, 255
  br i1 %700, label %701, label %705

701:                                              ; preds = %696
  %702 = load i32, ptr %43, align 4, !tbaa !9
  %703 = zext i32 %702 to i64
  %704 = mul i64 1, %703
  br label %706

705:                                              ; preds = %696
  br label %706

706:                                              ; preds = %705, %701
  %707 = phi i64 [ %704, %701 ], [ 255, %705 ]
  %708 = icmp ule i64 %707, 255
  br i1 %708, label %709, label %714

709:                                              ; preds = %706
  %710 = load i32, ptr %43, align 4, !tbaa !9
  %711 = uitofp i32 %710 to double
  %712 = fcmp ole double 0.000000e+00, %711
  br i1 %712, label %713, label %714

713:                                              ; preds = %709
  br label %715

714:                                              ; preds = %709, %706, %691
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 2751, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd) #5
  unreachable

715:                                              ; preds = %713
  %716 = load i32, ptr %43, align 4, !tbaa !9
  %717 = trunc i32 %716 to i8
  %718 = load i32, ptr %44, align 4, !tbaa !9
  %719 = load i32, ptr %46, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %686, i8 noundef zeroext %717, i32 noundef %718, i32 noundef %719, i64 noundef 50462976)
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c0_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c1_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c2_array = external hidden unnamed_addr constant [16 x i32], align 16
@__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.idx_array = external hidden unnamed_addr constant [4 x i32], align 16

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, i32 noundef %10, i32 noundef %11, i32 noundef %12, i32 noundef %13, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21, i32 noundef %22) local_unnamed_addr #2 {
  %24 = alloca [16 x i32], align 16
  %25 = alloca [16 x i32], align 16
  %26 = alloca [16 x i32], align 16
  %27 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %24, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c0_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %25, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c1_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %26, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.c2_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %27, ptr noundef nonnull align 16 dereferenceable(16) @__const.libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_aarch64_asimd.idx_array, i64 16, i1 false)
  %28 = trunc i32 %1 to i8
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %28, i32 noundef %20, i32 noundef %22, i64 noundef 1083138047)
  %29 = trunc i32 %2 to i8
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %29, i32 noundef %20, i32 noundef %22, i64 noundef 2147483647)
  %30 = trunc i32 %3 to i8
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %30, i32 noundef %20, i32 noundef %22, i64 noundef 1079863241)
  %31 = trunc i32 %4 to i8
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %31, i32 noundef %20, i32 noundef %22, i64 noundef 1262485504)
  %32 = trunc i32 %5 to i8
  tail call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %32, i32 noundef %20, i32 noundef %22, i64 noundef 1056964608)
  %33 = trunc i32 %6 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %33, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %24, i32 noundef 0)
  %34 = trunc i32 %7 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %34, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %24, i32 noundef 2)
  %35 = trunc i32 %8 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %35, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %24, i32 noundef 4)
  %36 = trunc i32 %9 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %36, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %24, i32 noundef 6)
  %37 = trunc i32 %10 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %37, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %25, i32 noundef 0)
  %38 = trunc i32 %11 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %38, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %25, i32 noundef 2)
  %39 = trunc i32 %12 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %39, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %25, i32 noundef 4)
  %40 = trunc i32 %13 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %40, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %25, i32 noundef 6)
  %41 = trunc i32 %14 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %41, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %26, i32 noundef 0)
  %42 = trunc i32 %15 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %42, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %26, i32 noundef 2)
  %43 = trunc i32 %16 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %43, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %26, i32 noundef 4)
  %44 = trunc i32 %17 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %44, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %26, i32 noundef 6)
  %45 = trunc i32 %18 to i8
  call void @libxsmm_aarch64_instruction_load16bytes_const_to_vec(ptr noundef %0, i8 noundef zeroext %45, i32 noundef %20, i32 noundef %21, ptr noundef nonnull %27, i32 noundef 0)
  %46 = trunc i32 %19 to i8
  call void @libxsmm_aarch64_instruction_broadcast_scalar_to_vec_asimd(ptr noundef %0, i8 noundef zeroext %46, i32 noundef %20, i32 noundef %22, i64 noundef 50462976)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #3
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #3
  ret void
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass