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

; 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"

%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }

@__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array = external hidden unnamed_addr constant [8 x i32], align 16
@.str.1 = external hidden unnamed_addr constant [17 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array.2 = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_neg_array = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_neg_array = external hidden unnamed_addr constant [8 x double], align 16
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array = external hidden unnamed_addr constant [8 x double], align 16
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.5 = external hidden unnamed_addr constant [8 x double], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array.6 = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.7 = external hidden unnamed_addr constant [8 x double], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes_i16 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes_i16 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words_i16 = external hidden unnamed_addr constant [8 x i32], align 16
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_alu_mem(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #1

declare i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx() #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_configure_unary_kernel_vregs_masks(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7) #2 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i32, align 4
  %19 = alloca [8 x i32], align 16
  %20 = alloca [8 x i32], align 16
  %21 = alloca i32, align 4
  %22 = alloca [16 x float], align 16
  %23 = alloca [8 x double], align 16
  %24 = alloca ptr, align 8
  %25 = alloca [16 x float], align 16
  %26 = alloca [8 x double], align 16
  %27 = alloca ptr, align 8
  %28 = alloca [8 x double], align 16
  %29 = alloca [16 x float], align 16
  %30 = alloca [8 x double], align 16
  %31 = alloca ptr, align 8
  %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 [32 x i8], align 16
  %40 = alloca [32 x i8], align 16
  %41 = alloca [8 x i32], align 16
  %42 = alloca [32 x i8], align 16
  %43 = alloca [32 x i8], align 16
  %44 = alloca [8 x i32], align 16
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %3, ptr %12, align 4, !tbaa !9
  store i32 %4, ptr %13, align 4, !tbaa !9
  store i32 %5, ptr %14, align 4, !tbaa !9
  store i32 %6, ptr %15, align 4, !tbaa !9
  store i32 %7, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #4
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %47, i32 0, i32 6
  %49 = load i32, ptr %48, align 4, !tbaa !11
  %50 = icmp ult i32 %49, 1005
  br i1 %50, label %51, label %52

51:                                               ; preds = %8
  br label %59

52:                                               ; preds = %8
  %53 = load ptr, ptr %9, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %53, i32 0, i32 6
  %55 = load i32, ptr %54, align 4, !tbaa !11
  %56 = icmp ult i32 %55, 1101
  %57 = zext i1 %56 to i64
  %58 = select i1 %56, i32 121, i32 122
  br label %59

59:                                               ; preds = %52, %51
  %60 = phi i32 [ 120, %51 ], [ %58, %52 ]
  %61 = trunc i32 %60 to i8
  store i8 %61, ptr %17, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %62 = load i32, ptr %11, align 4, !tbaa !9
  %63 = icmp eq i32 %62, 0
  %64 = zext i1 %63 to i64
  %65 = select i1 %63, i32 1, i32 0
  store i32 %65, ptr %18, align 4, !tbaa !9
  %66 = load i32, ptr %12, align 4, !tbaa !9
  %67 = icmp eq i32 %66, 33
  br i1 %67, label %68, label %80

68:                                               ; preds = %59
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %69, i32 0, i32 18
  %71 = load i32, ptr %70, align 4, !tbaa !14
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %72, i32 0, i32 29
  store i32 %71, ptr %73, align 4, !tbaa !16
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %74, i32 0, i32 18
  %76 = load i32, ptr %75, align 4, !tbaa !14
  %77 = add i32 %76, 1
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %78, i32 0, i32 18
  store i32 %77, ptr %79, align 4, !tbaa !14
  br label %80

80:                                               ; preds = %68, %59
  %81 = load i32, ptr %12, align 4, !tbaa !9
  %82 = icmp eq i32 %81, 5
  br i1 %82, label %92, label %83

83:                                               ; preds = %80
  %84 = load i32, ptr %12, align 4, !tbaa !9
  %85 = icmp eq i32 %84, 6
  br i1 %85, label %92, label %86

86:                                               ; preds = %83
  %87 = load i32, ptr %12, align 4, !tbaa !9
  %88 = icmp eq i32 %87, 34
  br i1 %88, label %92, label %89

89:                                               ; preds = %86
  %90 = load i32, ptr %12, align 4, !tbaa !9
  %91 = icmp eq i32 %90, 35
  br i1 %91, label %92, label %243

92:                                               ; preds = %89, %86, %83, %80
  %93 = load ptr, ptr %10, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %93, i32 0, i32 18
  %95 = load i32, ptr %94, align 4, !tbaa !14
  %96 = load ptr, ptr %10, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %96, i32 0, i32 32
  store i32 %95, ptr %97, align 4, !tbaa !17
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %98, i32 0, i32 18
  %100 = load i32, ptr %99, align 4, !tbaa !14
  %101 = add i32 %100, 1
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %102, i32 0, i32 18
  store i32 %101, ptr %103, align 4, !tbaa !14
  %104 = load ptr, ptr %9, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %104, i32 0, i32 6
  %106 = load i32, ptr %105, align 4, !tbaa !11
  %107 = icmp ult i32 %106, 1051
  br i1 %107, label %108, label %148

108:                                              ; preds = %92
  %109 = load i32, ptr %13, align 4, !tbaa !9
  %110 = and i32 %109, 1
  %111 = icmp ugt i32 %110, 0
  br i1 %111, label %112, label %148

112:                                              ; preds = %108
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %113, i32 0, i32 18
  %115 = load i32, ptr %114, align 4, !tbaa !14
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %116, i32 0, i32 29
  store i32 %115, ptr %117, align 4, !tbaa !16
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %118, i32 0, i32 18
  %120 = load i32, ptr %119, align 4, !tbaa !14
  %121 = add i32 %120, 1
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %122, i32 0, i32 18
  store i32 %121, ptr %123, align 4, !tbaa !14
  %124 = load i32, ptr %12, align 4, !tbaa !9
  %125 = icmp eq i32 %124, 6
  br i1 %125, label %129, label %126

126:                                              ; preds = %112
  %127 = load i32, ptr %12, align 4, !tbaa !9
  %128 = icmp eq i32 %127, 35
  br i1 %128, label %129, label %147

129:                                              ; preds = %126, %112
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %19, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array, i64 32, i1 false)
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %130, i32 0, i32 18
  %132 = load i32, ptr %131, align 4, !tbaa !14
  %133 = load ptr, ptr %10, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %133, i32 0, i32 86
  store i32 %132, ptr %134, align 4, !tbaa !18
  %135 = load ptr, ptr %10, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %135, i32 0, i32 18
  %137 = load i32, ptr %136, align 4, !tbaa !14
  %138 = add i32 %137, 1
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %139, i32 0, i32 18
  store i32 %138, ptr %140, align 4, !tbaa !14
  %141 = load ptr, ptr %9, align 8, !tbaa !5
  %142 = getelementptr inbounds [8 x i32], ptr %19, i64 0, i64 0
  %143 = load i8, ptr %17, align 1, !tbaa !13
  %144 = load ptr, ptr %10, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %144, i32 0, i32 86
  %146 = load i32, ptr %145, align 4, !tbaa !18
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %141, ptr noundef %142, ptr noundef @.str.1, i8 noundef signext %143, i32 noundef %146)
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #4
  br label %147

147:                                              ; preds = %129, %126
  br label %174

148:                                              ; preds = %108, %92
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %149, i32 0, i32 6
  %151 = load i32, ptr %150, align 4, !tbaa !11
  %152 = icmp ult i32 %151, 1051
  br i1 %152, label %153, label %173

153:                                              ; preds = %148
  %154 = load i32, ptr %13, align 4, !tbaa !9
  %155 = and i32 %154, 1
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %173

157:                                              ; preds = %153
  %158 = load i32, ptr %12, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 34
  br i1 %159, label %160, label %172

160:                                              ; preds = %157
  %161 = load ptr, ptr %10, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %161, i32 0, i32 18
  %163 = load i32, ptr %162, align 4, !tbaa !14
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %164, i32 0, i32 29
  store i32 %163, ptr %165, align 4, !tbaa !16
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %166, i32 0, i32 18
  %168 = load i32, ptr %167, align 4, !tbaa !14
  %169 = add i32 %168, 1
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %170, i32 0, i32 18
  store i32 %169, ptr %171, align 4, !tbaa !14
  br label %172

172:                                              ; preds = %160, %157
  br label %173

173:                                              ; preds = %172, %153, %148
  br label %174

174:                                              ; preds = %173, %147
  %175 = load i32, ptr %12, align 4, !tbaa !9
  %176 = icmp eq i32 %175, 6
  br i1 %176, label %180, label %177

177:                                              ; preds = %174
  %178 = load i32, ptr %12, align 4, !tbaa !9
  %179 = icmp eq i32 %178, 35
  br i1 %179, label %180, label %196

180:                                              ; preds = %177, %174
  %181 = load i32, ptr %13, align 4, !tbaa !9
  %182 = and i32 %181, 1
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %196

184:                                              ; preds = %180
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %185, i32 0, i32 18
  %187 = load i32, ptr %186, align 4, !tbaa !14
  %188 = load ptr, ptr %10, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %188, i32 0, i32 29
  store i32 %187, ptr %189, align 4, !tbaa !16
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %190, i32 0, i32 18
  %192 = load i32, ptr %191, align 4, !tbaa !14
  %193 = add i32 %192, 1
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %194, i32 0, i32 18
  store i32 %193, ptr %195, align 4, !tbaa !14
  br label %196

196:                                              ; preds = %184, %180, %177
  %197 = load i32, ptr %12, align 4, !tbaa !9
  %198 = icmp eq i32 %197, 34
  br i1 %198, label %202, label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %12, align 4, !tbaa !9
  %201 = icmp eq i32 %200, 35
  br i1 %201, label %202, label %229

202:                                              ; preds = %199, %196
  %203 = load ptr, ptr %10, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %203, i32 0, i32 18
  %205 = load i32, ptr %204, align 4, !tbaa !14
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %206, i32 0, i32 30
  store i32 %205, ptr %207, align 4, !tbaa !19
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %208, i32 0, i32 18
  %210 = load i32, ptr %209, align 4, !tbaa !14
  %211 = add i32 %210, 1
  %212 = load ptr, ptr %10, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %212, i32 0, i32 102
  store i32 %211, ptr %213, align 4, !tbaa !20
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %214, i32 0, i32 18
  %216 = load i32, ptr %215, align 4, !tbaa !14
  %217 = add i32 %216, 2
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %218, i32 0, i32 18
  store i32 %217, ptr %219, align 4, !tbaa !14
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = load ptr, ptr %9, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %221, i32 0, i32 6
  %223 = load i32, ptr %222, align 4, !tbaa !11
  %224 = load i32, ptr %16, align 4, !tbaa !9
  %225 = load i8, ptr %17, align 1, !tbaa !13
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %226, i32 0, i32 102
  %228 = load i32, ptr %227, align 4, !tbaa !20
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %220, i32 noundef %223, i32 noundef 537209368, i32 noundef %224, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %225, i32 noundef %228, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %229

229:                                              ; preds = %202, %199
  %230 = load ptr, ptr %9, align 8, !tbaa !5
  %231 = load ptr, ptr %10, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %231, i32 0, i32 128
  %233 = load i8, ptr %232, align 4, !tbaa !21
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %234, i32 0, i32 32
  %236 = load i32, ptr %235, align 4, !tbaa !17
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %237, i32 0, i32 32
  %239 = load i32, ptr %238, align 4, !tbaa !17
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %240, i32 0, i32 32
  %242 = load i32, ptr %241, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %230, i32 noundef 805639919, i8 noundef signext %233, i32 noundef %236, i32 noundef %239, i32 noundef %242)
  br label %243

243:                                              ; preds = %229, %89
  %244 = load i32, ptr %12, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 36
  br i1 %245, label %249, label %246

246:                                              ; preds = %243
  %247 = load i32, ptr %12, align 4, !tbaa !9
  %248 = icmp eq i32 %247, 37
  br i1 %248, label %249, label %335

249:                                              ; preds = %246, %243
  %250 = load ptr, ptr %10, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %250, i32 0, i32 18
  %252 = load i32, ptr %251, align 4, !tbaa !14
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %253, i32 0, i32 32
  store i32 %252, ptr %254, align 4, !tbaa !17
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %255, i32 0, i32 18
  %257 = load i32, ptr %256, align 4, !tbaa !14
  %258 = add i32 %257, 1
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %259, i32 0, i32 29
  store i32 %258, ptr %260, align 4, !tbaa !16
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %261, i32 0, i32 18
  %263 = load i32, ptr %262, align 4, !tbaa !14
  %264 = add i32 %263, 2
  %265 = load ptr, ptr %10, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %265, i32 0, i32 102
  store i32 %264, ptr %266, align 4, !tbaa !20
  %267 = load ptr, ptr %10, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %267, i32 0, i32 18
  %269 = load i32, ptr %268, align 4, !tbaa !14
  %270 = add i32 %269, 3
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %271, i32 0, i32 30
  store i32 %270, ptr %272, align 4, !tbaa !19
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %273, i32 0, i32 18
  %275 = load i32, ptr %274, align 4, !tbaa !14
  %276 = add i32 %275, 4
  %277 = load ptr, ptr %10, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %277, i32 0, i32 31
  store i32 %276, ptr %278, align 4, !tbaa !22
  %279 = load ptr, ptr %10, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %279, i32 0, i32 18
  %281 = load i32, ptr %280, align 4, !tbaa !14
  %282 = add i32 %281, 5
  %283 = load ptr, ptr %10, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %283, i32 0, i32 18
  store i32 %282, ptr %284, align 4, !tbaa !14
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %285, i32 0, i32 6
  %287 = load i32, ptr %286, align 4, !tbaa !11
  %288 = icmp ult i32 %287, 1051
  br i1 %288, label %289, label %312

289:                                              ; preds = %249
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %290, i32 0, i32 20
  %292 = load i32, ptr %291, align 4, !tbaa !23
  %293 = icmp ugt i32 %292, 0
  br i1 %293, label %294, label %311

294:                                              ; preds = %289
  %295 = load ptr, ptr %10, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %295, i32 0, i32 18
  %297 = load i32, ptr %296, align 4, !tbaa !14
  %298 = sub i32 %297, 2
  %299 = load ptr, ptr %10, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %299, i32 0, i32 18
  store i32 %298, ptr %300, align 4, !tbaa !14
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %301, i32 0, i32 24
  %303 = load i32, ptr %302, align 4, !tbaa !24
  %304 = load ptr, ptr %10, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %304, i32 0, i32 30
  store i32 %303, ptr %305, align 4, !tbaa !19
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %306, i32 0, i32 25
  %308 = load i32, ptr %307, align 4, !tbaa !25
  %309 = load ptr, ptr %10, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %309, i32 0, i32 31
  store i32 %308, ptr %310, align 4, !tbaa !22
  br label %311

311:                                              ; preds = %294, %289
  br label %312

312:                                              ; preds = %311, %249
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %314, i32 0, i32 6
  %316 = load i32, ptr %315, align 4, !tbaa !11
  %317 = load i32, ptr %16, align 4, !tbaa !9
  %318 = load i8, ptr %17, align 1, !tbaa !13
  %319 = load ptr, ptr %10, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %319, i32 0, i32 102
  %321 = load i32, ptr %320, align 4, !tbaa !20
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %313, i32 noundef %316, i32 noundef 537209368, i32 noundef %317, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %318, i32 noundef %321, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %323, i32 0, i32 128
  %325 = load i8, ptr %324, align 4, !tbaa !21
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %326, i32 0, i32 32
  %328 = load i32, ptr %327, align 4, !tbaa !17
  %329 = load ptr, ptr %10, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %329, i32 0, i32 32
  %331 = load i32, ptr %330, align 4, !tbaa !17
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %332, i32 0, i32 32
  %334 = load i32, ptr %333, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %322, i32 noundef 805639919, i8 noundef signext %325, i32 noundef %328, i32 noundef %331, i32 noundef %334)
  br label %335

335:                                              ; preds = %312, %246
  %336 = load i32, ptr %12, align 4, !tbaa !9
  %337 = icmp eq i32 %336, 25
  br i1 %337, label %341, label %338

338:                                              ; preds = %335
  %339 = load i32, ptr %12, align 4, !tbaa !9
  %340 = icmp eq i32 %339, 26
  br i1 %340, label %341, label %548

341:                                              ; preds = %338, %335
  %342 = load ptr, ptr %9, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %342, i32 0, i32 6
  %344 = load i32, ptr %343, align 4, !tbaa !11
  %345 = icmp uge i32 %344, 1005
  br i1 %345, label %346, label %377

346:                                              ; preds = %341
  %347 = load ptr, ptr %9, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %347, i32 0, i32 6
  %349 = load i32, ptr %348, align 4, !tbaa !11
  %350 = icmp ult i32 %349, 1051
  br i1 %350, label %351, label %377

351:                                              ; preds = %346
  %352 = load ptr, ptr %10, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %352, i32 0, i32 18
  %354 = load i32, ptr %353, align 4, !tbaa !14
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %355, i32 0, i32 114
  store i32 %354, ptr %356, align 4, !tbaa !26
  %357 = load ptr, ptr %10, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %357, i32 0, i32 18
  %359 = load i32, ptr %358, align 4, !tbaa !14
  %360 = add i32 %359, 1
  %361 = load ptr, ptr %10, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %361, i32 0, i32 18
  store i32 %360, ptr %362, align 4, !tbaa !14
  %363 = load i32, ptr %12, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 26
  br i1 %364, label %365, label %376

365:                                              ; preds = %351
  %366 = load i32, ptr %13, align 4, !tbaa !9
  %367 = and i32 %366, 1
  %368 = icmp ugt i32 %367, 0
  br i1 %368, label %369, label %376

369:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %20, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array.2, i64 32, i1 false)
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = getelementptr inbounds [8 x i32], ptr %20, i64 0, i64 0
  %372 = load i8, ptr %17, align 1, !tbaa !13
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %373, i32 0, i32 114
  %375 = load i32, ptr %374, align 4, !tbaa !26
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %370, ptr noundef %371, ptr noundef @.str.1, i8 noundef signext %372, i32 noundef %375)
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #4
  br label %376

376:                                              ; preds = %369, %365, %351
  br label %377

377:                                              ; preds = %376, %346, %341
  %378 = load ptr, ptr %9, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %378, i32 0, i32 6
  %380 = load i32, ptr %379, align 4, !tbaa !11
  %381 = icmp uge i32 %380, 1005
  br i1 %381, label %382, label %547

382:                                              ; preds = %377
  %383 = load ptr, ptr %9, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %383, i32 0, i32 6
  %385 = load i32, ptr %384, align 4, !tbaa !11
  %386 = icmp ult i32 %385, 1999
  br i1 %386, label %387, label %547

387:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %388 = load ptr, ptr %10, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %388, i32 0, i32 18
  %390 = load i32, ptr %389, align 4, !tbaa !14
  store i32 %390, ptr %21, align 4, !tbaa !9
  %391 = load i32, ptr %12, align 4, !tbaa !9
  %392 = icmp eq i32 %391, 25
  br i1 %392, label %393, label %500

393:                                              ; preds = %387
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %395 = add i32 %394, 10
  store i32 %395, ptr %21, align 4, !tbaa !9
  %396 = load ptr, ptr %9, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %396, i32 0, i32 6
  %398 = load i32, ptr %397, align 4, !tbaa !11
  %399 = icmp ult i32 %398, 1051
  br i1 %399, label %400, label %409

400:                                              ; preds = %393
  %401 = load ptr, ptr %10, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %401, i32 0, i32 20
  %403 = load i32, ptr %402, align 4, !tbaa !23
  %404 = icmp ugt i32 %403, 0
  br i1 %404, label %405, label %408

405:                                              ; preds = %400
  %406 = load i32, ptr %21, align 4, !tbaa !9
  %407 = sub i32 %406, 2
  store i32 %407, ptr %21, align 4, !tbaa !9
  br label %408

408:                                              ; preds = %405, %400
  br label %409

409:                                              ; preds = %408, %393
  %410 = load i32, ptr %21, align 4, !tbaa !9
  %411 = sub i32 %410, 1
  %412 = load ptr, ptr %10, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %412, i32 0, i32 103
  store i32 %411, ptr %413, align 4, !tbaa !27
  %414 = load i32, ptr %21, align 4, !tbaa !9
  %415 = sub i32 %414, 2
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %416, i32 0, i32 104
  store i32 %415, ptr %417, align 4, !tbaa !28
  %418 = load i32, ptr %21, align 4, !tbaa !9
  %419 = sub i32 %418, 3
  %420 = load ptr, ptr %10, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %420, i32 0, i32 105
  store i32 %419, ptr %421, align 4, !tbaa !29
  %422 = load i32, ptr %21, align 4, !tbaa !9
  %423 = sub i32 %422, 4
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %424, i32 0, i32 106
  store i32 %423, ptr %425, align 4, !tbaa !30
  %426 = load i32, ptr %21, align 4, !tbaa !9
  %427 = sub i32 %426, 5
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %428, i32 0, i32 109
  store i32 %427, ptr %429, align 4, !tbaa !31
  %430 = load i32, ptr %21, align 4, !tbaa !9
  %431 = sub i32 %430, 6
  %432 = load ptr, ptr %10, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %432, i32 0, i32 110
  store i32 %431, ptr %433, align 4, !tbaa !32
  %434 = load i32, ptr %21, align 4, !tbaa !9
  %435 = sub i32 %434, 7
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %436, i32 0, i32 112
  store i32 %435, ptr %437, align 4, !tbaa !33
  %438 = load i32, ptr %21, align 4, !tbaa !9
  %439 = sub i32 %438, 8
  %440 = load ptr, ptr %10, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %440, i32 0, i32 113
  store i32 %439, ptr %441, align 4, !tbaa !34
  %442 = load i32, ptr %21, align 4, !tbaa !9
  %443 = sub i32 %442, 9
  %444 = load ptr, ptr %10, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %444, i32 0, i32 107
  store i32 %443, ptr %445, align 4, !tbaa !35
  %446 = load i32, ptr %21, align 4, !tbaa !9
  %447 = sub i32 %446, 10
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %448, i32 0, i32 108
  store i32 %447, ptr %449, align 4, !tbaa !36
  %450 = load ptr, ptr %9, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %450, i32 0, i32 6
  %452 = load i32, ptr %451, align 4, !tbaa !11
  %453 = icmp ult i32 %452, 1051
  br i1 %453, label %454, label %471

454:                                              ; preds = %409
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %455, i32 0, i32 20
  %457 = load i32, ptr %456, align 4, !tbaa !23
  %458 = icmp ugt i32 %457, 0
  br i1 %458, label %459, label %470

459:                                              ; preds = %454
  %460 = load ptr, ptr %10, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %460, i32 0, i32 24
  %462 = load i32, ptr %461, align 4, !tbaa !24
  %463 = load ptr, ptr %10, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %463, i32 0, i32 107
  store i32 %462, ptr %464, align 4, !tbaa !35
  %465 = load ptr, ptr %10, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %465, i32 0, i32 25
  %467 = load i32, ptr %466, align 4, !tbaa !25
  %468 = load ptr, ptr %10, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %468, i32 0, i32 108
  store i32 %467, ptr %469, align 4, !tbaa !36
  br label %470

470:                                              ; preds = %459, %454
  br label %471

471:                                              ; preds = %470, %409
  %472 = load ptr, ptr %9, align 8, !tbaa !5
  %473 = load i8, ptr %17, align 1, !tbaa !13
  %474 = load i32, ptr %15, align 4, !tbaa !9
  %475 = load ptr, ptr %10, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %475, i32 0, i32 103
  %477 = load i32, ptr %476, align 4, !tbaa !27
  %478 = load ptr, ptr %10, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %478, i32 0, i32 104
  %480 = load i32, ptr %479, align 4, !tbaa !28
  %481 = load ptr, ptr %10, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %481, i32 0, i32 105
  %483 = load i32, ptr %482, align 4, !tbaa !29
  %484 = load ptr, ptr %10, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %484, i32 0, i32 106
  %486 = load i32, ptr %485, align 4, !tbaa !30
  call void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef %472, i8 noundef zeroext %473, i32 noundef %474, i32 noundef %477, i32 noundef %480, i32 noundef %483, i32 noundef %486)
  %487 = load ptr, ptr %9, align 8, !tbaa !5
  %488 = load i8, ptr %17, align 1, !tbaa !13
  %489 = load i32, ptr %14, align 4, !tbaa !9
  %490 = load i32, ptr %16, align 4, !tbaa !9
  %491 = load ptr, ptr %10, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %491, i32 0, i32 110
  %493 = load i32, ptr %492, align 4, !tbaa !32
  %494 = load ptr, ptr %10, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %494, i32 0, i32 112
  %496 = load i32, ptr %495, align 4, !tbaa !33
  %497 = load ptr, ptr %10, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %497, i32 0, i32 113
  %499 = load i32, ptr %498, align 4, !tbaa !34
  call void @libxsmm_generator_prepare_dropout_avx_avx512(ptr noundef %487, i8 noundef zeroext %488, i32 noundef %489, i32 noundef %490, i32 noundef %493, i32 noundef %496, i32 noundef %499)
  br label %500

500:                                              ; preds = %471, %387
  %501 = load i32, ptr %12, align 4, !tbaa !9
  %502 = icmp eq i32 %501, 26
  br i1 %502, label %503, label %543

503:                                              ; preds = %500
  %504 = load i32, ptr %21, align 4, !tbaa !9
  %505 = add i32 %504, 6
  store i32 %505, ptr %21, align 4, !tbaa !9
  %506 = load i32, ptr %21, align 4, !tbaa !9
  %507 = sub i32 %506, 1
  %508 = load ptr, ptr %10, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %508, i32 0, i32 107
  store i32 %507, ptr %509, align 4, !tbaa !35
  %510 = load i32, ptr %21, align 4, !tbaa !9
  %511 = sub i32 %510, 2
  %512 = load ptr, ptr %10, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %512, i32 0, i32 108
  store i32 %511, ptr %513, align 4, !tbaa !36
  %514 = load i32, ptr %21, align 4, !tbaa !9
  %515 = sub i32 %514, 3
  %516 = load ptr, ptr %10, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %516, i32 0, i32 109
  store i32 %515, ptr %517, align 4, !tbaa !31
  %518 = load i32, ptr %21, align 4, !tbaa !9
  %519 = sub i32 %518, 4
  %520 = load ptr, ptr %10, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %520, i32 0, i32 110
  store i32 %519, ptr %521, align 4, !tbaa !32
  %522 = load i32, ptr %21, align 4, !tbaa !9
  %523 = sub i32 %522, 5
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %524, i32 0, i32 111
  store i32 %523, ptr %525, align 4, !tbaa !37
  %526 = load i32, ptr %21, align 4, !tbaa !9
  %527 = sub i32 %526, 6
  %528 = load ptr, ptr %10, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %528, i32 0, i32 112
  store i32 %527, ptr %529, align 4, !tbaa !33
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = load i8, ptr %17, align 1, !tbaa !13
  %532 = load i32, ptr %14, align 4, !tbaa !9
  %533 = load i32, ptr %16, align 4, !tbaa !9
  %534 = load ptr, ptr %10, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %534, i32 0, i32 110
  %536 = load i32, ptr %535, align 4, !tbaa !32
  %537 = load ptr, ptr %10, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %537, i32 0, i32 111
  %539 = load i32, ptr %538, align 4, !tbaa !37
  %540 = load ptr, ptr %10, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %540, i32 0, i32 112
  %542 = load i32, ptr %541, align 4, !tbaa !33
  call void @libxsmm_generator_prepare_dropout_inv_avx_avx512(ptr noundef %530, i8 noundef zeroext %531, i32 noundef %532, i32 noundef %533, i32 noundef %536, i32 noundef %539, i32 noundef %542)
  br label %543

543:                                              ; preds = %503, %500
  %544 = load i32, ptr %21, align 4, !tbaa !9
  %545 = load ptr, ptr %10, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %545, i32 0, i32 18
  store i32 %544, ptr %546, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %547

547:                                              ; preds = %543, %382, %377
  br label %548

548:                                              ; preds = %547, %338
  %549 = load i32, ptr %12, align 4, !tbaa !9
  %550 = icmp eq i32 %549, 2
  br i1 %550, label %551, label %576

551:                                              ; preds = %548
  %552 = load ptr, ptr %10, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %552, i32 0, i32 18
  %554 = load i32, ptr %553, align 4, !tbaa !14
  %555 = load ptr, ptr %10, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %555, i32 0, i32 32
  store i32 %554, ptr %556, align 4, !tbaa !17
  %557 = load ptr, ptr %10, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %557, i32 0, i32 18
  %559 = load i32, ptr %558, align 4, !tbaa !14
  %560 = add i32 %559, 1
  %561 = load ptr, ptr %10, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %561, i32 0, i32 18
  store i32 %560, ptr %562, align 4, !tbaa !14
  %563 = load ptr, ptr %9, align 8, !tbaa !5
  %564 = load ptr, ptr %10, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %564, i32 0, i32 128
  %566 = load i8, ptr %565, align 4, !tbaa !21
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %567, i32 0, i32 32
  %569 = load i32, ptr %568, align 4, !tbaa !17
  %570 = load ptr, ptr %10, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %570, i32 0, i32 32
  %572 = load i32, ptr %571, align 4, !tbaa !17
  %573 = load ptr, ptr %10, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %573, i32 0, i32 32
  %575 = load i32, ptr %574, align 4, !tbaa !17
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %563, i32 noundef 805639919, i8 noundef signext %566, i32 noundef %569, i32 noundef %572, i32 noundef %575)
  br label %576

576:                                              ; preds = %551, %548
  %577 = load i32, ptr %12, align 4, !tbaa !9
  %578 = icmp eq i32 %577, 13
  br i1 %578, label %579, label %605

579:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 64, ptr %22) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %22, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.f_neg_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %23, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.d_neg_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  %580 = load i32, ptr %18, align 4, !tbaa !9
  %581 = icmp ugt i32 %580, 0
  br i1 %581, label %582, label %584

582:                                              ; preds = %579
  %583 = getelementptr inbounds [8 x double], ptr %23, i64 0, i64 0
  br label %586

584:                                              ; preds = %579
  %585 = getelementptr inbounds [16 x float], ptr %22, i64 0, i64 0
  br label %586

586:                                              ; preds = %584, %582
  %587 = phi ptr [ %583, %582 ], [ %585, %584 ]
  store ptr %587, ptr %24, align 8, !tbaa !5
  %588 = load ptr, ptr %10, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %588, i32 0, i32 18
  %590 = load i32, ptr %589, align 4, !tbaa !14
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %591, i32 0, i32 119
  store i32 %590, ptr %592, align 4, !tbaa !38
  %593 = load ptr, ptr %10, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %593, i32 0, i32 18
  %595 = load i32, ptr %594, align 4, !tbaa !14
  %596 = add i32 %595, 1
  %597 = load ptr, ptr %10, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %597, i32 0, i32 18
  store i32 %596, ptr %598, align 4, !tbaa !14
  %599 = load ptr, ptr %9, align 8, !tbaa !5
  %600 = load ptr, ptr %24, align 8, !tbaa !5
  %601 = load i8, ptr %17, align 1, !tbaa !13
  %602 = load ptr, ptr %10, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %602, i32 0, i32 119
  %604 = load i32, ptr %603, align 4, !tbaa !38
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %599, ptr noundef %600, ptr noundef @.str.3, i8 noundef signext %601, i32 noundef %604)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #4
  br label %605

605:                                              ; preds = %586, %576
  %606 = load i32, ptr %12, align 4, !tbaa !9
  %607 = icmp eq i32 %606, 14
  br i1 %607, label %608, label %634

608:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %25, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %26, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  %609 = load i32, ptr %18, align 4, !tbaa !9
  %610 = icmp ugt i32 %609, 0
  br i1 %610, label %611, label %613

611:                                              ; preds = %608
  %612 = getelementptr inbounds [8 x double], ptr %26, i64 0, i64 0
  br label %615

613:                                              ; preds = %608
  %614 = getelementptr inbounds [16 x float], ptr %25, i64 0, i64 0
  br label %615

615:                                              ; preds = %613, %611
  %616 = phi ptr [ %612, %611 ], [ %614, %613 ]
  store ptr %616, ptr %27, align 8, !tbaa !5
  %617 = load ptr, ptr %10, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %617, i32 0, i32 18
  %619 = load i32, ptr %618, align 4, !tbaa !14
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %620, i32 0, i32 54
  store i32 %619, ptr %621, align 4, !tbaa !39
  %622 = load ptr, ptr %10, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %622, i32 0, i32 18
  %624 = load i32, ptr %623, align 4, !tbaa !14
  %625 = add i32 %624, 1
  %626 = load ptr, ptr %10, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %626, i32 0, i32 18
  store i32 %625, ptr %627, align 4, !tbaa !14
  %628 = load ptr, ptr %9, align 8, !tbaa !5
  %629 = load ptr, ptr %27, align 8, !tbaa !5
  %630 = load i8, ptr %17, align 1, !tbaa !13
  %631 = load ptr, ptr %10, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %631, i32 0, i32 54
  %633 = load i32, ptr %632, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %628, ptr noundef %629, ptr noundef @.str.4, i8 noundef signext %630, i32 noundef %633)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #4
  br label %634

634:                                              ; preds = %615, %605
  %635 = load i32, ptr %12, align 4, !tbaa !9
  %636 = icmp eq i32 %635, 15
  br i1 %636, label %640, label %637

637:                                              ; preds = %634
  %638 = load i32, ptr %12, align 4, !tbaa !9
  %639 = icmp eq i32 %638, 16
  br i1 %639, label %640, label %685

640:                                              ; preds = %637, %634
  %641 = load i32, ptr %18, align 4, !tbaa !9
  %642 = icmp ugt i32 %641, 0
  br i1 %642, label %643, label %685

643:                                              ; preds = %640
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %644, i32 0, i32 6
  %646 = load i32, ptr %645, align 4, !tbaa !11
  %647 = icmp ult i32 %646, 1051
  br i1 %647, label %648, label %685

648:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 64, ptr %28) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %28, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.5, i64 64, i1 false)
  %649 = load ptr, ptr %10, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %649, i32 0, i32 18
  %651 = load i32, ptr %650, align 4, !tbaa !14
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %652, i32 0, i32 54
  store i32 %651, ptr %653, align 4, !tbaa !39
  %654 = load ptr, ptr %9, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %654, i32 0, i32 6
  %656 = load i32, ptr %655, align 4, !tbaa !11
  %657 = icmp ult i32 %656, 1005
  br i1 %657, label %658, label %671

658:                                              ; preds = %648
  %659 = load ptr, ptr %10, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %659, i32 0, i32 18
  %661 = load i32, ptr %660, align 4, !tbaa !14
  %662 = add i32 %661, 1
  %663 = load ptr, ptr %10, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %663, i32 0, i32 29
  store i32 %662, ptr %664, align 4, !tbaa !16
  %665 = load ptr, ptr %10, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %665, i32 0, i32 18
  %667 = load i32, ptr %666, align 4, !tbaa !14
  %668 = add i32 %667, 2
  %669 = load ptr, ptr %10, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %669, i32 0, i32 18
  store i32 %668, ptr %670, align 4, !tbaa !14
  br label %678

671:                                              ; preds = %648
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %672, i32 0, i32 18
  %674 = load i32, ptr %673, align 4, !tbaa !14
  %675 = add i32 %674, 1
  %676 = load ptr, ptr %10, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %676, i32 0, i32 18
  store i32 %675, ptr %677, align 4, !tbaa !14
  br label %678

678:                                              ; preds = %671, %658
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = getelementptr inbounds [8 x double], ptr %28, i64 0, i64 0
  %681 = load i8, ptr %17, align 1, !tbaa !13
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %682, i32 0, i32 54
  %684 = load i32, ptr %683, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %679, ptr noundef %680, ptr noundef @.str.4, i8 noundef signext %681, i32 noundef %684)
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #4
  br label %685

685:                                              ; preds = %678, %643, %640, %637
  %686 = load i32, ptr %12, align 4, !tbaa !9
  %687 = icmp eq i32 %686, 15
  br i1 %687, label %691, label %688

688:                                              ; preds = %685
  %689 = load i32, ptr %12, align 4, !tbaa !9
  %690 = icmp eq i32 %689, 16
  br i1 %690, label %691, label %720

691:                                              ; preds = %688, %685
  %692 = call i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx()
  %693 = icmp sgt i32 %692, 0
  br i1 %693, label %694, label %720

694:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %29, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array.6, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %30) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %30, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.7, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  %695 = load i32, ptr %18, align 4, !tbaa !9
  %696 = icmp ugt i32 %695, 0
  br i1 %696, label %697, label %699

697:                                              ; preds = %694
  %698 = getelementptr inbounds [8 x double], ptr %30, i64 0, i64 0
  br label %701

699:                                              ; preds = %694
  %700 = getelementptr inbounds [16 x float], ptr %29, i64 0, i64 0
  br label %701

701:                                              ; preds = %699, %697
  %702 = phi ptr [ %698, %697 ], [ %700, %699 ]
  store ptr %702, ptr %31, align 8, !tbaa !5
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %703, i32 0, i32 18
  %705 = load i32, ptr %704, align 4, !tbaa !14
  %706 = load ptr, ptr %10, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %706, i32 0, i32 54
  store i32 %705, ptr %707, align 4, !tbaa !39
  %708 = load ptr, ptr %10, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %708, i32 0, i32 18
  %710 = load i32, ptr %709, align 4, !tbaa !14
  %711 = add i32 %710, 1
  %712 = load ptr, ptr %10, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %712, i32 0, i32 18
  store i32 %711, ptr %713, align 4, !tbaa !14
  %714 = load ptr, ptr %9, align 8, !tbaa !5
  %715 = load ptr, ptr %31, align 8, !tbaa !5
  %716 = load i8, ptr %17, align 1, !tbaa !13
  %717 = load ptr, ptr %10, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %717, i32 0, i32 54
  %719 = load i32, ptr %718, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %714, ptr noundef %715, ptr noundef @.str.4, i8 noundef signext %716, i32 noundef %719)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #4
  br label %720

720:                                              ; preds = %701, %691, %688
  %721 = load i32, ptr %12, align 4, !tbaa !9
  %722 = icmp eq i32 %721, 17
  br i1 %722, label %723, label %741

723:                                              ; preds = %720
  %724 = load ptr, ptr %10, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %724, i32 0, i32 18
  %726 = load i32, ptr %725, align 4, !tbaa !14
  %727 = load ptr, ptr %10, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %727, i32 0, i32 64
  store i32 %726, ptr %728, align 4, !tbaa !40
  %729 = load ptr, ptr %10, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %729, i32 0, i32 18
  %731 = load i32, ptr %730, align 4, !tbaa !14
  %732 = add i32 %731, 1
  %733 = load ptr, ptr %10, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %733, i32 0, i32 65
  store i32 %732, ptr %734, align 4, !tbaa !41
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %735, i32 0, i32 18
  %737 = load i32, ptr %736, align 4, !tbaa !14
  %738 = add i32 %737, 2
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %739, i32 0, i32 18
  store i32 %738, ptr %740, align 4, !tbaa !14
  br label %741

741:                                              ; preds = %723, %720
  %742 = load i32, ptr %12, align 4, !tbaa !9
  %743 = icmp eq i32 %742, 11
  br i1 %743, label %747, label %744

744:                                              ; preds = %741
  %745 = load i32, ptr %12, align 4, !tbaa !9
  %746 = icmp eq i32 %745, 12
  br i1 %746, label %747, label %1204

747:                                              ; preds = %744, %741
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %748 = load ptr, ptr %10, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %748, i32 0, i32 18
  %750 = load i32, ptr %749, align 4, !tbaa !14
  store i32 %750, ptr %32, align 4, !tbaa !9
  %751 = load ptr, ptr %9, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %751, i32 0, i32 6
  %753 = load i32, ptr %752, align 4, !tbaa !11
  %754 = icmp ult i32 %753, 1051
  br i1 %754, label %755, label %922

755:                                              ; preds = %747
  %756 = load i32, ptr %32, align 4, !tbaa !9
  %757 = add i32 %756, 14
  store i32 %757, ptr %32, align 4, !tbaa !9
  %758 = load ptr, ptr %10, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %758, i32 0, i32 20
  %760 = load i32, ptr %759, align 4, !tbaa !23
  %761 = icmp ugt i32 %760, 0
  br i1 %761, label %762, label %765

762:                                              ; preds = %755
  %763 = load i32, ptr %32, align 4, !tbaa !9
  %764 = sub i32 %763, 2
  store i32 %764, ptr %32, align 4, !tbaa !9
  br label %765

765:                                              ; preds = %762, %755
  %766 = load i32, ptr %32, align 4, !tbaa !9
  %767 = sub i32 %766, 1
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %768, i32 0, i32 80
  store i32 %767, ptr %769, align 4, !tbaa !42
  %770 = load i32, ptr %32, align 4, !tbaa !9
  %771 = sub i32 %770, 2
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %772, i32 0, i32 81
  store i32 %771, ptr %773, align 4, !tbaa !43
  %774 = load i32, ptr %32, align 4, !tbaa !9
  %775 = sub i32 %774, 3
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %776, i32 0, i32 82
  store i32 %775, ptr %777, align 4, !tbaa !44
  %778 = load i32, ptr %32, align 4, !tbaa !9
  %779 = sub i32 %778, 4
  %780 = load ptr, ptr %10, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %780, i32 0, i32 83
  store i32 %779, ptr %781, align 4, !tbaa !45
  %782 = load i32, ptr %32, align 4, !tbaa !9
  %783 = sub i32 %782, 5
  %784 = load ptr, ptr %10, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %784, i32 0, i32 84
  store i32 %783, ptr %785, align 4, !tbaa !46
  %786 = load i32, ptr %32, align 4, !tbaa !9
  %787 = sub i32 %786, 6
  %788 = load ptr, ptr %10, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %788, i32 0, i32 85
  store i32 %787, ptr %789, align 4, !tbaa !47
  %790 = load i32, ptr %32, align 4, !tbaa !9
  %791 = sub i32 %790, 7
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %792, i32 0, i32 86
  store i32 %791, ptr %793, align 4, !tbaa !18
  %794 = load i32, ptr %32, align 4, !tbaa !9
  %795 = sub i32 %794, 8
  %796 = load ptr, ptr %10, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %796, i32 0, i32 87
  store i32 %795, ptr %797, align 4, !tbaa !48
  %798 = load i32, ptr %32, align 4, !tbaa !9
  %799 = sub i32 %798, 9
  %800 = load ptr, ptr %10, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %800, i32 0, i32 88
  store i32 %799, ptr %801, align 4, !tbaa !49
  %802 = load i32, ptr %32, align 4, !tbaa !9
  %803 = sub i32 %802, 10
  %804 = load ptr, ptr %10, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %804, i32 0, i32 89
  store i32 %803, ptr %805, align 4, !tbaa !50
  %806 = load i32, ptr %32, align 4, !tbaa !9
  %807 = sub i32 %806, 11
  %808 = load ptr, ptr %10, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %808, i32 0, i32 90
  store i32 %807, ptr %809, align 4, !tbaa !51
  %810 = load i32, ptr %32, align 4, !tbaa !9
  %811 = sub i32 %810, 12
  %812 = load ptr, ptr %10, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %812, i32 0, i32 91
  store i32 %811, ptr %813, align 4, !tbaa !52
  %814 = load i32, ptr %32, align 4, !tbaa !9
  %815 = sub i32 %814, 13
  %816 = load ptr, ptr %10, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %816, i32 0, i32 92
  store i32 %815, ptr %817, align 4, !tbaa !53
  %818 = load i32, ptr %32, align 4, !tbaa !9
  %819 = sub i32 %818, 14
  %820 = load ptr, ptr %10, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %820, i32 0, i32 93
  store i32 %819, ptr %821, align 4, !tbaa !54
  %822 = load ptr, ptr %10, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %822, i32 0, i32 20
  %824 = load i32, ptr %823, align 4, !tbaa !23
  %825 = icmp ugt i32 %824, 0
  br i1 %825, label %826, label %837

826:                                              ; preds = %765
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %827, i32 0, i32 24
  %829 = load i32, ptr %828, align 4, !tbaa !24
  %830 = load ptr, ptr %10, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %830, i32 0, i32 92
  store i32 %829, ptr %831, align 4, !tbaa !53
  %832 = load ptr, ptr %10, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %832, i32 0, i32 25
  %834 = load i32, ptr %833, align 4, !tbaa !25
  %835 = load ptr, ptr %10, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %835, i32 0, i32 93
  store i32 %834, ptr %836, align 4, !tbaa !54
  br label %837

837:                                              ; preds = %826, %765
  %838 = load i32, ptr %12, align 4, !tbaa !9
  %839 = icmp eq i32 %838, 11
  br i1 %839, label %840, label %879

840:                                              ; preds = %837
  %841 = load ptr, ptr %9, align 8, !tbaa !5
  %842 = load i32, ptr %14, align 4, !tbaa !9
  %843 = load ptr, ptr %10, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %843, i32 0, i32 80
  %845 = load i32, ptr %844, align 4, !tbaa !42
  %846 = load ptr, ptr %10, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %846, i32 0, i32 81
  %848 = load i32, ptr %847, align 4, !tbaa !43
  %849 = load ptr, ptr %10, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %849, i32 0, i32 82
  %851 = load i32, ptr %850, align 4, !tbaa !44
  %852 = load ptr, ptr %10, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %852, i32 0, i32 83
  %854 = load i32, ptr %853, align 4, !tbaa !45
  %855 = load ptr, ptr %10, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %855, i32 0, i32 84
  %857 = load i32, ptr %856, align 4, !tbaa !46
  %858 = load ptr, ptr %10, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %858, i32 0, i32 85
  %860 = load i32, ptr %859, align 4, !tbaa !47
  %861 = load ptr, ptr %10, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %861, i32 0, i32 94
  %863 = load i32, ptr %862, align 4, !tbaa !55
  %864 = load ptr, ptr %10, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %864, i32 0, i32 95
  %866 = load i32, ptr %865, align 4, !tbaa !56
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %867, i32 0, i32 96
  %869 = load i32, ptr %868, align 4, !tbaa !57
  %870 = load ptr, ptr %10, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %870, i32 0, i32 97
  %872 = load i32, ptr %871, align 4, !tbaa !58
  %873 = load ptr, ptr %10, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %873, i32 0, i32 98
  %875 = load i32, ptr %874, align 4, !tbaa !59
  %876 = load ptr, ptr %10, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %876, i32 0, i32 99
  %878 = load i32, ptr %877, align 4, !tbaa !60
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx(ptr noundef %841, i32 noundef %842, i32 noundef %845, i32 noundef %848, i32 noundef %851, i32 noundef %854, i32 noundef %857, i32 noundef %860, i32 noundef %863, i32 noundef %866, i32 noundef %869, i32 noundef %872, i32 noundef %875, i32 noundef %878)
  br label %879

879:                                              ; preds = %840, %837
  %880 = load i32, ptr %12, align 4, !tbaa !9
  %881 = icmp eq i32 %880, 12
  br i1 %881, label %882, label %921

882:                                              ; preds = %879
  %883 = load ptr, ptr %9, align 8, !tbaa !5
  %884 = load i32, ptr %14, align 4, !tbaa !9
  %885 = load ptr, ptr %10, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %885, i32 0, i32 80
  %887 = load i32, ptr %886, align 4, !tbaa !42
  %888 = load ptr, ptr %10, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %888, i32 0, i32 81
  %890 = load i32, ptr %889, align 4, !tbaa !43
  %891 = load ptr, ptr %10, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %891, i32 0, i32 82
  %893 = load i32, ptr %892, align 4, !tbaa !44
  %894 = load ptr, ptr %10, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %894, i32 0, i32 83
  %896 = load i32, ptr %895, align 4, !tbaa !45
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %897, i32 0, i32 84
  %899 = load i32, ptr %898, align 4, !tbaa !46
  %900 = load ptr, ptr %10, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %900, i32 0, i32 85
  %902 = load i32, ptr %901, align 4, !tbaa !47
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %903, i32 0, i32 94
  %905 = load i32, ptr %904, align 4, !tbaa !55
  %906 = load ptr, ptr %10, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %906, i32 0, i32 95
  %908 = load i32, ptr %907, align 4, !tbaa !56
  %909 = load ptr, ptr %10, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %909, i32 0, i32 96
  %911 = load i32, ptr %910, align 4, !tbaa !57
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %912, i32 0, i32 97
  %914 = load i32, ptr %913, align 4, !tbaa !58
  %915 = load ptr, ptr %10, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %915, i32 0, i32 98
  %917 = load i32, ptr %916, align 4, !tbaa !59
  %918 = load ptr, ptr %10, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %918, i32 0, i32 99
  %920 = load i32, ptr %919, align 4, !tbaa !60
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx(ptr noundef %883, i32 noundef %884, i32 noundef %887, i32 noundef %890, i32 noundef %893, i32 noundef %896, i32 noundef %899, i32 noundef %902, i32 noundef %905, i32 noundef %908, i32 noundef %911, i32 noundef %914, i32 noundef %917, i32 noundef %920)
  br label %921

921:                                              ; preds = %882, %879
  br label %1200

922:                                              ; preds = %747
  %923 = load ptr, ptr %9, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %923, i32 0, i32 6
  %925 = load i32, ptr %924, align 4, !tbaa !11
  %926 = icmp ult i32 %925, 1101
  br i1 %926, label %927, label %1082

927:                                              ; preds = %922
  %928 = load i32, ptr %32, align 4, !tbaa !9
  %929 = add i32 %928, 19
  store i32 %929, ptr %32, align 4, !tbaa !9
  %930 = load i32, ptr %32, align 4, !tbaa !9
  %931 = sub i32 %930, 1
  %932 = load ptr, ptr %10, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %932, i32 0, i32 76
  store i32 %931, ptr %933, align 4, !tbaa !61
  %934 = load i32, ptr %32, align 4, !tbaa !9
  %935 = sub i32 %934, 2
  %936 = load ptr, ptr %10, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %936, i32 0, i32 77
  store i32 %935, ptr %937, align 4, !tbaa !62
  %938 = load i32, ptr %32, align 4, !tbaa !9
  %939 = sub i32 %938, 3
  %940 = load ptr, ptr %10, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %940, i32 0, i32 78
  store i32 %939, ptr %941, align 4, !tbaa !63
  %942 = load i32, ptr %32, align 4, !tbaa !9
  %943 = sub i32 %942, 4
  %944 = load ptr, ptr %10, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %944, i32 0, i32 79
  store i32 %943, ptr %945, align 4, !tbaa !64
  %946 = load i32, ptr %32, align 4, !tbaa !9
  %947 = sub i32 %946, 5
  %948 = load ptr, ptr %10, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %948, i32 0, i32 56
  store i32 %947, ptr %949, align 4, !tbaa !65
  %950 = load i32, ptr %32, align 4, !tbaa !9
  %951 = sub i32 %950, 6
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %952, i32 0, i32 80
  store i32 %951, ptr %953, align 4, !tbaa !42
  %954 = load i32, ptr %32, align 4, !tbaa !9
  %955 = sub i32 %954, 7
  %956 = load ptr, ptr %10, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %956, i32 0, i32 81
  store i32 %955, ptr %957, align 4, !tbaa !43
  %958 = load i32, ptr %32, align 4, !tbaa !9
  %959 = sub i32 %958, 8
  %960 = load ptr, ptr %10, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %960, i32 0, i32 82
  store i32 %959, ptr %961, align 4, !tbaa !44
  %962 = load i32, ptr %32, align 4, !tbaa !9
  %963 = sub i32 %962, 9
  %964 = load ptr, ptr %10, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %964, i32 0, i32 83
  store i32 %963, ptr %965, align 4, !tbaa !45
  %966 = load i32, ptr %32, align 4, !tbaa !9
  %967 = sub i32 %966, 10
  %968 = load ptr, ptr %10, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %968, i32 0, i32 84
  store i32 %967, ptr %969, align 4, !tbaa !46
  %970 = load i32, ptr %32, align 4, !tbaa !9
  %971 = sub i32 %970, 11
  %972 = load ptr, ptr %10, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %972, i32 0, i32 85
  store i32 %971, ptr %973, align 4, !tbaa !47
  %974 = load i32, ptr %32, align 4, !tbaa !9
  %975 = sub i32 %974, 12
  %976 = load ptr, ptr %10, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %976, i32 0, i32 86
  store i32 %975, ptr %977, align 4, !tbaa !18
  %978 = load i32, ptr %32, align 4, !tbaa !9
  %979 = sub i32 %978, 13
  %980 = load ptr, ptr %10, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %980, i32 0, i32 87
  store i32 %979, ptr %981, align 4, !tbaa !48
  %982 = load i32, ptr %32, align 4, !tbaa !9
  %983 = sub i32 %982, 14
  %984 = load ptr, ptr %10, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %984, i32 0, i32 70
  store i32 %983, ptr %985, align 4, !tbaa !66
  %986 = load i32, ptr %32, align 4, !tbaa !9
  %987 = sub i32 %986, 15
  %988 = load ptr, ptr %10, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %988, i32 0, i32 71
  store i32 %987, ptr %989, align 4, !tbaa !67
  %990 = load i32, ptr %32, align 4, !tbaa !9
  %991 = sub i32 %990, 16
  %992 = load ptr, ptr %10, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %992, i32 0, i32 72
  store i32 %991, ptr %993, align 4, !tbaa !68
  %994 = load i32, ptr %32, align 4, !tbaa !9
  %995 = sub i32 %994, 17
  %996 = load ptr, ptr %10, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %996, i32 0, i32 73
  store i32 %995, ptr %997, align 4, !tbaa !69
  %998 = load i32, ptr %32, align 4, !tbaa !9
  %999 = sub i32 %998, 18
  %1000 = load ptr, ptr %10, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1000, i32 0, i32 74
  store i32 %999, ptr %1001, align 4, !tbaa !70
  %1002 = load i32, ptr %32, align 4, !tbaa !9
  %1003 = sub i32 %1002, 19
  %1004 = load ptr, ptr %10, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1004, i32 0, i32 75
  store i32 %1003, ptr %1005, align 4, !tbaa !71
  %1006 = load i32, ptr %12, align 4, !tbaa !9
  %1007 = icmp eq i32 %1006, 11
  br i1 %1007, label %1008, label %1043

1008:                                             ; preds = %927
  %1009 = load ptr, ptr %9, align 8, !tbaa !5
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1010, i32 0, i32 76
  %1012 = load i32, ptr %1011, align 4, !tbaa !61
  %1013 = load ptr, ptr %10, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1013, i32 0, i32 77
  %1015 = load i32, ptr %1014, align 4, !tbaa !62
  %1016 = load ptr, ptr %10, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1016, i32 0, i32 78
  %1018 = load i32, ptr %1017, align 4, !tbaa !63
  %1019 = load ptr, ptr %10, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1019, i32 0, i32 79
  %1021 = load i32, ptr %1020, align 4, !tbaa !64
  %1022 = load ptr, ptr %10, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1022, i32 0, i32 56
  %1024 = load i32, ptr %1023, align 4, !tbaa !65
  %1025 = load ptr, ptr %10, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1025, i32 0, i32 80
  %1027 = load i32, ptr %1026, align 4, !tbaa !42
  %1028 = load ptr, ptr %10, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1028, i32 0, i32 81
  %1030 = load i32, ptr %1029, align 4, !tbaa !43
  %1031 = load ptr, ptr %10, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1031, i32 0, i32 82
  %1033 = load i32, ptr %1032, align 4, !tbaa !44
  %1034 = load ptr, ptr %10, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1034, i32 0, i32 83
  %1036 = load i32, ptr %1035, align 4, !tbaa !45
  %1037 = load ptr, ptr %10, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1037, i32 0, i32 84
  %1039 = load i32, ptr %1038, align 4, !tbaa !46
  %1040 = load ptr, ptr %10, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1040, i32 0, i32 85
  %1042 = load i32, ptr %1041, align 4, !tbaa !47
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512_vl256(ptr noundef %1009, i32 noundef %1012, i32 noundef %1015, i32 noundef %1018, i32 noundef %1021, i32 noundef %1024, i32 noundef %1027, i32 noundef %1030, i32 noundef %1033, i32 noundef %1036, i32 noundef %1039, i32 noundef %1042)
  br label %1043

1043:                                             ; preds = %1008, %927
  %1044 = load i32, ptr %12, align 4, !tbaa !9
  %1045 = icmp eq i32 %1044, 12
  br i1 %1045, label %1046, label %1081

1046:                                             ; preds = %1043
  %1047 = load ptr, ptr %9, align 8, !tbaa !5
  %1048 = load ptr, ptr %10, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1048, i32 0, i32 76
  %1050 = load i32, ptr %1049, align 4, !tbaa !61
  %1051 = load ptr, ptr %10, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1051, i32 0, i32 77
  %1053 = load i32, ptr %1052, align 4, !tbaa !62
  %1054 = load ptr, ptr %10, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1054, i32 0, i32 78
  %1056 = load i32, ptr %1055, align 4, !tbaa !63
  %1057 = load ptr, ptr %10, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1057, i32 0, i32 79
  %1059 = load i32, ptr %1058, align 4, !tbaa !64
  %1060 = load ptr, ptr %10, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1060, i32 0, i32 56
  %1062 = load i32, ptr %1061, align 4, !tbaa !65
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1063, i32 0, i32 80
  %1065 = load i32, ptr %1064, align 4, !tbaa !42
  %1066 = load ptr, ptr %10, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1066, i32 0, i32 81
  %1068 = load i32, ptr %1067, align 4, !tbaa !43
  %1069 = load ptr, ptr %10, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1069, i32 0, i32 82
  %1071 = load i32, ptr %1070, align 4, !tbaa !44
  %1072 = load ptr, ptr %10, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1072, i32 0, i32 83
  %1074 = load i32, ptr %1073, align 4, !tbaa !45
  %1075 = load ptr, ptr %10, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1075, i32 0, i32 84
  %1077 = load i32, ptr %1076, align 4, !tbaa !46
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1078, i32 0, i32 85
  %1080 = load i32, ptr %1079, align 4, !tbaa !47
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512_vl256(ptr noundef %1047, i32 noundef %1050, i32 noundef %1053, i32 noundef %1056, i32 noundef %1059, i32 noundef %1062, i32 noundef %1065, i32 noundef %1068, i32 noundef %1071, i32 noundef %1074, i32 noundef %1077, i32 noundef %1080)
  br label %1081

1081:                                             ; preds = %1046, %1043
  br label %1199

1082:                                             ; preds = %922
  %1083 = load i32, ptr %32, align 4, !tbaa !9
  %1084 = add i32 %1083, 14
  store i32 %1084, ptr %32, align 4, !tbaa !9
  %1085 = load i32, ptr %32, align 4, !tbaa !9
  %1086 = sub i32 %1085, 1
  %1087 = load ptr, ptr %10, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1087, i32 0, i32 70
  store i32 %1086, ptr %1088, align 4, !tbaa !66
  %1089 = load i32, ptr %32, align 4, !tbaa !9
  %1090 = sub i32 %1089, 2
  %1091 = load ptr, ptr %10, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1091, i32 0, i32 71
  store i32 %1090, ptr %1092, align 4, !tbaa !67
  %1093 = load i32, ptr %32, align 4, !tbaa !9
  %1094 = sub i32 %1093, 3
  %1095 = load ptr, ptr %10, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1095, i32 0, i32 72
  store i32 %1094, ptr %1096, align 4, !tbaa !68
  %1097 = load i32, ptr %32, align 4, !tbaa !9
  %1098 = sub i32 %1097, 4
  %1099 = load ptr, ptr %10, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1099, i32 0, i32 73
  store i32 %1098, ptr %1100, align 4, !tbaa !69
  %1101 = load i32, ptr %32, align 4, !tbaa !9
  %1102 = sub i32 %1101, 5
  %1103 = load ptr, ptr %10, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1103, i32 0, i32 74
  store i32 %1102, ptr %1104, align 4, !tbaa !70
  %1105 = load i32, ptr %32, align 4, !tbaa !9
  %1106 = sub i32 %1105, 6
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1107, i32 0, i32 75
  store i32 %1106, ptr %1108, align 4, !tbaa !71
  %1109 = load i32, ptr %32, align 4, !tbaa !9
  %1110 = sub i32 %1109, 7
  %1111 = load ptr, ptr %10, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1111, i32 0, i32 76
  store i32 %1110, ptr %1112, align 4, !tbaa !61
  %1113 = load i32, ptr %32, align 4, !tbaa !9
  %1114 = sub i32 %1113, 8
  %1115 = load ptr, ptr %10, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1115, i32 0, i32 77
  store i32 %1114, ptr %1116, align 4, !tbaa !62
  %1117 = load i32, ptr %32, align 4, !tbaa !9
  %1118 = sub i32 %1117, 9
  %1119 = load ptr, ptr %10, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1119, i32 0, i32 78
  store i32 %1118, ptr %1120, align 4, !tbaa !63
  %1121 = load i32, ptr %32, align 4, !tbaa !9
  %1122 = sub i32 %1121, 10
  %1123 = load ptr, ptr %10, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1123, i32 0, i32 79
  store i32 %1122, ptr %1124, align 4, !tbaa !64
  %1125 = load i32, ptr %32, align 4, !tbaa !9
  %1126 = sub i32 %1125, 11
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1127, i32 0, i32 56
  store i32 %1126, ptr %1128, align 4, !tbaa !65
  %1129 = load i32, ptr %32, align 4, !tbaa !9
  %1130 = sub i32 %1129, 12
  %1131 = load ptr, ptr %10, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1131, i32 0, i32 36
  store i32 %1130, ptr %1132, align 4, !tbaa !72
  %1133 = load i32, ptr %32, align 4, !tbaa !9
  %1134 = sub i32 %1133, 13
  %1135 = load ptr, ptr %10, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1135, i32 0, i32 40
  store i32 %1134, ptr %1136, align 4, !tbaa !73
  %1137 = load i32, ptr %32, align 4, !tbaa !9
  %1138 = sub i32 %1137, 14
  %1139 = load ptr, ptr %10, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1139, i32 0, i32 44
  store i32 %1138, ptr %1140, align 4, !tbaa !74
  %1141 = load i32, ptr %12, align 4, !tbaa !9
  %1142 = icmp eq i32 %1141, 11
  br i1 %1142, label %1143, label %1169

1143:                                             ; preds = %1082
  %1144 = load ptr, ptr %9, align 8, !tbaa !5
  %1145 = load ptr, ptr %10, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1145, i32 0, i32 76
  %1147 = load i32, ptr %1146, align 4, !tbaa !61
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1148, i32 0, i32 77
  %1150 = load i32, ptr %1149, align 4, !tbaa !62
  %1151 = load ptr, ptr %10, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1151, i32 0, i32 78
  %1153 = load i32, ptr %1152, align 4, !tbaa !63
  %1154 = load ptr, ptr %10, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1154, i32 0, i32 79
  %1156 = load i32, ptr %1155, align 4, !tbaa !64
  %1157 = load ptr, ptr %10, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1157, i32 0, i32 56
  %1159 = load i32, ptr %1158, align 4, !tbaa !65
  %1160 = load ptr, ptr %10, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1160, i32 0, i32 36
  %1162 = load i32, ptr %1161, align 4, !tbaa !72
  %1163 = load ptr, ptr %10, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1163, i32 0, i32 40
  %1165 = load i32, ptr %1164, align 4, !tbaa !73
  %1166 = load ptr, ptr %10, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1166, i32 0, i32 44
  %1168 = load i32, ptr %1167, align 4, !tbaa !74
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512(ptr noundef %1144, i32 noundef %1147, i32 noundef %1150, i32 noundef %1153, i32 noundef %1156, i32 noundef %1159, i32 noundef %1162, i32 noundef %1165, i32 noundef %1168)
  br label %1169

1169:                                             ; preds = %1143, %1082
  %1170 = load i32, ptr %12, align 4, !tbaa !9
  %1171 = icmp eq i32 %1170, 12
  br i1 %1171, label %1172, label %1198

1172:                                             ; preds = %1169
  %1173 = load ptr, ptr %9, align 8, !tbaa !5
  %1174 = load ptr, ptr %10, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1174, i32 0, i32 76
  %1176 = load i32, ptr %1175, align 4, !tbaa !61
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1177, i32 0, i32 77
  %1179 = load i32, ptr %1178, align 4, !tbaa !62
  %1180 = load ptr, ptr %10, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1180, i32 0, i32 78
  %1182 = load i32, ptr %1181, align 4, !tbaa !63
  %1183 = load ptr, ptr %10, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1183, i32 0, i32 79
  %1185 = load i32, ptr %1184, align 4, !tbaa !64
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1186, i32 0, i32 56
  %1188 = load i32, ptr %1187, align 4, !tbaa !65
  %1189 = load ptr, ptr %10, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1189, i32 0, i32 36
  %1191 = load i32, ptr %1190, align 4, !tbaa !72
  %1192 = load ptr, ptr %10, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1192, i32 0, i32 40
  %1194 = load i32, ptr %1193, align 4, !tbaa !73
  %1195 = load ptr, ptr %10, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1195, i32 0, i32 44
  %1197 = load i32, ptr %1196, align 4, !tbaa !74
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512(ptr noundef %1173, i32 noundef %1176, i32 noundef %1179, i32 noundef %1182, i32 noundef %1185, i32 noundef %1188, i32 noundef %1191, i32 noundef %1194, i32 noundef %1197)
  br label %1198

1198:                                             ; preds = %1172, %1169
  br label %1199

1199:                                             ; preds = %1198, %1081
  br label %1200

1200:                                             ; preds = %1199, %921
  %1201 = load i32, ptr %32, align 4, !tbaa !9
  %1202 = load ptr, ptr %10, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1202, i32 0, i32 18
  store i32 %1201, ptr %1203, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %1204

1204:                                             ; preds = %1200, %744
  %1205 = load i32, ptr %12, align 4, !tbaa !9
  %1206 = icmp eq i32 %1205, 17
  br i1 %1206, label %1210, label %1207

1207:                                             ; preds = %1204
  %1208 = load i32, ptr %12, align 4, !tbaa !9
  %1209 = icmp eq i32 %1208, 36
  br i1 %1209, label %1210, label %1453

1210:                                             ; preds = %1207, %1204
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %1211 = load ptr, ptr %10, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1211, i32 0, i32 18
  %1213 = load i32, ptr %1212, align 4, !tbaa !14
  store i32 %1213, ptr %33, align 4, !tbaa !9
  %1214 = load ptr, ptr %9, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1214, i32 0, i32 6
  %1216 = load i32, ptr %1215, align 4, !tbaa !11
  %1217 = icmp ult i32 %1216, 1051
  br i1 %1217, label %1218, label %1285

1218:                                             ; preds = %1210
  %1219 = load i32, ptr %33, align 4, !tbaa !9
  %1220 = add i32 %1219, 9
  store i32 %1220, ptr %33, align 4, !tbaa !9
  %1221 = load i32, ptr %33, align 4, !tbaa !9
  %1222 = sub i32 %1221, 1
  %1223 = load ptr, ptr %10, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1223, i32 0, i32 56
  store i32 %1222, ptr %1224, align 4, !tbaa !65
  %1225 = load i32, ptr %33, align 4, !tbaa !9
  %1226 = sub i32 %1225, 2
  %1227 = load ptr, ptr %10, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1227, i32 0, i32 36
  store i32 %1226, ptr %1228, align 4, !tbaa !72
  %1229 = load i32, ptr %33, align 4, !tbaa !9
  %1230 = sub i32 %1229, 3
  %1231 = load ptr, ptr %10, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1231, i32 0, i32 40
  store i32 %1230, ptr %1232, align 4, !tbaa !73
  %1233 = load i32, ptr %33, align 4, !tbaa !9
  %1234 = sub i32 %1233, 4
  %1235 = load ptr, ptr %10, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1235, i32 0, i32 44
  store i32 %1234, ptr %1236, align 4, !tbaa !74
  %1237 = load i32, ptr %33, align 4, !tbaa !9
  %1238 = sub i32 %1237, 5
  %1239 = load ptr, ptr %10, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1239, i32 0, i32 51
  store i32 %1238, ptr %1240, align 4, !tbaa !75
  %1241 = load i32, ptr %33, align 4, !tbaa !9
  %1242 = sub i32 %1241, 6
  %1243 = load ptr, ptr %10, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1243, i32 0, i32 60
  store i32 %1242, ptr %1244, align 4, !tbaa !76
  %1245 = load i32, ptr %33, align 4, !tbaa !9
  %1246 = sub i32 %1245, 7
  %1247 = load ptr, ptr %10, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1247, i32 0, i32 66
  store i32 %1246, ptr %1248, align 4, !tbaa !77
  %1249 = load i32, ptr %33, align 4, !tbaa !9
  %1250 = sub i32 %1249, 8
  %1251 = load ptr, ptr %10, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1251, i32 0, i32 52
  store i32 %1250, ptr %1252, align 4, !tbaa !78
  %1253 = load i32, ptr %33, align 4, !tbaa !9
  %1254 = sub i32 %1253, 9
  %1255 = load ptr, ptr %10, align 8, !tbaa !5
  %1256 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1255, i32 0, i32 53
  store i32 %1254, ptr %1256, align 4, !tbaa !79
  %1257 = load ptr, ptr %9, align 8, !tbaa !5
  %1258 = load ptr, ptr %10, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1258, i32 0, i32 36
  %1260 = load i32, ptr %1259, align 4, !tbaa !72
  %1261 = load ptr, ptr %10, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1261, i32 0, i32 40
  %1263 = load i32, ptr %1262, align 4, !tbaa !73
  %1264 = load ptr, ptr %10, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1264, i32 0, i32 44
  %1266 = load i32, ptr %1265, align 4, !tbaa !74
  %1267 = load ptr, ptr %10, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1267, i32 0, i32 51
  %1269 = load i32, ptr %1268, align 4, !tbaa !75
  %1270 = load ptr, ptr %10, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1270, i32 0, i32 56
  %1272 = load i32, ptr %1271, align 4, !tbaa !65
  %1273 = load ptr, ptr %10, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1273, i32 0, i32 60
  %1275 = load i32, ptr %1274, align 4, !tbaa !76
  %1276 = load ptr, ptr %10, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1276, i32 0, i32 66
  %1278 = load i32, ptr %1277, align 4, !tbaa !77
  %1279 = load ptr, ptr %10, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1279, i32 0, i32 52
  %1281 = load i32, ptr %1280, align 4, !tbaa !78
  %1282 = load ptr, ptr %10, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1282, i32 0, i32 53
  %1284 = load i32, ptr %1283, align 4, !tbaa !79
  call void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx(ptr noundef %1257, i32 noundef %1260, i32 noundef %1263, i32 noundef %1266, i32 noundef %1269, i32 noundef %1272, i32 noundef %1275, i32 noundef %1278, i32 noundef %1281, i32 noundef %1284)
  br label %1449

1285:                                             ; preds = %1210
  %1286 = call i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx()
  %1287 = icmp eq i32 %1286, 0
  br i1 %1287, label %1288, label %1337

1288:                                             ; preds = %1285
  %1289 = load i32, ptr %33, align 4, !tbaa !9
  %1290 = add i32 %1289, 6
  store i32 %1290, ptr %33, align 4, !tbaa !9
  %1291 = load i32, ptr %33, align 4, !tbaa !9
  %1292 = sub i32 %1291, 1
  %1293 = load ptr, ptr %10, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1293, i32 0, i32 56
  store i32 %1292, ptr %1294, align 4, !tbaa !65
  %1295 = load i32, ptr %33, align 4, !tbaa !9
  %1296 = sub i32 %1295, 2
  %1297 = load ptr, ptr %10, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1297, i32 0, i32 36
  store i32 %1296, ptr %1298, align 4, !tbaa !72
  %1299 = load i32, ptr %33, align 4, !tbaa !9
  %1300 = sub i32 %1299, 3
  %1301 = load ptr, ptr %10, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1301, i32 0, i32 40
  store i32 %1300, ptr %1302, align 4, !tbaa !73
  %1303 = load i32, ptr %33, align 4, !tbaa !9
  %1304 = sub i32 %1303, 4
  %1305 = load ptr, ptr %10, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1305, i32 0, i32 44
  store i32 %1304, ptr %1306, align 4, !tbaa !74
  %1307 = load i32, ptr %33, align 4, !tbaa !9
  %1308 = sub i32 %1307, 5
  %1309 = load ptr, ptr %10, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1309, i32 0, i32 51
  store i32 %1308, ptr %1310, align 4, !tbaa !75
  %1311 = load i32, ptr %33, align 4, !tbaa !9
  %1312 = sub i32 %1311, 6
  %1313 = load ptr, ptr %10, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1313, i32 0, i32 60
  store i32 %1312, ptr %1314, align 4, !tbaa !76
  %1315 = load ptr, ptr %9, align 8, !tbaa !5
  %1316 = load ptr, ptr %10, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1316, i32 0, i32 36
  %1318 = load i32, ptr %1317, align 4, !tbaa !72
  %1319 = load ptr, ptr %10, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1319, i32 0, i32 40
  %1321 = load i32, ptr %1320, align 4, !tbaa !73
  %1322 = load ptr, ptr %10, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1322, i32 0, i32 44
  %1324 = load i32, ptr %1323, align 4, !tbaa !74
  %1325 = load ptr, ptr %10, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1325, i32 0, i32 51
  %1327 = load i32, ptr %1326, align 4, !tbaa !75
  %1328 = load ptr, ptr %10, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1328, i32 0, i32 56
  %1330 = load i32, ptr %1329, align 4, !tbaa !65
  %1331 = load ptr, ptr %10, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1331, i32 0, i32 60
  %1333 = load i32, ptr %1332, align 4, !tbaa !76
  %1334 = load ptr, ptr %10, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1334, i32 0, i32 128
  %1336 = load i8, ptr %1335, align 4, !tbaa !21
  call void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx512(ptr noundef %1315, i32 noundef %1318, i32 noundef %1321, i32 noundef %1324, i32 noundef %1327, i32 noundef %1330, i32 noundef %1333, i8 noundef zeroext %1336)
  br label %1448

1337:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %1338 = load ptr, ptr %10, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1338, i32 0, i32 19
  %1340 = load i32, ptr %1339, align 4, !tbaa !80
  store i32 %1340, ptr %34, align 4, !tbaa !9
  %1341 = load i32, ptr %33, align 4, !tbaa !9
  %1342 = add i32 %1341, 14
  store i32 %1342, ptr %33, align 4, !tbaa !9
  %1343 = load i32, ptr %34, align 4, !tbaa !9
  %1344 = add i32 %1343, 1
  store i32 %1344, ptr %34, align 4, !tbaa !9
  %1345 = load i32, ptr %33, align 4, !tbaa !9
  %1346 = sub i32 %1345, 1
  %1347 = load ptr, ptr %10, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1347, i32 0, i32 56
  store i32 %1346, ptr %1348, align 4, !tbaa !65
  %1349 = load i32, ptr %33, align 4, !tbaa !9
  %1350 = sub i32 %1349, 2
  %1351 = load ptr, ptr %10, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1351, i32 0, i32 36
  store i32 %1350, ptr %1352, align 4, !tbaa !72
  %1353 = load i32, ptr %33, align 4, !tbaa !9
  %1354 = sub i32 %1353, 3
  %1355 = load ptr, ptr %10, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1355, i32 0, i32 40
  store i32 %1354, ptr %1356, align 4, !tbaa !73
  %1357 = load i32, ptr %33, align 4, !tbaa !9
  %1358 = sub i32 %1357, 4
  %1359 = load ptr, ptr %10, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1359, i32 0, i32 44
  store i32 %1358, ptr %1360, align 4, !tbaa !74
  %1361 = load i32, ptr %33, align 4, !tbaa !9
  %1362 = sub i32 %1361, 5
  %1363 = load ptr, ptr %10, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1363, i32 0, i32 51
  store i32 %1362, ptr %1364, align 4, !tbaa !75
  %1365 = load i32, ptr %33, align 4, !tbaa !9
  %1366 = sub i32 %1365, 6
  %1367 = load ptr, ptr %10, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1367, i32 0, i32 62
  store i32 %1366, ptr %1368, align 4, !tbaa !81
  %1369 = load i32, ptr %33, align 4, !tbaa !9
  %1370 = sub i32 %1369, 7
  %1371 = load ptr, ptr %10, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1371, i32 0, i32 63
  store i32 %1370, ptr %1372, align 4, !tbaa !82
  %1373 = load i32, ptr %33, align 4, !tbaa !9
  %1374 = sub i32 %1373, 8
  %1375 = load ptr, ptr %10, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1375, i32 0, i32 60
  store i32 %1374, ptr %1376, align 4, !tbaa !76
  %1377 = load i32, ptr %33, align 4, !tbaa !9
  %1378 = sub i32 %1377, 9
  %1379 = load ptr, ptr %10, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1379, i32 0, i32 61
  store i32 %1378, ptr %1380, align 4, !tbaa !83
  %1381 = load i32, ptr %33, align 4, !tbaa !9
  %1382 = sub i32 %1381, 10
  %1383 = load ptr, ptr %10, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1383, i32 0, i32 67
  store i32 %1382, ptr %1384, align 4, !tbaa !84
  %1385 = load i32, ptr %33, align 4, !tbaa !9
  %1386 = sub i32 %1385, 11
  %1387 = load ptr, ptr %10, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1387, i32 0, i32 68
  store i32 %1386, ptr %1388, align 4, !tbaa !85
  %1389 = load i32, ptr %33, align 4, !tbaa !9
  %1390 = sub i32 %1389, 12
  %1391 = load ptr, ptr %10, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1391, i32 0, i32 64
  store i32 %1390, ptr %1392, align 4, !tbaa !40
  %1393 = load i32, ptr %33, align 4, !tbaa !9
  %1394 = sub i32 %1393, 13
  %1395 = load ptr, ptr %10, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1395, i32 0, i32 65
  store i32 %1394, ptr %1396, align 4, !tbaa !41
  %1397 = load i32, ptr %33, align 4, !tbaa !9
  %1398 = sub i32 %1397, 14
  %1399 = load ptr, ptr %10, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1399, i32 0, i32 66
  store i32 %1398, ptr %1400, align 4, !tbaa !77
  %1401 = load i32, ptr %34, align 4, !tbaa !9
  %1402 = sub i32 %1401, 1
  %1403 = load ptr, ptr %10, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1403, i32 0, i32 69
  store i32 %1402, ptr %1404, align 4, !tbaa !86
  %1405 = load ptr, ptr %9, align 8, !tbaa !5
  %1406 = load ptr, ptr %10, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1406, i32 0, i32 36
  %1408 = load i32, ptr %1407, align 4, !tbaa !72
  %1409 = load ptr, ptr %10, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1409, i32 0, i32 40
  %1411 = load i32, ptr %1410, align 4, !tbaa !73
  %1412 = load ptr, ptr %10, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1412, i32 0, i32 44
  %1414 = load i32, ptr %1413, align 4, !tbaa !74
  %1415 = load ptr, ptr %10, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1415, i32 0, i32 51
  %1417 = load i32, ptr %1416, align 4, !tbaa !75
  %1418 = load ptr, ptr %10, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1418, i32 0, i32 62
  %1420 = load i32, ptr %1419, align 4, !tbaa !81
  %1421 = load ptr, ptr %10, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1421, i32 0, i32 63
  %1423 = load i32, ptr %1422, align 4, !tbaa !82
  %1424 = load ptr, ptr %10, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1424, i32 0, i32 56
  %1426 = load i32, ptr %1425, align 4, !tbaa !65
  %1427 = load ptr, ptr %10, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1427, i32 0, i32 60
  %1429 = load i32, ptr %1428, align 4, !tbaa !76
  %1430 = load ptr, ptr %10, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1430, i32 0, i32 61
  %1432 = load i32, ptr %1431, align 4, !tbaa !83
  %1433 = load ptr, ptr %10, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1433, i32 0, i32 66
  %1435 = load i32, ptr %1434, align 4, !tbaa !77
  %1436 = load ptr, ptr %10, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1436, i32 0, i32 67
  %1438 = load i32, ptr %1437, align 4, !tbaa !84
  %1439 = load ptr, ptr %10, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1439, i32 0, i32 68
  %1441 = load i32, ptr %1440, align 4, !tbaa !85
  %1442 = load ptr, ptr %10, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1442, i32 0, i32 128
  %1444 = load i8, ptr %1443, align 4, !tbaa !21
  call void @libxsmm_generator_prepare_coeffs_exp_ps_5dts_avx512(ptr noundef %1405, i32 noundef %1408, i32 noundef %1411, i32 noundef %1414, i32 noundef %1417, i32 noundef %1420, i32 noundef %1423, i32 noundef %1426, i32 noundef %1429, i32 noundef %1432, i32 noundef %1435, i32 noundef %1438, i32 noundef %1441, i8 noundef zeroext %1444)
  %1445 = load i32, ptr %34, align 4, !tbaa !9
  %1446 = load ptr, ptr %10, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1446, i32 0, i32 19
  store i32 %1445, ptr %1447, align 4, !tbaa !80
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  br label %1448

1448:                                             ; preds = %1337, %1288
  br label %1449

1449:                                             ; preds = %1448, %1218
  %1450 = load i32, ptr %33, align 4, !tbaa !9
  %1451 = load ptr, ptr %10, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1451, i32 0, i32 18
  store i32 %1450, ptr %1452, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %1453

1453:                                             ; preds = %1449, %1207
  %1454 = load i32, ptr %12, align 4, !tbaa !9
  %1455 = icmp eq i32 %1454, 7
  br i1 %1455, label %1459, label %1456

1456:                                             ; preds = %1453
  %1457 = load i32, ptr %12, align 4, !tbaa !9
  %1458 = icmp eq i32 %1457, 8
  br i1 %1458, label %1459, label %1648

1459:                                             ; preds = %1456, %1453
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %1460 = load ptr, ptr %10, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1460, i32 0, i32 18
  %1462 = load i32, ptr %1461, align 4, !tbaa !14
  store i32 %1462, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %1463 = load ptr, ptr %10, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1463, i32 0, i32 19
  %1465 = load i32, ptr %1464, align 4, !tbaa !80
  store i32 %1465, ptr %36, align 4, !tbaa !9
  %1466 = load i32, ptr %35, align 4, !tbaa !9
  %1467 = add i32 %1466, 14
  store i32 %1467, ptr %35, align 4, !tbaa !9
  %1468 = load i32, ptr %36, align 4, !tbaa !9
  %1469 = add i32 %1468, 2
  store i32 %1469, ptr %36, align 4, !tbaa !9
  %1470 = load ptr, ptr %9, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1470, i32 0, i32 6
  %1472 = load i32, ptr %1471, align 4, !tbaa !11
  %1473 = icmp ult i32 %1472, 1051
  br i1 %1473, label %1474, label %1483

1474:                                             ; preds = %1459
  %1475 = load ptr, ptr %10, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1475, i32 0, i32 20
  %1477 = load i32, ptr %1476, align 4, !tbaa !23
  %1478 = icmp ugt i32 %1477, 0
  br i1 %1478, label %1479, label %1482

1479:                                             ; preds = %1474
  %1480 = load i32, ptr %35, align 4, !tbaa !9
  %1481 = sub i32 %1480, 2
  store i32 %1481, ptr %35, align 4, !tbaa !9
  br label %1482

1482:                                             ; preds = %1479, %1474
  br label %1483

1483:                                             ; preds = %1482, %1459
  %1484 = load i32, ptr %36, align 4, !tbaa !9
  %1485 = sub i32 %1484, 1
  %1486 = load ptr, ptr %10, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1486, i32 0, i32 57
  store i32 %1485, ptr %1487, align 4, !tbaa !87
  %1488 = load i32, ptr %36, align 4, !tbaa !9
  %1489 = sub i32 %1488, 2
  %1490 = load ptr, ptr %10, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1490, i32 0, i32 58
  store i32 %1489, ptr %1491, align 4, !tbaa !88
  %1492 = load i32, ptr %35, align 4, !tbaa !9
  %1493 = sub i32 %1492, 1
  %1494 = load ptr, ptr %10, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1494, i32 0, i32 33
  store i32 %1493, ptr %1495, align 4, !tbaa !89
  %1496 = load i32, ptr %35, align 4, !tbaa !9
  %1497 = sub i32 %1496, 2
  %1498 = load ptr, ptr %10, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1498, i32 0, i32 54
  store i32 %1497, ptr %1499, align 4, !tbaa !39
  %1500 = load i32, ptr %35, align 4, !tbaa !9
  %1501 = sub i32 %1500, 3
  %1502 = load ptr, ptr %10, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1502, i32 0, i32 55
  store i32 %1501, ptr %1503, align 4, !tbaa !90
  %1504 = load i32, ptr %35, align 4, !tbaa !9
  %1505 = sub i32 %1504, 4
  %1506 = load ptr, ptr %10, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1506, i32 0, i32 36
  store i32 %1505, ptr %1507, align 4, !tbaa !72
  %1508 = load i32, ptr %35, align 4, !tbaa !9
  %1509 = sub i32 %1508, 5
  %1510 = load ptr, ptr %10, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1510, i32 0, i32 40
  store i32 %1509, ptr %1511, align 4, !tbaa !73
  %1512 = load i32, ptr %35, align 4, !tbaa !9
  %1513 = sub i32 %1512, 6
  %1514 = load ptr, ptr %10, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1514, i32 0, i32 44
  store i32 %1513, ptr %1515, align 4, !tbaa !74
  %1516 = load i32, ptr %35, align 4, !tbaa !9
  %1517 = sub i32 %1516, 7
  %1518 = load ptr, ptr %10, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1518, i32 0, i32 51
  store i32 %1517, ptr %1519, align 4, !tbaa !75
  %1520 = load i32, ptr %35, align 4, !tbaa !9
  %1521 = sub i32 %1520, 8
  %1522 = load ptr, ptr %10, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1522, i32 0, i32 48
  store i32 %1521, ptr %1523, align 4, !tbaa !91
  %1524 = load i32, ptr %35, align 4, !tbaa !9
  %1525 = sub i32 %1524, 9
  %1526 = load ptr, ptr %10, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1526, i32 0, i32 49
  store i32 %1525, ptr %1527, align 4, !tbaa !92
  %1528 = load i32, ptr %35, align 4, !tbaa !9
  %1529 = sub i32 %1528, 10
  %1530 = load ptr, ptr %10, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1530, i32 0, i32 50
  store i32 %1529, ptr %1531, align 4, !tbaa !93
  %1532 = load i32, ptr %35, align 4, !tbaa !9
  %1533 = sub i32 %1532, 11
  %1534 = load ptr, ptr %10, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1534, i32 0, i32 52
  store i32 %1533, ptr %1535, align 4, !tbaa !78
  %1536 = load i32, ptr %35, align 4, !tbaa !9
  %1537 = sub i32 %1536, 12
  %1538 = load ptr, ptr %10, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1538, i32 0, i32 53
  store i32 %1537, ptr %1539, align 4, !tbaa !79
  %1540 = load i32, ptr %35, align 4, !tbaa !9
  %1541 = sub i32 %1540, 13
  %1542 = load ptr, ptr %10, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1542, i32 0, i32 34
  store i32 %1541, ptr %1543, align 4, !tbaa !94
  %1544 = load i32, ptr %35, align 4, !tbaa !9
  %1545 = sub i32 %1544, 14
  %1546 = load ptr, ptr %10, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1546, i32 0, i32 35
  store i32 %1545, ptr %1547, align 4, !tbaa !95
  %1548 = load ptr, ptr %9, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1548, i32 0, i32 6
  %1550 = load i32, ptr %1549, align 4, !tbaa !11
  %1551 = icmp ult i32 %1550, 1051
  br i1 %1551, label %1552, label %1603

1552:                                             ; preds = %1483
  %1553 = load ptr, ptr %9, align 8, !tbaa !5
  %1554 = load ptr, ptr %10, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1554, i32 0, i32 36
  %1556 = load i32, ptr %1555, align 4, !tbaa !72
  %1557 = load ptr, ptr %10, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1557, i32 0, i32 40
  %1559 = load i32, ptr %1558, align 4, !tbaa !73
  %1560 = load ptr, ptr %10, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1560, i32 0, i32 44
  %1562 = load i32, ptr %1561, align 4, !tbaa !74
  %1563 = load ptr, ptr %10, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1563, i32 0, i32 51
  %1565 = load i32, ptr %1564, align 4, !tbaa !75
  %1566 = load ptr, ptr %10, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1566, i32 0, i32 48
  %1568 = load i32, ptr %1567, align 4, !tbaa !91
  %1569 = load ptr, ptr %10, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1569, i32 0, i32 49
  %1571 = load i32, ptr %1570, align 4, !tbaa !92
  %1572 = load ptr, ptr %10, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1572, i32 0, i32 50
  %1574 = load i32, ptr %1573, align 4, !tbaa !93
  %1575 = load ptr, ptr %10, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1575, i32 0, i32 52
  %1577 = load i32, ptr %1576, align 4, !tbaa !78
  %1578 = load ptr, ptr %10, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1578, i32 0, i32 53
  %1580 = load i32, ptr %1579, align 4, !tbaa !79
  %1581 = load ptr, ptr %10, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1581, i32 0, i32 54
  %1583 = load i32, ptr %1582, align 4, !tbaa !39
  %1584 = load ptr, ptr %10, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1584, i32 0, i32 55
  %1586 = load i32, ptr %1585, align 4, !tbaa !90
  call void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx(ptr noundef %1553, i32 noundef %1556, i32 noundef %1559, i32 noundef %1562, i32 noundef %1565, i32 noundef %1568, i32 noundef %1571, i32 noundef %1574, i32 noundef %1577, i32 noundef %1580, i32 noundef %1583, i32 noundef %1586)
  %1587 = load ptr, ptr %10, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1587, i32 0, i32 20
  %1589 = load i32, ptr %1588, align 4, !tbaa !23
  %1590 = icmp ugt i32 %1589, 0
  br i1 %1590, label %1591, label %1602

1591:                                             ; preds = %1552
  %1592 = load ptr, ptr %10, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1592, i32 0, i32 24
  %1594 = load i32, ptr %1593, align 4, !tbaa !24
  %1595 = load ptr, ptr %10, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1595, i32 0, i32 34
  store i32 %1594, ptr %1596, align 4, !tbaa !94
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1597, i32 0, i32 25
  %1599 = load i32, ptr %1598, align 4, !tbaa !25
  %1600 = load ptr, ptr %10, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1600, i32 0, i32 35
  store i32 %1599, ptr %1601, align 4, !tbaa !95
  br label %1602

1602:                                             ; preds = %1591, %1552
  br label %1641

1603:                                             ; preds = %1483
  %1604 = load ptr, ptr %9, align 8, !tbaa !5
  %1605 = load ptr, ptr %10, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1605, i32 0, i32 36
  %1607 = load i32, ptr %1606, align 4, !tbaa !72
  %1608 = load ptr, ptr %10, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1608, i32 0, i32 40
  %1610 = load i32, ptr %1609, align 4, !tbaa !73
  %1611 = load ptr, ptr %10, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1611, i32 0, i32 44
  %1613 = load i32, ptr %1612, align 4, !tbaa !74
  %1614 = load ptr, ptr %10, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1614, i32 0, i32 51
  %1616 = load i32, ptr %1615, align 4, !tbaa !75
  %1617 = load ptr, ptr %10, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1617, i32 0, i32 48
  %1619 = load i32, ptr %1618, align 4, !tbaa !91
  %1620 = load ptr, ptr %10, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1620, i32 0, i32 49
  %1622 = load i32, ptr %1621, align 4, !tbaa !92
  %1623 = load ptr, ptr %10, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1623, i32 0, i32 50
  %1625 = load i32, ptr %1624, align 4, !tbaa !93
  %1626 = load ptr, ptr %10, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1626, i32 0, i32 52
  %1628 = load i32, ptr %1627, align 4, !tbaa !78
  %1629 = load ptr, ptr %10, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1629, i32 0, i32 53
  %1631 = load i32, ptr %1630, align 4, !tbaa !79
  %1632 = load ptr, ptr %10, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1632, i32 0, i32 54
  %1634 = load i32, ptr %1633, align 4, !tbaa !39
  %1635 = load ptr, ptr %10, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1635, i32 0, i32 55
  %1637 = load i32, ptr %1636, align 4, !tbaa !90
  %1638 = load ptr, ptr %10, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1638, i32 0, i32 128
  %1640 = load i8, ptr %1639, align 4, !tbaa !21
  call void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx512(ptr noundef %1604, i32 noundef %1607, i32 noundef %1610, i32 noundef %1613, i32 noundef %1616, i32 noundef %1619, i32 noundef %1622, i32 noundef %1625, i32 noundef %1628, i32 noundef %1631, i32 noundef %1634, i32 noundef %1637, i8 noundef zeroext %1640)
  br label %1641

1641:                                             ; preds = %1603, %1602
  %1642 = load i32, ptr %36, align 4, !tbaa !9
  %1643 = load ptr, ptr %10, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1643, i32 0, i32 19
  store i32 %1642, ptr %1644, align 4, !tbaa !80
  %1645 = load i32, ptr %35, align 4, !tbaa !9
  %1646 = load ptr, ptr %10, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1646, i32 0, i32 18
  store i32 %1645, ptr %1647, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  br label %1648

1648:                                             ; preds = %1641, %1456
  %1649 = load i32, ptr %12, align 4, !tbaa !9
  %1650 = icmp eq i32 %1649, 9
  br i1 %1650, label %1654, label %1651

1651:                                             ; preds = %1648
  %1652 = load i32, ptr %12, align 4, !tbaa !9
  %1653 = icmp eq i32 %1652, 10
  br i1 %1653, label %1654, label %1852

1654:                                             ; preds = %1651, %1648
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %1655 = load ptr, ptr %10, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1655, i32 0, i32 18
  %1657 = load i32, ptr %1656, align 4, !tbaa !14
  store i32 %1657, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %1658 = load ptr, ptr %10, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1658, i32 0, i32 19
  %1660 = load i32, ptr %1659, align 4, !tbaa !80
  store i32 %1660, ptr %38, align 4, !tbaa !9
  %1661 = load i32, ptr %37, align 4, !tbaa !9
  %1662 = add i32 %1661, 15
  store i32 %1662, ptr %37, align 4, !tbaa !9
  %1663 = load i32, ptr %38, align 4, !tbaa !9
  %1664 = add i32 %1663, 2
  store i32 %1664, ptr %38, align 4, !tbaa !9
  %1665 = load ptr, ptr %9, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1665, i32 0, i32 6
  %1667 = load i32, ptr %1666, align 4, !tbaa !11
  %1668 = icmp ult i32 %1667, 1051
  br i1 %1668, label %1669, label %1680

1669:                                             ; preds = %1654
  %1670 = load i32, ptr %37, align 4, !tbaa !9
  %1671 = add i32 %1670, -1
  store i32 %1671, ptr %37, align 4, !tbaa !9
  %1672 = load ptr, ptr %10, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1672, i32 0, i32 20
  %1674 = load i32, ptr %1673, align 4, !tbaa !23
  %1675 = icmp ugt i32 %1674, 0
  br i1 %1675, label %1676, label %1679

1676:                                             ; preds = %1669
  %1677 = load i32, ptr %37, align 4, !tbaa !9
  %1678 = sub i32 %1677, 2
  store i32 %1678, ptr %37, align 4, !tbaa !9
  br label %1679

1679:                                             ; preds = %1676, %1669
  br label %1680

1680:                                             ; preds = %1679, %1654
  %1681 = load i32, ptr %38, align 4, !tbaa !9
  %1682 = sub i32 %1681, 1
  %1683 = load ptr, ptr %10, align 8, !tbaa !5
  %1684 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1683, i32 0, i32 57
  store i32 %1682, ptr %1684, align 4, !tbaa !87
  %1685 = load i32, ptr %38, align 4, !tbaa !9
  %1686 = sub i32 %1685, 2
  %1687 = load ptr, ptr %10, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1687, i32 0, i32 58
  store i32 %1686, ptr %1688, align 4, !tbaa !88
  %1689 = load i32, ptr %37, align 4, !tbaa !9
  %1690 = sub i32 %1689, 1
  %1691 = load ptr, ptr %10, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1691, i32 0, i32 33
  store i32 %1690, ptr %1692, align 4, !tbaa !89
  %1693 = load i32, ptr %37, align 4, !tbaa !9
  %1694 = sub i32 %1693, 2
  %1695 = load ptr, ptr %10, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1695, i32 0, i32 55
  store i32 %1694, ptr %1696, align 4, !tbaa !90
  %1697 = load i32, ptr %37, align 4, !tbaa !9
  %1698 = sub i32 %1697, 3
  %1699 = load ptr, ptr %10, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1699, i32 0, i32 36
  store i32 %1698, ptr %1700, align 4, !tbaa !72
  %1701 = load i32, ptr %37, align 4, !tbaa !9
  %1702 = sub i32 %1701, 4
  %1703 = load ptr, ptr %10, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1703, i32 0, i32 40
  store i32 %1702, ptr %1704, align 4, !tbaa !73
  %1705 = load i32, ptr %37, align 4, !tbaa !9
  %1706 = sub i32 %1705, 5
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1707, i32 0, i32 44
  store i32 %1706, ptr %1708, align 4, !tbaa !74
  %1709 = load i32, ptr %37, align 4, !tbaa !9
  %1710 = sub i32 %1709, 6
  %1711 = load ptr, ptr %10, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1711, i32 0, i32 51
  store i32 %1710, ptr %1712, align 4, !tbaa !75
  %1713 = load i32, ptr %37, align 4, !tbaa !9
  %1714 = sub i32 %1713, 7
  %1715 = load ptr, ptr %10, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1715, i32 0, i32 48
  store i32 %1714, ptr %1716, align 4, !tbaa !91
  %1717 = load i32, ptr %37, align 4, !tbaa !9
  %1718 = sub i32 %1717, 8
  %1719 = load ptr, ptr %10, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1719, i32 0, i32 49
  store i32 %1718, ptr %1720, align 4, !tbaa !92
  %1721 = load i32, ptr %37, align 4, !tbaa !9
  %1722 = sub i32 %1721, 9
  %1723 = load ptr, ptr %10, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1723, i32 0, i32 50
  store i32 %1722, ptr %1724, align 4, !tbaa !93
  %1725 = load i32, ptr %37, align 4, !tbaa !9
  %1726 = sub i32 %1725, 10
  %1727 = load ptr, ptr %10, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1727, i32 0, i32 52
  store i32 %1726, ptr %1728, align 4, !tbaa !78
  %1729 = load i32, ptr %37, align 4, !tbaa !9
  %1730 = sub i32 %1729, 11
  %1731 = load ptr, ptr %10, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1731, i32 0, i32 53
  store i32 %1730, ptr %1732, align 4, !tbaa !79
  %1733 = load i32, ptr %37, align 4, !tbaa !9
  %1734 = sub i32 %1733, 12
  %1735 = load ptr, ptr %10, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1735, i32 0, i32 54
  store i32 %1734, ptr %1736, align 4, !tbaa !39
  %1737 = load i32, ptr %37, align 4, !tbaa !9
  %1738 = sub i32 %1737, 13
  %1739 = load ptr, ptr %10, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1739, i32 0, i32 34
  store i32 %1738, ptr %1740, align 4, !tbaa !94
  %1741 = load i32, ptr %37, align 4, !tbaa !9
  %1742 = sub i32 %1741, 14
  %1743 = load ptr, ptr %10, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1743, i32 0, i32 35
  store i32 %1742, ptr %1744, align 4, !tbaa !95
  %1745 = load i32, ptr %37, align 4, !tbaa !9
  %1746 = sub i32 %1745, 15
  %1747 = load ptr, ptr %10, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1747, i32 0, i32 56
  store i32 %1746, ptr %1748, align 4, !tbaa !65
  %1749 = load ptr, ptr %9, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1749, i32 0, i32 6
  %1751 = load i32, ptr %1750, align 4, !tbaa !11
  %1752 = icmp ult i32 %1751, 1051
  br i1 %1752, label %1753, label %1804

1753:                                             ; preds = %1680
  %1754 = load ptr, ptr %9, align 8, !tbaa !5
  %1755 = load ptr, ptr %10, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1755, i32 0, i32 36
  %1757 = load i32, ptr %1756, align 4, !tbaa !72
  %1758 = load ptr, ptr %10, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1758, i32 0, i32 40
  %1760 = load i32, ptr %1759, align 4, !tbaa !73
  %1761 = load ptr, ptr %10, align 8, !tbaa !5
  %1762 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1761, i32 0, i32 44
  %1763 = load i32, ptr %1762, align 4, !tbaa !74
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1764, i32 0, i32 51
  %1766 = load i32, ptr %1765, align 4, !tbaa !75
  %1767 = load ptr, ptr %10, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1767, i32 0, i32 48
  %1769 = load i32, ptr %1768, align 4, !tbaa !91
  %1770 = load ptr, ptr %10, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1770, i32 0, i32 49
  %1772 = load i32, ptr %1771, align 4, !tbaa !92
  %1773 = load ptr, ptr %10, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1773, i32 0, i32 50
  %1775 = load i32, ptr %1774, align 4, !tbaa !93
  %1776 = load ptr, ptr %10, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1776, i32 0, i32 52
  %1778 = load i32, ptr %1777, align 4, !tbaa !78
  %1779 = load ptr, ptr %10, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1779, i32 0, i32 53
  %1781 = load i32, ptr %1780, align 4, !tbaa !79
  %1782 = load ptr, ptr %10, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1782, i32 0, i32 54
  %1784 = load i32, ptr %1783, align 4, !tbaa !39
  %1785 = load ptr, ptr %10, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1785, i32 0, i32 55
  %1787 = load i32, ptr %1786, align 4, !tbaa !90
  call void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx(ptr noundef %1754, i32 noundef %1757, i32 noundef %1760, i32 noundef %1763, i32 noundef %1766, i32 noundef %1769, i32 noundef %1772, i32 noundef %1775, i32 noundef %1778, i32 noundef %1781, i32 noundef %1784, i32 noundef %1787)
  %1788 = load ptr, ptr %10, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1788, i32 0, i32 20
  %1790 = load i32, ptr %1789, align 4, !tbaa !23
  %1791 = icmp ugt i32 %1790, 0
  br i1 %1791, label %1792, label %1803

1792:                                             ; preds = %1753
  %1793 = load ptr, ptr %10, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1793, i32 0, i32 24
  %1795 = load i32, ptr %1794, align 4, !tbaa !24
  %1796 = load ptr, ptr %10, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1796, i32 0, i32 34
  store i32 %1795, ptr %1797, align 4, !tbaa !94
  %1798 = load ptr, ptr %10, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1798, i32 0, i32 25
  %1800 = load i32, ptr %1799, align 4, !tbaa !25
  %1801 = load ptr, ptr %10, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1801, i32 0, i32 35
  store i32 %1800, ptr %1802, align 4, !tbaa !95
  br label %1803

1803:                                             ; preds = %1792, %1753
  br label %1845

1804:                                             ; preds = %1680
  %1805 = load ptr, ptr %9, align 8, !tbaa !5
  %1806 = load ptr, ptr %10, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1806, i32 0, i32 36
  %1808 = load i32, ptr %1807, align 4, !tbaa !72
  %1809 = load ptr, ptr %10, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1809, i32 0, i32 40
  %1811 = load i32, ptr %1810, align 4, !tbaa !73
  %1812 = load ptr, ptr %10, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1812, i32 0, i32 44
  %1814 = load i32, ptr %1813, align 4, !tbaa !74
  %1815 = load ptr, ptr %10, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1815, i32 0, i32 51
  %1817 = load i32, ptr %1816, align 4, !tbaa !75
  %1818 = load ptr, ptr %10, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1818, i32 0, i32 48
  %1820 = load i32, ptr %1819, align 4, !tbaa !91
  %1821 = load ptr, ptr %10, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1821, i32 0, i32 49
  %1823 = load i32, ptr %1822, align 4, !tbaa !92
  %1824 = load ptr, ptr %10, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1824, i32 0, i32 50
  %1826 = load i32, ptr %1825, align 4, !tbaa !93
  %1827 = load ptr, ptr %10, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1827, i32 0, i32 52
  %1829 = load i32, ptr %1828, align 4, !tbaa !78
  %1830 = load ptr, ptr %10, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1830, i32 0, i32 53
  %1832 = load i32, ptr %1831, align 4, !tbaa !79
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1833, i32 0, i32 54
  %1835 = load i32, ptr %1834, align 4, !tbaa !39
  %1836 = load ptr, ptr %10, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1836, i32 0, i32 55
  %1838 = load i32, ptr %1837, align 4, !tbaa !90
  %1839 = load ptr, ptr %10, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1839, i32 0, i32 56
  %1841 = load i32, ptr %1840, align 4, !tbaa !65
  %1842 = load ptr, ptr %10, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1842, i32 0, i32 128
  %1844 = load i8, ptr %1843, align 4, !tbaa !21
  call void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx512(ptr noundef %1805, i32 noundef %1808, i32 noundef %1811, i32 noundef %1814, i32 noundef %1817, i32 noundef %1820, i32 noundef %1823, i32 noundef %1826, i32 noundef %1829, i32 noundef %1832, i32 noundef %1835, i32 noundef %1838, i32 noundef %1841, i8 noundef zeroext %1844)
  br label %1845

1845:                                             ; preds = %1804, %1803
  %1846 = load i32, ptr %38, align 4, !tbaa !9
  %1847 = load ptr, ptr %10, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1847, i32 0, i32 19
  store i32 %1846, ptr %1848, align 4, !tbaa !80
  %1849 = load i32, ptr %37, align 4, !tbaa !9
  %1850 = load ptr, ptr %10, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1850, i32 0, i32 18
  store i32 %1849, ptr %1851, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  br label %1852

1852:                                             ; preds = %1845, %1651
  %1853 = load i32, ptr %12, align 4, !tbaa !9
  %1854 = icmp eq i32 %1853, 42
  br i1 %1854, label %1858, label %1855

1855:                                             ; preds = %1852
  %1856 = load i32, ptr %12, align 4, !tbaa !9
  %1857 = icmp eq i32 %1856, 43
  br i1 %1857, label %1858, label %1966

1858:                                             ; preds = %1855, %1852
  %1859 = load i32, ptr %13, align 4, !tbaa !9
  %1860 = and i32 %1859, 1024
  %1861 = icmp eq i32 %1860, 0
  br i1 %1861, label %1862, label %1872

1862:                                             ; preds = %1858
  %1863 = load ptr, ptr %10, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1863, i32 0, i32 18
  %1865 = load i32, ptr %1864, align 4, !tbaa !14
  %1866 = load ptr, ptr %10, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1866, i32 0, i32 118
  store i32 %1865, ptr %1867, align 4, !tbaa !96
  %1868 = load ptr, ptr %10, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1868, i32 0, i32 18
  %1870 = load i32, ptr %1869, align 4, !tbaa !14
  %1871 = add i32 %1870, 1
  store i32 %1871, ptr %1869, align 4, !tbaa !14
  br label %1872

1872:                                             ; preds = %1862, %1858
  %1873 = load ptr, ptr %9, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1873, i32 0, i32 6
  %1875 = load i32, ptr %1874, align 4, !tbaa !11
  %1876 = icmp ult i32 %1875, 1101
  br i1 %1876, label %1877, label %1951

1877:                                             ; preds = %1872
  %1878 = load i32, ptr %12, align 4, !tbaa !9
  %1879 = icmp eq i32 %1878, 42
  br i1 %1879, label %1880, label %1951

1880:                                             ; preds = %1877
  %1881 = load ptr, ptr %10, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1881, i32 0, i32 5
  %1883 = load i32, ptr %1882, align 4, !tbaa !97
  %1884 = icmp ne i32 %1883, 4
  br i1 %1884, label %1885, label %1951

1885:                                             ; preds = %1880
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %39, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %40, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %42, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes_i16, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %43, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes_i16, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %44, ptr align 16 @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words_i16, i64 32, i1 false)
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1886, i32 0, i32 18
  %1888 = load i32, ptr %1887, align 4, !tbaa !14
  %1889 = load ptr, ptr %10, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1889, i32 0, i32 87
  store i32 %1888, ptr %1890, align 4, !tbaa !48
  %1891 = load ptr, ptr %10, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1891, i32 0, i32 18
  %1893 = load i32, ptr %1892, align 4, !tbaa !14
  %1894 = add i32 %1893, 1
  %1895 = load ptr, ptr %10, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1895, i32 0, i32 88
  store i32 %1894, ptr %1896, align 4, !tbaa !49
  %1897 = load ptr, ptr %10, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1897, i32 0, i32 18
  %1899 = load i32, ptr %1898, align 4, !tbaa !14
  %1900 = add i32 %1899, 2
  store i32 %1900, ptr %1898, align 4, !tbaa !14
  %1901 = load ptr, ptr %10, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1901, i32 0, i32 5
  %1903 = load i32, ptr %1902, align 4, !tbaa !97
  %1904 = icmp eq i32 %1903, 1
  br i1 %1904, label %1905, label %1924

1905:                                             ; preds = %1885
  %1906 = load ptr, ptr %9, align 8, !tbaa !5
  %1907 = load i32, ptr %13, align 4, !tbaa !9
  %1908 = and i32 %1907, 16
  %1909 = icmp ugt i32 %1908, 0
  br i1 %1909, label %1910, label %1912

1910:                                             ; preds = %1905
  %1911 = getelementptr inbounds [32 x i8], ptr %40, i64 0, i64 0
  br label %1914

1912:                                             ; preds = %1905
  %1913 = getelementptr inbounds [32 x i8], ptr %39, i64 0, i64 0
  br label %1914

1914:                                             ; preds = %1912, %1910
  %1915 = phi ptr [ %1911, %1910 ], [ %1913, %1912 ]
  %1916 = load ptr, ptr %10, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1916, i32 0, i32 87
  %1918 = load i32, ptr %1917, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1906, ptr noundef %1915, ptr noundef @.str.8, i8 noundef signext 121, i32 noundef %1918)
  %1919 = load ptr, ptr %9, align 8, !tbaa !5
  %1920 = getelementptr inbounds [8 x i32], ptr %41, i64 0, i64 0
  %1921 = load ptr, ptr %10, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1921, i32 0, i32 88
  %1923 = load i32, ptr %1922, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1919, ptr noundef %1920, ptr noundef @.str.9, i8 noundef signext 121, i32 noundef %1923)
  br label %1950

1924:                                             ; preds = %1885
  %1925 = load ptr, ptr %10, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1925, i32 0, i32 5
  %1927 = load i32, ptr %1926, align 4, !tbaa !97
  %1928 = icmp eq i32 %1927, 2
  br i1 %1928, label %1929, label %1948

1929:                                             ; preds = %1924
  %1930 = load ptr, ptr %9, align 8, !tbaa !5
  %1931 = load i32, ptr %13, align 4, !tbaa !9
  %1932 = and i32 %1931, 16
  %1933 = icmp ugt i32 %1932, 0
  br i1 %1933, label %1934, label %1936

1934:                                             ; preds = %1929
  %1935 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  br label %1938

1936:                                             ; preds = %1929
  %1937 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  br label %1938

1938:                                             ; preds = %1936, %1934
  %1939 = phi ptr [ %1935, %1934 ], [ %1937, %1936 ]
  %1940 = load ptr, ptr %10, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1940, i32 0, i32 87
  %1942 = load i32, ptr %1941, align 4, !tbaa !48
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1930, ptr noundef %1939, ptr noundef @.str.8, i8 noundef signext 121, i32 noundef %1942)
  %1943 = load ptr, ptr %9, align 8, !tbaa !5
  %1944 = getelementptr inbounds [8 x i32], ptr %44, i64 0, i64 0
  %1945 = load ptr, ptr %10, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1945, i32 0, i32 88
  %1947 = load i32, ptr %1946, align 4, !tbaa !49
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef %1943, ptr noundef %1944, ptr noundef @.str.9, i8 noundef signext 121, i32 noundef %1947)
  br label %1949

1948:                                             ; preds = %1924
  br label %1949

1949:                                             ; preds = %1948, %1938
  br label %1950

1950:                                             ; preds = %1949, %1914
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #4
  br label %1951

1951:                                             ; preds = %1950, %1880, %1877, %1872
  %1952 = load i32, ptr %13, align 4, !tbaa !9
  %1953 = and i32 %1952, 1024
  %1954 = icmp eq i32 %1953, 0
  br i1 %1954, label %1955, label %1965

1955:                                             ; preds = %1951
  %1956 = load ptr, ptr %9, align 8, !tbaa !5
  %1957 = load ptr, ptr %9, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1957, i32 0, i32 6
  %1959 = load i32, ptr %1958, align 4, !tbaa !11
  %1960 = load i32, ptr %15, align 4, !tbaa !9
  %1961 = load i8, ptr %17, align 1, !tbaa !13
  %1962 = load ptr, ptr %10, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1962, i32 0, i32 118
  %1964 = load i32, ptr %1963, align 4, !tbaa !96
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %1956, i32 noundef %1959, i32 noundef 537209368, i32 noundef %1960, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %1961, i32 noundef %1964, i32 noundef 0, i32 noundef 1, i32 noundef 0)
  br label %1965

1965:                                             ; preds = %1955, %1951
  br label %1966

1966:                                             ; preds = %1965, %1855
  %1967 = load i32, ptr %12, align 4, !tbaa !9
  %1968 = icmp eq i32 %1967, 64
  br i1 %1968, label %1972, label %1969

1969:                                             ; preds = %1966
  %1970 = load i32, ptr %12, align 4, !tbaa !9
  %1971 = icmp eq i32 %1970, 65
  br i1 %1971, label %1972, label %2032

1972:                                             ; preds = %1969, %1966
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  store i32 -1431655766, ptr %45, align 4, !tbaa !9
  %1973 = load ptr, ptr %10, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1973, i32 0, i32 18
  %1975 = load i32, ptr %1974, align 4, !tbaa !14
  %1976 = load ptr, ptr %10, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1976, i32 0, i32 86
  store i32 %1975, ptr %1977, align 4, !tbaa !18
  %1978 = load ptr, ptr %10, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1978, i32 0, i32 18
  %1980 = load i32, ptr %1979, align 4, !tbaa !14
  %1981 = add i32 %1980, 1
  %1982 = load ptr, ptr %10, align 8, !tbaa !5
  %1983 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1982, i32 0, i32 87
  store i32 %1981, ptr %1983, align 4, !tbaa !48
  %1984 = load ptr, ptr %10, align 8, !tbaa !5
  %1985 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1984, i32 0, i32 18
  %1986 = load i32, ptr %1985, align 4, !tbaa !14
  %1987 = add i32 %1986, 2
  %1988 = load ptr, ptr %10, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1988, i32 0, i32 88
  store i32 %1987, ptr %1989, align 4, !tbaa !49
  %1990 = load ptr, ptr %10, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1990, i32 0, i32 18
  %1992 = load i32, ptr %1991, align 4, !tbaa !14
  %1993 = add i32 %1992, 3
  %1994 = load ptr, ptr %10, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1994, i32 0, i32 18
  store i32 %1993, ptr %1995, align 4, !tbaa !14
  %1996 = load ptr, ptr %10, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1996, i32 0, i32 19
  %1998 = load i32, ptr %1997, align 4, !tbaa !80
  %1999 = load ptr, ptr %10, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1999, i32 0, i32 57
  store i32 %1998, ptr %2000, align 4, !tbaa !87
  %2001 = load ptr, ptr %10, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2001, i32 0, i32 19
  %2003 = load i32, ptr %2002, align 4, !tbaa !80
  %2004 = add i32 %2003, 1
  %2005 = load ptr, ptr %10, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2005, i32 0, i32 19
  store i32 %2004, ptr %2006, align 4, !tbaa !80
  %2007 = load ptr, ptr %9, align 8, !tbaa !5
  %2008 = load i32, ptr %14, align 4, !tbaa !9
  %2009 = load i32, ptr %45, align 4, !tbaa !9
  %2010 = zext i32 %2009 to i64
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef %2007, i32 noundef -1568407413, i32 noundef %2008, i64 noundef %2010)
  %2011 = load ptr, ptr %9, align 8, !tbaa !5
  %2012 = load i32, ptr %14, align 4, !tbaa !9
  %2013 = load ptr, ptr %10, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2013, i32 0, i32 57
  %2015 = load i32, ptr %2014, align 4, !tbaa !87
  call void @libxsmm_x86_instruction_mask_move(ptr noundef %2011, i32 noundef -1610149486, i32 noundef %2012, i32 noundef %2015)
  %2016 = load i32, ptr %12, align 4, !tbaa !9
  %2017 = icmp eq i32 %2016, 65
  br i1 %2017, label %2018, label %2025

2018:                                             ; preds = %1972
  %2019 = load ptr, ptr %9, align 8, !tbaa !5
  %2020 = load ptr, ptr %10, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2020, i32 0, i32 14
  %2022 = load i32, ptr %2021, align 4, !tbaa !98
  %2023 = load i32, ptr %15, align 4, !tbaa !9
  %2024 = load i32, ptr %16, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2019, i32 noundef %2022, i32 noundef %2023, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %2024, i32 noundef 0)
  br label %2025

2025:                                             ; preds = %2018, %1972
  %2026 = load ptr, ptr %9, align 8, !tbaa !5
  %2027 = load ptr, ptr %10, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2027, i32 0, i32 14
  %2029 = load i32, ptr %2028, align 4, !tbaa !98
  %2030 = load i32, ptr %15, align 4, !tbaa !9
  %2031 = load i32, ptr %15, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %2026, i32 noundef %2029, i32 noundef %2030, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %2031, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  br label %2032

2032:                                             ; preds = %2025, %1969
  %2033 = load i32, ptr %13, align 4, !tbaa !9
  %2034 = and i32 %2033, 4096
  %2035 = icmp ugt i32 %2034, 0
  br i1 %2035, label %2036, label %2099

2036:                                             ; preds = %2032
  %2037 = load ptr, ptr %9, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2037, i32 0, i32 6
  %2039 = load i32, ptr %2038, align 4, !tbaa !11
  %2040 = icmp uge i32 %2039, 1005
  br i1 %2040, label %2041, label %2098

2041:                                             ; preds = %2036
  %2042 = load ptr, ptr %9, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %2042, i32 0, i32 6
  %2044 = load i32, ptr %2043, align 4, !tbaa !11
  %2045 = icmp ult i32 %2044, 1999
  br i1 %2045, label %2046, label %2098

2046:                                             ; preds = %2041
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %2047 = load ptr, ptr %10, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2047, i32 0, i32 18
  %2049 = load i32, ptr %2048, align 4, !tbaa !14
  store i32 %2049, ptr %46, align 4, !tbaa !9
  %2050 = load i32, ptr %46, align 4, !tbaa !9
  %2051 = add i32 %2050, 7
  store i32 %2051, ptr %46, align 4, !tbaa !9
  %2052 = load i32, ptr %46, align 4, !tbaa !9
  %2053 = sub i32 %2052, 1
  %2054 = load ptr, ptr %10, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2054, i32 0, i32 103
  store i32 %2053, ptr %2055, align 4, !tbaa !27
  %2056 = load i32, ptr %46, align 4, !tbaa !9
  %2057 = sub i32 %2056, 2
  %2058 = load ptr, ptr %10, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2058, i32 0, i32 104
  store i32 %2057, ptr %2059, align 4, !tbaa !28
  %2060 = load i32, ptr %46, align 4, !tbaa !9
  %2061 = sub i32 %2060, 3
  %2062 = load ptr, ptr %10, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2062, i32 0, i32 105
  store i32 %2061, ptr %2063, align 4, !tbaa !29
  %2064 = load i32, ptr %46, align 4, !tbaa !9
  %2065 = sub i32 %2064, 4
  %2066 = load ptr, ptr %10, align 8, !tbaa !5
  %2067 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2066, i32 0, i32 106
  store i32 %2065, ptr %2067, align 4, !tbaa !30
  %2068 = load i32, ptr %46, align 4, !tbaa !9
  %2069 = sub i32 %2068, 5
  %2070 = load ptr, ptr %10, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2070, i32 0, i32 115
  store i32 %2069, ptr %2071, align 4, !tbaa !99
  %2072 = load i32, ptr %46, align 4, !tbaa !9
  %2073 = sub i32 %2072, 6
  %2074 = load ptr, ptr %10, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2074, i32 0, i32 116
  store i32 %2073, ptr %2075, align 4, !tbaa !100
  %2076 = load i32, ptr %46, align 4, !tbaa !9
  %2077 = sub i32 %2076, 7
  %2078 = load ptr, ptr %10, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2078, i32 0, i32 117
  store i32 %2077, ptr %2079, align 4, !tbaa !101
  %2080 = load ptr, ptr %9, align 8, !tbaa !5
  %2081 = load i8, ptr %17, align 1, !tbaa !13
  %2082 = load i32, ptr %15, align 4, !tbaa !9
  %2083 = load ptr, ptr %10, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2083, i32 0, i32 103
  %2085 = load i32, ptr %2084, align 4, !tbaa !27
  %2086 = load ptr, ptr %10, align 8, !tbaa !5
  %2087 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2086, i32 0, i32 104
  %2088 = load i32, ptr %2087, align 4, !tbaa !28
  %2089 = load ptr, ptr %10, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2089, i32 0, i32 105
  %2091 = load i32, ptr %2090, align 4, !tbaa !29
  %2092 = load ptr, ptr %10, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2092, i32 0, i32 106
  %2094 = load i32, ptr %2093, align 4, !tbaa !30
  call void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef %2080, i8 noundef zeroext %2081, i32 noundef %2082, i32 noundef %2085, i32 noundef %2088, i32 noundef %2091, i32 noundef %2094)
  %2095 = load i32, ptr %46, align 4, !tbaa !9
  %2096 = load ptr, ptr %10, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2096, i32 0, i32 18
  store i32 %2095, ptr %2097, align 4, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %2098

2098:                                             ; preds = %2046, %2041, %2036
  br label %2099

2099:                                             ; preds = %2098, %2032
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  ret void
}

; 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) #3

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) #1

declare void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_dropout_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_dropout_inv_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512_vl256(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512_vl256(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_5dts_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #1

declare void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #1

declare void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

declare void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) #1

declare void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef, i32 noundef, i32 noundef, i64 noundef) #1

declare void @libxsmm_x86_instruction_mask_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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, !10, i64 28}
!12 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !10, i64 72}
!15 = !{!"libxsmm_mateltwise_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !10, i64 460, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !7, i64 512}
!16 = !{!15, !10, i64 116}
!17 = !{!15, !10, i64 128}
!18 = !{!15, !10, i64 344}
!19 = !{!15, !10, i64 120}
!20 = !{!15, !10, i64 408}
!21 = !{!15, !7, i64 512}
!22 = !{!15, !10, i64 124}
!23 = !{!15, !10, i64 80}
!24 = !{!15, !10, i64 96}
!25 = !{!15, !10, i64 100}
!26 = !{!15, !10, i64 456}
!27 = !{!15, !10, i64 412}
!28 = !{!15, !10, i64 416}
!29 = !{!15, !10, i64 420}
!30 = !{!15, !10, i64 424}
!31 = !{!15, !10, i64 436}
!32 = !{!15, !10, i64 440}
!33 = !{!15, !10, i64 448}
!34 = !{!15, !10, i64 452}
!35 = !{!15, !10, i64 428}
!36 = !{!15, !10, i64 432}
!37 = !{!15, !10, i64 444}
!38 = !{!15, !10, i64 476}
!39 = !{!15, !10, i64 216}
!40 = !{!15, !10, i64 256}
!41 = !{!15, !10, i64 260}
!42 = !{!15, !10, i64 320}
!43 = !{!15, !10, i64 324}
!44 = !{!15, !10, i64 328}
!45 = !{!15, !10, i64 332}
!46 = !{!15, !10, i64 336}
!47 = !{!15, !10, i64 340}
!48 = !{!15, !10, i64 348}
!49 = !{!15, !10, i64 352}
!50 = !{!15, !10, i64 356}
!51 = !{!15, !10, i64 360}
!52 = !{!15, !10, i64 364}
!53 = !{!15, !10, i64 368}
!54 = !{!15, !10, i64 372}
!55 = !{!15, !10, i64 376}
!56 = !{!15, !10, i64 380}
!57 = !{!15, !10, i64 384}
!58 = !{!15, !10, i64 388}
!59 = !{!15, !10, i64 392}
!60 = !{!15, !10, i64 396}
!61 = !{!15, !10, i64 304}
!62 = !{!15, !10, i64 308}
!63 = !{!15, !10, i64 312}
!64 = !{!15, !10, i64 316}
!65 = !{!15, !10, i64 224}
!66 = !{!15, !10, i64 280}
!67 = !{!15, !10, i64 284}
!68 = !{!15, !10, i64 288}
!69 = !{!15, !10, i64 292}
!70 = !{!15, !10, i64 296}
!71 = !{!15, !10, i64 300}
!72 = !{!15, !10, i64 144}
!73 = !{!15, !10, i64 160}
!74 = !{!15, !10, i64 176}
!75 = !{!15, !10, i64 204}
!76 = !{!15, !10, i64 240}
!77 = !{!15, !10, i64 264}
!78 = !{!15, !10, i64 208}
!79 = !{!15, !10, i64 212}
!80 = !{!15, !10, i64 76}
!81 = !{!15, !10, i64 248}
!82 = !{!15, !10, i64 252}
!83 = !{!15, !10, i64 244}
!84 = !{!15, !10, i64 268}
!85 = !{!15, !10, i64 272}
!86 = !{!15, !10, i64 276}
!87 = !{!15, !10, i64 228}
!88 = !{!15, !10, i64 232}
!89 = !{!15, !10, i64 132}
!90 = !{!15, !10, i64 220}
!91 = !{!15, !10, i64 192}
!92 = !{!15, !10, i64 196}
!93 = !{!15, !10, i64 200}
!94 = !{!15, !10, i64 136}
!95 = !{!15, !10, i64 140}
!96 = !{!15, !10, i64 472}
!97 = !{!15, !10, i64 20}
!98 = !{!15, !10, i64 56}
!99 = !{!15, !10, i64 460}
!100 = !{!15, !10, i64 464}
!101 = !{!15, !10, i64 468}


; 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_configure_unary_kernel_vregs_masks.const_mask_array = external hidden unnamed_addr constant [8 x i32], align 16
@.str.1 = external hidden unnamed_addr constant [17 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array.2 = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_neg_array = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_neg_array = external hidden unnamed_addr constant [8 x double], align 16
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array = external hidden unnamed_addr constant [8 x double], align 16
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.5 = external hidden unnamed_addr constant [8 x double], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array.6 = external hidden unnamed_addr constant [16 x float], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.7 = external hidden unnamed_addr constant [8 x double], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words = external hidden unnamed_addr constant [8 x i32], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes_i16 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes_i16 = external hidden unnamed_addr constant [32 x i8], align 16
@__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words_i16 = external hidden unnamed_addr constant [8 x i32], align 16
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1

; 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

declare void @libxsmm_x86_instruction_vec_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_mem(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_configure_unary_kernel_vregs_masks(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7) local_unnamed_addr #2 {
  %9 = alloca [8 x i32], align 16
  %10 = alloca [8 x i32], align 16
  %11 = alloca [16 x float], align 16
  %12 = alloca [8 x double], align 16
  %13 = alloca [16 x float], align 16
  %14 = alloca [8 x double], align 16
  %15 = alloca [8 x double], align 16
  %16 = alloca [16 x float], align 16
  %17 = alloca [8 x double], align 16
  %18 = alloca [32 x i8], align 16
  %19 = alloca [32 x i8], align 16
  %20 = alloca [8 x i32], align 16
  %21 = alloca [32 x i8], align 16
  %22 = alloca [32 x i8], align 16
  %23 = alloca [8 x i32], align 16
  %24 = getelementptr inbounds i8, ptr %0, i64 28
  %25 = load i32, ptr %24, align 4, !tbaa !5
  %26 = icmp ult i32 %25, 1005
  %27 = icmp ult i32 %25, 1101
  %28 = select i1 %27, i8 121, i8 122
  %29 = select i1 %26, i8 120, i8 %28
  %30 = icmp eq i32 %2, 0
  %31 = icmp eq i32 %3, 33
  br i1 %31, label %.thread891, label %36

.thread891:                                       ; preds = %8
  %32 = getelementptr inbounds i8, ptr %1, i64 72
  %33 = load i32, ptr %32, align 4, !tbaa !11
  %34 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %33, ptr %34, align 4, !tbaa !13
  %35 = add i32 %33, 1
  store i32 %35, ptr %32, align 4, !tbaa !11
  br label %.thread877

36:                                               ; preds = %8
  %37 = icmp eq i32 %3, 34
  switch i32 %3, label %75 [
    i32 35, label %38
    i32 34, label %38
    i32 6, label %38
    i32 5, label %38
  ]

38:                                               ; preds = %36, %36, %36, %36
  %39 = getelementptr inbounds i8, ptr %1, i64 72
  %40 = load i32, ptr %39, align 4, !tbaa !11
  %41 = getelementptr inbounds i8, ptr %1, i64 128
  store i32 %40, ptr %41, align 4, !tbaa !14
  %42 = add i32 %40, 1
  store i32 %42, ptr %39, align 4, !tbaa !11
  %43 = icmp ugt i32 %25, 1050
  %44 = and i32 %4, 1
  %.not = icmp eq i32 %44, 0
  %or.cond = or i1 %.not, %43
  br i1 %or.cond, label %51, label %45

45:                                               ; preds = %38
  %46 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %42, ptr %46, align 4, !tbaa !13
  %47 = add i32 %40, 2
  store i32 %47, ptr %39, align 4, !tbaa !11
  switch i32 %3, label %62 [
    i32 35, label %48
    i32 6, label %48
  ]

48:                                               ; preds = %45, %45
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %9, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array, i64 32, i1 false)
  %49 = getelementptr inbounds i8, ptr %1, i64 344
  store i32 %47, ptr %49, align 4, !tbaa !15
  %50 = add i32 %40, 3
  store i32 %50, ptr %39, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %9, ptr noundef nonnull @.str.1, i8 noundef signext %29, i32 noundef %47) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #4
  br label %56

51:                                               ; preds = %38
  %52 = icmp ult i32 %25, 1051
  %53 = and i1 %37, %52
  %or.cond893 = and i1 %.not, %53
  br i1 %or.cond893, label %.thread850, label %56

.thread850:                                       ; preds = %51
  %54 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %42, ptr %54, align 4, !tbaa !13
  %55 = add i32 %40, 2
  br label %64

56:                                               ; preds = %51, %48
  switch i32 %3, label %62 [
    i32 35, label %57
    i32 6, label %57
  ]

57:                                               ; preds = %56, %56
  br i1 %.not, label %58, label %62

58:                                               ; preds = %57
  %59 = load i32, ptr %39, align 4, !tbaa !11
  %60 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %59, ptr %60, align 4, !tbaa !13
  %61 = add i32 %59, 1
  store i32 %61, ptr %39, align 4, !tbaa !11
  br label %62

62:                                               ; preds = %45, %56, %58, %57
  %63 = and i32 %3, 38
  %or.cond11 = icmp eq i32 %63, 34
  br i1 %or.cond11, label %._crit_edge, label %71

._crit_edge:                                      ; preds = %62
  %.pre = load i32, ptr %39, align 4, !tbaa !11
  %.pre894 = load i32, ptr %24, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %._crit_edge, %.thread850
  %65 = phi i32 [ %.pre894, %._crit_edge ], [ %25, %.thread850 ]
  %66 = phi i32 [ %.pre, %._crit_edge ], [ %55, %.thread850 ]
  %67 = getelementptr inbounds i8, ptr %1, i64 120
  store i32 %66, ptr %67, align 4, !tbaa !16
  %68 = add i32 %66, 1
  %69 = getelementptr inbounds i8, ptr %1, i64 408
  store i32 %68, ptr %69, align 4, !tbaa !17
  %70 = add i32 %66, 2
  store i32 %70, ptr %39, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %65, i32 noundef 537209368, i32 noundef %7, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %29, i32 noundef %68, i32 noundef 0, i32 noundef 1, i32 noundef 0) #4
  br label %71

71:                                               ; preds = %62, %64
  %72 = getelementptr inbounds i8, ptr %1, i64 512
  %73 = load i8, ptr %72, align 4, !tbaa !18
  %74 = load i32, ptr %41, align 4, !tbaa !14
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639919, i8 noundef signext %73, i32 noundef %74, i32 noundef %74, i32 noundef %74) #4
  br label %75

75:                                               ; preds = %36, %71
  %76 = and i32 %3, -2
  %or.cond13 = icmp eq i32 %76, 36
  br i1 %or.cond13, label %77, label %102

77:                                               ; preds = %75
  %78 = getelementptr inbounds i8, ptr %1, i64 72
  %79 = load i32, ptr %78, align 4, !tbaa !11
  %80 = getelementptr inbounds i8, ptr %1, i64 128
  store i32 %79, ptr %80, align 4, !tbaa !14
  %81 = add i32 %79, 1
  %82 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %81, ptr %82, align 4, !tbaa !13
  %83 = add i32 %79, 2
  %84 = getelementptr inbounds i8, ptr %1, i64 408
  store i32 %83, ptr %84, align 4, !tbaa !17
  %85 = add i32 %79, 3
  %86 = getelementptr inbounds i8, ptr %1, i64 120
  store i32 %85, ptr %86, align 4, !tbaa !16
  %87 = add i32 %79, 4
  %88 = getelementptr inbounds i8, ptr %1, i64 124
  store i32 %87, ptr %88, align 4, !tbaa !19
  %89 = add i32 %79, 5
  store i32 %89, ptr %78, align 4, !tbaa !11
  %90 = load i32, ptr %24, align 4, !tbaa !5
  %91 = icmp ult i32 %90, 1051
  br i1 %91, label %92, label %98

92:                                               ; preds = %77
  %93 = getelementptr inbounds i8, ptr %1, i64 80
  %94 = load i32, ptr %93, align 4, !tbaa !20
  %.not827 = icmp eq i32 %94, 0
  br i1 %.not827, label %98, label %95

95:                                               ; preds = %92
  store i32 %85, ptr %78, align 4, !tbaa !11
  %96 = getelementptr inbounds i8, ptr %1, i64 96
  %97 = load <2 x i32>, ptr %96, align 4, !tbaa !21
  store <2 x i32> %97, ptr %86, align 4, !tbaa !21
  br label %98

98:                                               ; preds = %92, %95, %77
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %90, i32 noundef 537209368, i32 noundef %7, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %29, i32 noundef %83, i32 noundef 0, i32 noundef 1, i32 noundef 0) #4
  %99 = getelementptr inbounds i8, ptr %1, i64 512
  %100 = load i8, ptr %99, align 4, !tbaa !18
  %101 = load i32, ptr %80, align 4, !tbaa !14
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639919, i8 noundef signext %100, i32 noundef %101, i32 noundef %101, i32 noundef %101) #4
  br label %.thread854

102:                                              ; preds = %75
  %103 = icmp eq i32 %3, 25
  %104 = icmp ne i32 %3, 26
  %105 = add i32 %3, -25
  %or.cond15 = icmp ult i32 %105, 2
  br i1 %or.cond15, label %106, label %.thread854

106:                                              ; preds = %102
  %107 = load i32, ptr %24, align 4, !tbaa !5
  %108 = add i32 %107, -1005
  %or.cond841 = icmp ult i32 %108, 46
  br i1 %or.cond841, label %109, label %thread-pre-split

109:                                              ; preds = %106
  %110 = getelementptr inbounds i8, ptr %1, i64 72
  %111 = load i32, ptr %110, align 4, !tbaa !11
  %112 = getelementptr inbounds i8, ptr %1, i64 456
  store i32 %111, ptr %112, align 4, !tbaa !22
  %113 = add i32 %111, 1
  store i32 %113, ptr %110, align 4, !tbaa !11
  %114 = and i32 %4, 1
  %.not828 = icmp eq i32 %114, 0
  %or.cond843 = or i1 %104, %.not828
  br i1 %or.cond843, label %thread-pre-split.thread, label %115

115:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %10, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.const_mask_array.2, i64 32, i1 false)
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %10, ptr noundef nonnull @.str.1, i8 noundef signext %29, i32 noundef %111) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #4
  %.pr.pre = load i32, ptr %24, align 4, !tbaa !5
  %.pre897 = add i32 %.pr.pre, -1005
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %115, %106
  %.pre-phi = phi i32 [ %108, %106 ], [ %.pre897, %115 ]
  %116 = phi i32 [ %107, %106 ], [ %.pr.pre, %115 ]
  %or.cond844 = icmp ult i32 %.pre-phi, 994
  br i1 %or.cond844, label %thread-pre-split.thread, label %.thread854

thread-pre-split.thread:                          ; preds = %109, %thread-pre-split
  %117 = phi i32 [ %116, %thread-pre-split ], [ %107, %109 ]
  %118 = getelementptr inbounds i8, ptr %1, i64 72
  %119 = load i32, ptr %118, align 4, !tbaa !11
  br i1 %103, label %120, label %157

120:                                              ; preds = %thread-pre-split.thread
  %121 = add i32 %119, 10
  %122 = icmp ult i32 %117, 1051
  br i1 %122, label %123, label %127

123:                                              ; preds = %120
  %124 = getelementptr inbounds i8, ptr %1, i64 80
  %125 = load i32, ptr %124, align 4, !tbaa !20
  %.not829 = icmp eq i32 %125, 0
  %126 = add i32 %119, 8
  %spec.select = select i1 %.not829, i32 %121, i32 %126
  br label %127

127:                                              ; preds = %123, %120
  %.0 = phi i32 [ %121, %120 ], [ %spec.select, %123 ]
  %128 = add i32 %.0, -1
  %129 = getelementptr inbounds i8, ptr %1, i64 412
  store i32 %128, ptr %129, align 4, !tbaa !23
  %130 = add i32 %.0, -2
  %131 = getelementptr inbounds i8, ptr %1, i64 416
  store i32 %130, ptr %131, align 4, !tbaa !24
  %132 = insertelement <4 x i32> poison, i32 %.0, i64 0
  %133 = shufflevector <4 x i32> %132, <4 x i32> poison, <4 x i32> zeroinitializer
  %134 = add <4 x i32> %133, <i32 -3, i32 -4, i32 -9, i32 -10>
  %135 = getelementptr inbounds i8, ptr %1, i64 420
  %136 = add i32 %.0, -5
  %137 = getelementptr inbounds i8, ptr %1, i64 436
  store i32 %136, ptr %137, align 4, !tbaa !25
  %138 = add i32 %.0, -6
  %139 = getelementptr inbounds i8, ptr %1, i64 440
  store i32 %138, ptr %139, align 4, !tbaa !26
  %140 = add i32 %.0, -7
  %141 = getelementptr inbounds i8, ptr %1, i64 448
  store i32 %140, ptr %141, align 4, !tbaa !27
  %142 = add i32 %.0, -8
  %143 = getelementptr inbounds i8, ptr %1, i64 452
  store i32 %142, ptr %143, align 4, !tbaa !28
  %144 = getelementptr inbounds i8, ptr %1, i64 428
  store <4 x i32> %134, ptr %135, align 4, !tbaa !21
  br i1 %122, label %145, label %151

145:                                              ; preds = %127
  %146 = getelementptr inbounds i8, ptr %1, i64 80
  %147 = load i32, ptr %146, align 4, !tbaa !20
  %.not830 = icmp eq i32 %147, 0
  br i1 %.not830, label %151, label %148

148:                                              ; preds = %145
  %149 = getelementptr inbounds i8, ptr %1, i64 96
  %150 = load <2 x i32>, ptr %149, align 4, !tbaa !21
  store <2 x i32> %150, ptr %144, align 4, !tbaa !21
  br label %151

151:                                              ; preds = %127, %148, %145
  %152 = extractelement <4 x i32> %134, i64 0
  %153 = extractelement <4 x i32> %134, i64 1
  call void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef nonnull %0, i8 noundef zeroext %29, i32 noundef %6, i32 noundef %128, i32 noundef %130, i32 noundef %152, i32 noundef %153) #4
  %154 = load i32, ptr %139, align 4, !tbaa !26
  %155 = load i32, ptr %141, align 4, !tbaa !27
  %156 = load i32, ptr %143, align 4, !tbaa !28
  call void @libxsmm_generator_prepare_dropout_avx_avx512(ptr noundef nonnull %0, i8 noundef zeroext %29, i32 noundef %5, i32 noundef %7, i32 noundef %154, i32 noundef %155, i32 noundef %156) #4
  br label %167

157:                                              ; preds = %thread-pre-split.thread
  %158 = add i32 %119, 6
  %159 = insertelement <4 x i32> poison, i32 %119, i64 0
  %160 = shufflevector <4 x i32> %159, <4 x i32> poison, <4 x i32> zeroinitializer
  %161 = add <4 x i32> %160, <i32 5, i32 4, i32 3, i32 2>
  %162 = getelementptr inbounds i8, ptr %1, i64 428
  store <4 x i32> %161, ptr %162, align 4, !tbaa !21
  %163 = add i32 %119, 1
  %164 = getelementptr inbounds i8, ptr %1, i64 444
  store i32 %163, ptr %164, align 4, !tbaa !29
  %165 = getelementptr inbounds i8, ptr %1, i64 448
  store i32 %119, ptr %165, align 4, !tbaa !27
  %166 = extractelement <4 x i32> %161, i64 3
  call void @libxsmm_generator_prepare_dropout_inv_avx_avx512(ptr noundef nonnull %0, i8 noundef zeroext %29, i32 noundef %5, i32 noundef %7, i32 noundef %166, i32 noundef %163, i32 noundef %119) #4
  br label %167

167:                                              ; preds = %151, %157
  %.2 = phi i32 [ %158, %157 ], [ %.0, %151 ]
  store i32 %.2, ptr %118, align 4, !tbaa !11
  br label %.thread854

.thread854:                                       ; preds = %98, %thread-pre-split, %167, %102
  switch i32 %3, label %187 [
    i32 2, label %168
    i32 13, label %175
    i32 14, label %181
  ]

168:                                              ; preds = %.thread854
  %169 = getelementptr inbounds i8, ptr %1, i64 72
  %170 = load i32, ptr %169, align 4, !tbaa !11
  %171 = getelementptr inbounds i8, ptr %1, i64 128
  store i32 %170, ptr %171, align 4, !tbaa !14
  %172 = add i32 %170, 1
  store i32 %172, ptr %169, align 4, !tbaa !11
  %173 = getelementptr inbounds i8, ptr %1, i64 512
  %174 = load i8, ptr %173, align 4, !tbaa !18
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639919, i8 noundef signext %174, i32 noundef %170, i32 noundef %170, i32 noundef %170) #4
  br label %.thread874

175:                                              ; preds = %.thread854
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %11, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.f_neg_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %12, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.d_neg_array, i64 64, i1 false)
  %176 = select i1 %30, ptr %12, ptr %11
  %177 = getelementptr inbounds i8, ptr %1, i64 72
  %178 = load i32, ptr %177, align 4, !tbaa !11
  %179 = getelementptr inbounds i8, ptr %1, i64 476
  store i32 %178, ptr %179, align 4, !tbaa !30
  %180 = add i32 %178, 1
  store i32 %180, ptr %177, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %176, ptr noundef nonnull @.str.3, i8 noundef signext %29, i32 noundef %178) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #4
  br label %.thread874

181:                                              ; preds = %.thread854
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %13, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %14, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array, i64 64, i1 false)
  %182 = select i1 %30, ptr %14, ptr %13
  %183 = getelementptr inbounds i8, ptr %1, i64 72
  %184 = load i32, ptr %183, align 4, !tbaa !11
  %185 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %184, ptr %185, align 4, !tbaa !31
  %186 = add i32 %184, 1
  store i32 %186, ptr %183, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %182, ptr noundef nonnull @.str.4, i8 noundef signext %29, i32 noundef %184) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #4
  br label %.thread874

187:                                              ; preds = %.thread854
  %188 = add i32 %3, -15
  %or.cond17 = icmp ult i32 %188, 2
  %or.cond19 = and i1 %30, %or.cond17
  br i1 %or.cond19, label %189, label %202

189:                                              ; preds = %187
  %190 = load i32, ptr %24, align 4, !tbaa !5
  %191 = icmp ult i32 %190, 1051
  br i1 %191, label %192, label %.thread

192:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %15, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.5, i64 64, i1 false)
  %193 = getelementptr inbounds i8, ptr %1, i64 72
  %194 = load i32, ptr %193, align 4, !tbaa !11
  %195 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %194, ptr %195, align 4, !tbaa !31
  %196 = icmp ult i32 %190, 1005
  %197 = add i32 %194, 1
  br i1 %196, label %198, label %201

198:                                              ; preds = %192
  %199 = getelementptr inbounds i8, ptr %1, i64 116
  store i32 %197, ptr %199, align 4, !tbaa !13
  %200 = add i32 %194, 2
  br label %201

201:                                              ; preds = %192, %198
  %storemerge = phi i32 [ %200, %198 ], [ %197, %192 ]
  store i32 %storemerge, ptr %193, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull @.str.4, i8 noundef signext %29, i32 noundef %194) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #4
  br label %.thread

202:                                              ; preds = %187
  br i1 %or.cond17, label %.thread, label %211

.thread:                                          ; preds = %189, %201, %202
  %203 = call i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx() #4
  %204 = icmp sgt i32 %203, 0
  br i1 %204, label %205, label %.thread864.thread

205:                                              ; preds = %.thread
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %16, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.f_ones_array.6, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %17, ptr noundef nonnull align 16 dereferenceable(64) @__const.libxsmm_configure_unary_kernel_vregs_masks.d_ones_array.7, i64 64, i1 false)
  %206 = select i1 %30, ptr %17, ptr %16
  %207 = getelementptr inbounds i8, ptr %1, i64 72
  %208 = load i32, ptr %207, align 4, !tbaa !11
  %209 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %208, ptr %209, align 4, !tbaa !31
  %210 = add i32 %208, 1
  store i32 %210, ptr %207, align 4, !tbaa !11
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %206, ptr noundef nonnull @.str.4, i8 noundef signext %29, i32 noundef %208) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #4
  br label %.thread864.thread

211:                                              ; preds = %202
  %212 = icmp eq i32 %3, 17
  br i1 %212, label %.thread870, label %.thread864

.thread870:                                       ; preds = %211
  %213 = getelementptr inbounds i8, ptr %1, i64 72
  %214 = load i32, ptr %213, align 4, !tbaa !11
  %215 = getelementptr inbounds i8, ptr %1, i64 256
  store i32 %214, ptr %215, align 4, !tbaa !32
  %216 = add i32 %214, 1
  %217 = getelementptr inbounds i8, ptr %1, i64 260
  store i32 %216, ptr %217, align 4, !tbaa !33
  %218 = add i32 %214, 2
  store i32 %218, ptr %213, align 4, !tbaa !11
  br label %332

.thread864:                                       ; preds = %211
  %219 = icmp eq i32 %3, 11
  %220 = add i32 %3, -11
  %or.cond23 = icmp ult i32 %220, 2
  br i1 %or.cond23, label %221, label %.thread864.thread

221:                                              ; preds = %.thread864
  %222 = getelementptr inbounds i8, ptr %1, i64 72
  %223 = load i32, ptr %222, align 4, !tbaa !11
  %224 = load i32, ptr %24, align 4, !tbaa !5
  %225 = icmp ult i32 %224, 1051
  br i1 %225, label %226, label %269

226:                                              ; preds = %221
  %227 = getelementptr inbounds i8, ptr %1, i64 80
  %228 = load i32, ptr %227, align 4, !tbaa !20
  %.not831 = icmp eq i32 %228, 0
  %spec.select845.v = select i1 %.not831, i32 14, i32 12
  %spec.select845 = add i32 %spec.select845.v, %223
  %229 = add i32 %spec.select845, -1
  %230 = getelementptr inbounds i8, ptr %1, i64 320
  store i32 %229, ptr %230, align 4, !tbaa !34
  %231 = add i32 %spec.select845, -2
  %232 = getelementptr inbounds i8, ptr %1, i64 324
  store i32 %231, ptr %232, align 4, !tbaa !35
  %233 = add i32 %spec.select845, -3
  %234 = getelementptr inbounds i8, ptr %1, i64 328
  store i32 %233, ptr %234, align 4, !tbaa !36
  %235 = add i32 %spec.select845, -4
  %236 = getelementptr inbounds i8, ptr %1, i64 332
  store i32 %235, ptr %236, align 4, !tbaa !37
  %237 = getelementptr inbounds i8, ptr %1, i64 336
  %238 = insertelement <4 x i32> poison, i32 %spec.select845, i64 0
  %239 = shufflevector <4 x i32> %238, <4 x i32> poison, <4 x i32> zeroinitializer
  %240 = add <4 x i32> %239, <i32 -5, i32 -6, i32 -7, i32 -8>
  store <4 x i32> %240, ptr %237, align 4, !tbaa !21
  %241 = getelementptr inbounds i8, ptr %1, i64 352
  %242 = add <4 x i32> %239, <i32 -9, i32 -10, i32 -11, i32 -12>
  store <4 x i32> %242, ptr %241, align 4, !tbaa !21
  %243 = add i32 %spec.select845, -13
  %244 = getelementptr inbounds i8, ptr %1, i64 368
  store i32 %243, ptr %244, align 4, !tbaa !38
  %245 = add i32 %spec.select845, -14
  %246 = getelementptr inbounds i8, ptr %1, i64 372
  store i32 %245, ptr %246, align 4, !tbaa !39
  br i1 %.not831, label %250, label %247

247:                                              ; preds = %226
  %248 = getelementptr inbounds i8, ptr %1, i64 96
  %249 = load <2 x i32>, ptr %248, align 4, !tbaa !21
  store <2 x i32> %249, ptr %244, align 4, !tbaa !21
  br label %250

250:                                              ; preds = %247, %226
  %251 = getelementptr inbounds i8, ptr %1, i64 376
  %252 = load i32, ptr %251, align 4, !tbaa !40
  %253 = getelementptr inbounds i8, ptr %1, i64 380
  %254 = load i32, ptr %253, align 4, !tbaa !41
  %255 = getelementptr inbounds i8, ptr %1, i64 384
  %256 = load i32, ptr %255, align 4, !tbaa !42
  %257 = getelementptr inbounds i8, ptr %1, i64 388
  %258 = load i32, ptr %257, align 4, !tbaa !43
  %259 = getelementptr inbounds i8, ptr %1, i64 392
  %260 = load i32, ptr %259, align 4, !tbaa !44
  %261 = getelementptr inbounds i8, ptr %1, i64 396
  %262 = load i32, ptr %261, align 4, !tbaa !45
  br i1 %219, label %263, label %266

263:                                              ; preds = %250
  %264 = extractelement <4 x i32> %240, i64 0
  %265 = extractelement <4 x i32> %240, i64 1
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx(ptr noundef nonnull %0, i32 noundef %5, i32 noundef %229, i32 noundef %231, i32 noundef %233, i32 noundef %235, i32 noundef %264, i32 noundef %265, i32 noundef %252, i32 noundef %254, i32 noundef %256, i32 noundef %258, i32 noundef %260, i32 noundef %262) #4
  br label %331

266:                                              ; preds = %250
  %267 = extractelement <4 x i32> %240, i64 0
  %268 = extractelement <4 x i32> %240, i64 1
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx(ptr noundef nonnull %0, i32 noundef %5, i32 noundef %229, i32 noundef %231, i32 noundef %233, i32 noundef %235, i32 noundef %267, i32 noundef %268, i32 noundef %252, i32 noundef %254, i32 noundef %256, i32 noundef %258, i32 noundef %260, i32 noundef %262) #4
  br label %331

269:                                              ; preds = %221
  %270 = icmp ult i32 %224, 1101
  br i1 %270, label %271, label %306

271:                                              ; preds = %269
  %272 = add i32 %223, 19
  %273 = add i32 %223, 18
  %274 = getelementptr inbounds i8, ptr %1, i64 304
  store i32 %273, ptr %274, align 4, !tbaa !46
  %275 = add i32 %223, 17
  %276 = getelementptr inbounds i8, ptr %1, i64 308
  store i32 %275, ptr %276, align 4, !tbaa !47
  %277 = add i32 %223, 16
  %278 = getelementptr inbounds i8, ptr %1, i64 312
  store i32 %277, ptr %278, align 4, !tbaa !48
  %279 = add i32 %223, 15
  %280 = getelementptr inbounds i8, ptr %1, i64 316
  store i32 %279, ptr %280, align 4, !tbaa !49
  %281 = add i32 %223, 14
  %282 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %281, ptr %282, align 4, !tbaa !50
  %283 = add i32 %223, 13
  %284 = getelementptr inbounds i8, ptr %1, i64 320
  store i32 %283, ptr %284, align 4, !tbaa !34
  %285 = add i32 %223, 12
  %286 = getelementptr inbounds i8, ptr %1, i64 324
  store i32 %285, ptr %286, align 4, !tbaa !35
  %287 = add i32 %223, 11
  %288 = getelementptr inbounds i8, ptr %1, i64 328
  store i32 %287, ptr %288, align 4, !tbaa !36
  %289 = add i32 %223, 10
  %290 = getelementptr inbounds i8, ptr %1, i64 332
  store i32 %289, ptr %290, align 4, !tbaa !37
  %291 = insertelement <4 x i32> poison, i32 %223, i64 0
  %292 = shufflevector <4 x i32> %291, <4 x i32> poison, <4 x i32> zeroinitializer
  %293 = add <4 x i32> %292, <i32 9, i32 8, i32 7, i32 6>
  %294 = getelementptr inbounds i8, ptr %1, i64 336
  store <4 x i32> %293, ptr %294, align 4, !tbaa !21
  %295 = add <4 x i32> %292, <i32 5, i32 4, i32 3, i32 2>
  %296 = getelementptr inbounds i8, ptr %1, i64 280
  store <4 x i32> %295, ptr %296, align 4, !tbaa !21
  %297 = add i32 %223, 1
  %298 = getelementptr inbounds i8, ptr %1, i64 296
  store i32 %297, ptr %298, align 4, !tbaa !51
  %299 = getelementptr inbounds i8, ptr %1, i64 300
  store i32 %223, ptr %299, align 4, !tbaa !52
  br i1 %219, label %300, label %303

300:                                              ; preds = %271
  %301 = extractelement <4 x i32> %293, i64 0
  %302 = extractelement <4 x i32> %293, i64 1
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512_vl256(ptr noundef nonnull %0, i32 noundef %273, i32 noundef %275, i32 noundef %277, i32 noundef %279, i32 noundef %281, i32 noundef %283, i32 noundef %285, i32 noundef %287, i32 noundef %289, i32 noundef %301, i32 noundef %302) #4
  br label %331

303:                                              ; preds = %271
  %304 = extractelement <4 x i32> %293, i64 0
  %305 = extractelement <4 x i32> %293, i64 1
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512_vl256(ptr noundef nonnull %0, i32 noundef %273, i32 noundef %275, i32 noundef %277, i32 noundef %279, i32 noundef %281, i32 noundef %283, i32 noundef %285, i32 noundef %287, i32 noundef %289, i32 noundef %304, i32 noundef %305) #4
  br label %331

306:                                              ; preds = %269
  %307 = add i32 %223, 14
  %308 = insertelement <4 x i32> poison, i32 %223, i64 0
  %309 = shufflevector <4 x i32> %308, <4 x i32> poison, <4 x i32> zeroinitializer
  %310 = add <4 x i32> %309, <i32 13, i32 12, i32 11, i32 10>
  %311 = getelementptr inbounds i8, ptr %1, i64 280
  store <4 x i32> %310, ptr %311, align 4, !tbaa !21
  %312 = add <4 x i32> %309, <i32 9, i32 8, i32 7, i32 6>
  %313 = getelementptr inbounds i8, ptr %1, i64 296
  store <4 x i32> %312, ptr %313, align 4, !tbaa !21
  %314 = add i32 %223, 5
  %315 = getelementptr inbounds i8, ptr %1, i64 312
  store i32 %314, ptr %315, align 4, !tbaa !48
  %316 = add i32 %223, 4
  %317 = getelementptr inbounds i8, ptr %1, i64 316
  store i32 %316, ptr %317, align 4, !tbaa !49
  %318 = add i32 %223, 3
  %319 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %318, ptr %319, align 4, !tbaa !50
  %320 = add i32 %223, 2
  %321 = getelementptr inbounds i8, ptr %1, i64 144
  store i32 %320, ptr %321, align 4, !tbaa !53
  %322 = add i32 %223, 1
  %323 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %322, ptr %323, align 4, !tbaa !54
  %324 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %223, ptr %324, align 4, !tbaa !55
  br i1 %219, label %325, label %328

325:                                              ; preds = %306
  %326 = extractelement <4 x i32> %312, i64 2
  %327 = extractelement <4 x i32> %312, i64 3
  call void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512(ptr noundef nonnull %0, i32 noundef %326, i32 noundef %327, i32 noundef %314, i32 noundef %316, i32 noundef %318, i32 noundef %320, i32 noundef %322, i32 noundef %223) #4
  br label %331

328:                                              ; preds = %306
  %329 = extractelement <4 x i32> %312, i64 2
  %330 = extractelement <4 x i32> %312, i64 3
  call void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512(ptr noundef nonnull %0, i32 noundef %329, i32 noundef %330, i32 noundef %314, i32 noundef %316, i32 noundef %318, i32 noundef %320, i32 noundef %322, i32 noundef %223) #4
  br label %331

331:                                              ; preds = %325, %300, %263, %303, %328, %266
  %.1817 = phi i32 [ %spec.select845, %266 ], [ %spec.select845, %263 ], [ %272, %303 ], [ %272, %300 ], [ %307, %328 ], [ %307, %325 ]
  store i32 %.1817, ptr %222, align 4, !tbaa !11
  br label %.thread864.thread

.thread864.thread:                                ; preds = %.thread, %205, %.thread864, %331
  %cond = icmp eq i32 %3, 36
  br i1 %cond, label %332, label %.thread864.thread.thread

332:                                              ; preds = %.thread864.thread, %.thread870
  %333 = getelementptr inbounds i8, ptr %1, i64 72
  %334 = load i32, ptr %333, align 4, !tbaa !11
  %335 = load i32, ptr %24, align 4, !tbaa !5
  %336 = icmp ult i32 %335, 1051
  br i1 %336, label %337, label %356

337:                                              ; preds = %332
  %338 = add i32 %334, 9
  %339 = add i32 %334, 8
  %340 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %339, ptr %340, align 4, !tbaa !50
  %341 = add i32 %334, 7
  %342 = getelementptr inbounds i8, ptr %1, i64 144
  store i32 %341, ptr %342, align 4, !tbaa !53
  %343 = add i32 %334, 6
  %344 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %343, ptr %344, align 4, !tbaa !54
  %345 = add i32 %334, 5
  %346 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %345, ptr %346, align 4, !tbaa !55
  %347 = add i32 %334, 4
  %348 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 %347, ptr %348, align 4, !tbaa !56
  %349 = add i32 %334, 3
  %350 = getelementptr inbounds i8, ptr %1, i64 240
  store i32 %349, ptr %350, align 4, !tbaa !57
  %351 = add i32 %334, 2
  %352 = getelementptr inbounds i8, ptr %1, i64 264
  store i32 %351, ptr %352, align 4, !tbaa !58
  %353 = add i32 %334, 1
  %354 = getelementptr inbounds i8, ptr %1, i64 208
  store i32 %353, ptr %354, align 4, !tbaa !59
  %355 = getelementptr inbounds i8, ptr %1, i64 212
  store i32 %334, ptr %355, align 4, !tbaa !60
  call void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx(ptr noundef nonnull %0, i32 noundef %341, i32 noundef %343, i32 noundef %345, i32 noundef %347, i32 noundef %339, i32 noundef %349, i32 noundef %351, i32 noundef %353, i32 noundef %334) #4
  br label %.thread871

356:                                              ; preds = %332
  %357 = call i32 @libxsmm_cpuid_x86_use_high_prec_eltwise_approx() #4
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %374

359:                                              ; preds = %356
  %360 = add i32 %334, 6
  %361 = add i32 %334, 5
  %362 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %361, ptr %362, align 4, !tbaa !50
  %363 = add i32 %334, 4
  %364 = getelementptr inbounds i8, ptr %1, i64 144
  store i32 %363, ptr %364, align 4, !tbaa !53
  %365 = add i32 %334, 3
  %366 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %365, ptr %366, align 4, !tbaa !54
  %367 = add i32 %334, 2
  %368 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %367, ptr %368, align 4, !tbaa !55
  %369 = add i32 %334, 1
  %370 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 %369, ptr %370, align 4, !tbaa !56
  %371 = getelementptr inbounds i8, ptr %1, i64 240
  store i32 %334, ptr %371, align 4, !tbaa !57
  %372 = getelementptr inbounds i8, ptr %1, i64 512
  %373 = load i8, ptr %372, align 4, !tbaa !18
  call void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx512(ptr noundef nonnull %0, i32 noundef %363, i32 noundef %365, i32 noundef %367, i32 noundef %369, i32 noundef %361, i32 noundef %334, i8 noundef zeroext %373) #4
  br label %.thread871

374:                                              ; preds = %356
  %375 = getelementptr inbounds i8, ptr %1, i64 76
  %376 = load i32, ptr %375, align 4, !tbaa !61
  %377 = add i32 %334, 14
  %378 = add i32 %376, 1
  %379 = add i32 %334, 13
  %380 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %379, ptr %380, align 4, !tbaa !50
  %381 = add i32 %334, 12
  %382 = getelementptr inbounds i8, ptr %1, i64 144
  store i32 %381, ptr %382, align 4, !tbaa !53
  %383 = add i32 %334, 11
  %384 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %383, ptr %384, align 4, !tbaa !54
  %385 = add i32 %334, 10
  %386 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %385, ptr %386, align 4, !tbaa !55
  %387 = add i32 %334, 9
  %388 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 %387, ptr %388, align 4, !tbaa !56
  %389 = insertelement <4 x i32> poison, i32 %334, i64 0
  %390 = shufflevector <4 x i32> %389, <4 x i32> poison, <4 x i32> zeroinitializer
  %391 = add <4 x i32> %390, <i32 8, i32 7, i32 2, i32 1>
  %392 = getelementptr inbounds i8, ptr %1, i64 248
  %393 = add i32 %334, 6
  %394 = getelementptr inbounds i8, ptr %1, i64 240
  store i32 %393, ptr %394, align 4, !tbaa !57
  %395 = add i32 %334, 5
  %396 = getelementptr inbounds i8, ptr %1, i64 244
  store i32 %395, ptr %396, align 4, !tbaa !62
  %397 = add i32 %334, 4
  %398 = getelementptr inbounds i8, ptr %1, i64 268
  store i32 %397, ptr %398, align 4, !tbaa !63
  %399 = add i32 %334, 3
  %400 = getelementptr inbounds i8, ptr %1, i64 272
  store i32 %399, ptr %400, align 4, !tbaa !64
  store <4 x i32> %391, ptr %392, align 4, !tbaa !21
  %401 = getelementptr inbounds i8, ptr %1, i64 264
  store i32 %334, ptr %401, align 4, !tbaa !58
  %402 = getelementptr inbounds i8, ptr %1, i64 276
  store i32 %376, ptr %402, align 4, !tbaa !65
  %403 = getelementptr inbounds i8, ptr %1, i64 512
  %404 = load i8, ptr %403, align 4, !tbaa !18
  %405 = extractelement <4 x i32> %391, i64 0
  %406 = extractelement <4 x i32> %391, i64 1
  call void @libxsmm_generator_prepare_coeffs_exp_ps_5dts_avx512(ptr noundef nonnull %0, i32 noundef %381, i32 noundef %383, i32 noundef %385, i32 noundef %387, i32 noundef %405, i32 noundef %406, i32 noundef %379, i32 noundef %393, i32 noundef %395, i32 noundef %334, i32 noundef %397, i32 noundef %399, i8 noundef zeroext %404) #4
  store i32 %378, ptr %375, align 4, !tbaa !61
  br label %.thread871

.thread871:                                       ; preds = %337, %374, %359
  %.0820 = phi i32 [ %338, %337 ], [ %360, %359 ], [ %377, %374 ]
  store i32 %.0820, ptr %333, align 4, !tbaa !11
  br label %.thread874

.thread864.thread.thread:                         ; preds = %.thread864.thread
  %407 = add i32 %3, -7
  %or.cond27 = icmp ult i32 %407, 2
  br i1 %or.cond27, label %408, label %.thread864.thread.thread.thread

408:                                              ; preds = %.thread864.thread.thread
  %409 = getelementptr inbounds i8, ptr %1, i64 72
  %410 = load i32, ptr %409, align 4, !tbaa !11
  %411 = getelementptr inbounds i8, ptr %1, i64 76
  %412 = load i32, ptr %411, align 4, !tbaa !61
  %413 = add i32 %410, 14
  %414 = add i32 %412, 2
  %415 = load i32, ptr %24, align 4, !tbaa !5
  %416 = icmp ult i32 %415, 1051
  br i1 %416, label %417, label %421

417:                                              ; preds = %408
  %418 = getelementptr inbounds i8, ptr %1, i64 80
  %419 = load i32, ptr %418, align 4, !tbaa !20
  %.not833 = icmp eq i32 %419, 0
  %420 = add i32 %410, 12
  %spec.select846 = select i1 %.not833, i32 %413, i32 %420
  br label %421

421:                                              ; preds = %417, %408
  %.0819 = phi i32 [ %413, %408 ], [ %spec.select846, %417 ]
  %422 = add i32 %412, 1
  %423 = getelementptr inbounds i8, ptr %1, i64 228
  store i32 %422, ptr %423, align 4, !tbaa !66
  %424 = getelementptr inbounds i8, ptr %1, i64 232
  store i32 %412, ptr %424, align 4, !tbaa !67
  %425 = insertelement <4 x i32> poison, i32 %.0819, i64 0
  %426 = shufflevector <4 x i32> %425, <4 x i32> poison, <4 x i32> zeroinitializer
  %427 = add <4 x i32> %426, <i32 -1, i32 -13, i32 -14, i32 -4>
  %428 = getelementptr inbounds i8, ptr %1, i64 132
  %429 = add i32 %.0819, -2
  %430 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %429, ptr %430, align 4, !tbaa !31
  %431 = add i32 %.0819, -3
  %432 = getelementptr inbounds i8, ptr %1, i64 220
  store i32 %431, ptr %432, align 4, !tbaa !68
  %433 = add i32 %.0819, -5
  %434 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %433, ptr %434, align 4, !tbaa !54
  %435 = add i32 %.0819, -6
  %436 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %435, ptr %436, align 4, !tbaa !55
  %437 = add i32 %.0819, -7
  %438 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 %437, ptr %438, align 4, !tbaa !56
  %439 = add i32 %.0819, -8
  %440 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 %439, ptr %440, align 4, !tbaa !69
  %441 = add i32 %.0819, -9
  %442 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 %441, ptr %442, align 4, !tbaa !70
  %443 = add i32 %.0819, -10
  %444 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 %443, ptr %444, align 4, !tbaa !71
  %445 = add i32 %.0819, -11
  %446 = getelementptr inbounds i8, ptr %1, i64 208
  store i32 %445, ptr %446, align 4, !tbaa !59
  %447 = add i32 %.0819, -12
  %448 = getelementptr inbounds i8, ptr %1, i64 212
  store i32 %447, ptr %448, align 4, !tbaa !60
  %449 = getelementptr inbounds i8, ptr %1, i64 136
  store <4 x i32> %427, ptr %428, align 4, !tbaa !21
  br i1 %416, label %450, label %457

450:                                              ; preds = %421
  %451 = extractelement <4 x i32> %427, i64 3
  call void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx(ptr noundef nonnull %0, i32 noundef %451, i32 noundef %433, i32 noundef %435, i32 noundef %437, i32 noundef %439, i32 noundef %441, i32 noundef %443, i32 noundef %445, i32 noundef %447, i32 noundef %429, i32 noundef %431) #4
  %452 = getelementptr inbounds i8, ptr %1, i64 80
  %453 = load i32, ptr %452, align 4, !tbaa !20
  %.not834 = icmp eq i32 %453, 0
  br i1 %.not834, label %461, label %454

454:                                              ; preds = %450
  %455 = getelementptr inbounds i8, ptr %1, i64 96
  %456 = load <2 x i32>, ptr %455, align 4, !tbaa !21
  store <2 x i32> %456, ptr %449, align 4, !tbaa !21
  br label %461

457:                                              ; preds = %421
  %458 = getelementptr inbounds i8, ptr %1, i64 512
  %459 = load i8, ptr %458, align 4, !tbaa !18
  %460 = extractelement <4 x i32> %427, i64 3
  call void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx512(ptr noundef nonnull %0, i32 noundef %460, i32 noundef %433, i32 noundef %435, i32 noundef %437, i32 noundef %439, i32 noundef %441, i32 noundef %443, i32 noundef %445, i32 noundef %447, i32 noundef %429, i32 noundef %431, i8 noundef zeroext %459) #4
  br label %461

461:                                              ; preds = %450, %454, %457
  store i32 %414, ptr %411, align 4, !tbaa !61
  store i32 %.0819, ptr %409, align 4, !tbaa !11
  br label %.thread874

.thread864.thread.thread.thread:                  ; preds = %.thread864.thread.thread
  %462 = add i32 %3, -9
  %or.cond29 = icmp ult i32 %462, 2
  br i1 %or.cond29, label %463, label %.thread874

463:                                              ; preds = %.thread864.thread.thread.thread
  %464 = getelementptr inbounds i8, ptr %1, i64 72
  %465 = load i32, ptr %464, align 4, !tbaa !11
  %466 = getelementptr inbounds i8, ptr %1, i64 76
  %467 = load i32, ptr %466, align 4, !tbaa !61
  %468 = add i32 %465, 15
  %469 = add i32 %467, 2
  %470 = load i32, ptr %24, align 4, !tbaa !5
  %471 = icmp ult i32 %470, 1051
  br i1 %471, label %472, label %475

472:                                              ; preds = %463
  %473 = getelementptr inbounds i8, ptr %1, i64 80
  %474 = load i32, ptr %473, align 4, !tbaa !20
  %.not835 = icmp eq i32 %474, 0
  %spec.select847.v = select i1 %.not835, i32 14, i32 12
  %spec.select847 = add i32 %spec.select847.v, %465
  br label %475

475:                                              ; preds = %472, %463
  %.0818 = phi i32 [ %468, %463 ], [ %spec.select847, %472 ]
  %476 = add i32 %467, 1
  %477 = getelementptr inbounds i8, ptr %1, i64 228
  store i32 %476, ptr %477, align 4, !tbaa !66
  %478 = getelementptr inbounds i8, ptr %1, i64 232
  store i32 %467, ptr %478, align 4, !tbaa !67
  %479 = insertelement <4 x i32> poison, i32 %.0818, i64 0
  %480 = shufflevector <4 x i32> %479, <4 x i32> poison, <4 x i32> zeroinitializer
  %481 = add <4 x i32> %480, <i32 -1, i32 -13, i32 -14, i32 -3>
  %482 = getelementptr inbounds i8, ptr %1, i64 132
  %483 = add i32 %.0818, -2
  %484 = getelementptr inbounds i8, ptr %1, i64 220
  store i32 %483, ptr %484, align 4, !tbaa !68
  %485 = add i32 %.0818, -4
  %486 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %485, ptr %486, align 4, !tbaa !54
  %487 = add i32 %.0818, -5
  %488 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %487, ptr %488, align 4, !tbaa !55
  %489 = add i32 %.0818, -6
  %490 = getelementptr inbounds i8, ptr %1, i64 204
  store i32 %489, ptr %490, align 4, !tbaa !56
  %491 = add i32 %.0818, -7
  %492 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 %491, ptr %492, align 4, !tbaa !69
  %493 = add i32 %.0818, -8
  %494 = getelementptr inbounds i8, ptr %1, i64 196
  store i32 %493, ptr %494, align 4, !tbaa !70
  %495 = add i32 %.0818, -9
  %496 = getelementptr inbounds i8, ptr %1, i64 200
  store i32 %495, ptr %496, align 4, !tbaa !71
  %497 = add i32 %.0818, -10
  %498 = getelementptr inbounds i8, ptr %1, i64 208
  store i32 %497, ptr %498, align 4, !tbaa !59
  %499 = add i32 %.0818, -11
  %500 = getelementptr inbounds i8, ptr %1, i64 212
  store i32 %499, ptr %500, align 4, !tbaa !60
  %501 = add i32 %.0818, -12
  %502 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %501, ptr %502, align 4, !tbaa !31
  %503 = getelementptr inbounds i8, ptr %1, i64 136
  store <4 x i32> %481, ptr %482, align 4, !tbaa !21
  %504 = add i32 %.0818, -15
  %505 = getelementptr inbounds i8, ptr %1, i64 224
  store i32 %504, ptr %505, align 4, !tbaa !50
  br i1 %471, label %506, label %513

506:                                              ; preds = %475
  %507 = extractelement <4 x i32> %481, i64 3
  call void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx(ptr noundef nonnull %0, i32 noundef %507, i32 noundef %485, i32 noundef %487, i32 noundef %489, i32 noundef %491, i32 noundef %493, i32 noundef %495, i32 noundef %497, i32 noundef %499, i32 noundef %501, i32 noundef %483) #4
  %508 = getelementptr inbounds i8, ptr %1, i64 80
  %509 = load i32, ptr %508, align 4, !tbaa !20
  %.not836 = icmp eq i32 %509, 0
  br i1 %.not836, label %517, label %510

510:                                              ; preds = %506
  %511 = getelementptr inbounds i8, ptr %1, i64 96
  %512 = load <2 x i32>, ptr %511, align 4, !tbaa !21
  store <2 x i32> %512, ptr %503, align 4, !tbaa !21
  br label %517

513:                                              ; preds = %475
  %514 = getelementptr inbounds i8, ptr %1, i64 512
  %515 = load i8, ptr %514, align 4, !tbaa !18
  %516 = extractelement <4 x i32> %481, i64 3
  call void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx512(ptr noundef nonnull %0, i32 noundef %516, i32 noundef %485, i32 noundef %487, i32 noundef %489, i32 noundef %491, i32 noundef %493, i32 noundef %495, i32 noundef %497, i32 noundef %499, i32 noundef %501, i32 noundef %483, i32 noundef %504, i8 noundef zeroext %515) #4
  br label %517

517:                                              ; preds = %506, %510, %513
  store i32 %469, ptr %466, align 4, !tbaa !61
  store i32 %.0818, ptr %464, align 4, !tbaa !11
  br label %.thread874

.thread874:                                       ; preds = %175, %168, %181, %461, %.thread871, %.thread864.thread.thread.thread, %517
  %518 = icmp eq i32 %3, 42
  switch i32 %76, label %.thread877 [
    i32 42, label %519
    i32 64, label %553
  ]

519:                                              ; preds = %.thread874
  %520 = and i32 %4, 1024
  %521 = icmp eq i32 %520, 0
  br i1 %521, label %522, label %527

522:                                              ; preds = %519
  %523 = getelementptr inbounds i8, ptr %1, i64 72
  %524 = load i32, ptr %523, align 4, !tbaa !11
  %525 = getelementptr inbounds i8, ptr %1, i64 472
  store i32 %524, ptr %525, align 4, !tbaa !72
  %526 = add i32 %524, 1
  store i32 %526, ptr %523, align 4, !tbaa !11
  br label %527

527:                                              ; preds = %522, %519
  %528 = load i32, ptr %24, align 4, !tbaa !5
  %529 = icmp ult i32 %528, 1101
  %or.cond33 = and i1 %518, %529
  br i1 %or.cond33, label %530, label %548

530:                                              ; preds = %527
  %531 = getelementptr inbounds i8, ptr %1, i64 20
  %532 = load i32, ptr %531, align 4, !tbaa !73
  %.not837 = icmp eq i32 %532, 4
  br i1 %.not837, label %548, label %533

533:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %18, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %19, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %20, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %21, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_bytes_i16, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %22, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_sbytes_i16, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %23, ptr noundef nonnull align 16 dereferenceable(32) @__const.libxsmm_configure_unary_kernel_vregs_masks.perm_words_i16, i64 32, i1 false)
  %534 = getelementptr inbounds i8, ptr %1, i64 72
  %535 = load i32, ptr %534, align 4, !tbaa !11
  %536 = getelementptr inbounds i8, ptr %1, i64 348
  store i32 %535, ptr %536, align 4, !tbaa !74
  %537 = add i32 %535, 1
  %538 = getelementptr inbounds i8, ptr %1, i64 352
  store i32 %537, ptr %538, align 4, !tbaa !75
  %539 = add i32 %535, 2
  store i32 %539, ptr %534, align 4, !tbaa !11
  switch i32 %532, label %547 [
    i32 1, label %540
    i32 2, label %543
  ]

540:                                              ; preds = %533
  %541 = and i32 %4, 16
  %.not839 = icmp eq i32 %541, 0
  %542 = select i1 %.not839, ptr %18, ptr %19
  br label %.sink.split

543:                                              ; preds = %533
  %544 = and i32 %4, 16
  %.not838 = icmp eq i32 %544, 0
  %545 = select i1 %.not838, ptr %21, ptr %22
  br label %.sink.split

.sink.split:                                      ; preds = %540, %543
  %.sink905 = phi ptr [ %545, %543 ], [ %542, %540 ]
  %.sink = phi ptr [ %23, %543 ], [ %20, %540 ]
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %.sink905, ptr noundef nonnull @.str.8, i8 noundef signext 121, i32 noundef %535) #4
  %546 = load i32, ptr %538, align 4, !tbaa !75
  call void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef nonnull %0, ptr noundef nonnull %.sink, ptr noundef nonnull @.str.9, i8 noundef signext 121, i32 noundef %546) #4
  br label %547

547:                                              ; preds = %.sink.split, %533
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #4
  br label %548

548:                                              ; preds = %547, %530, %527
  br i1 %521, label %549, label %.thread877

549:                                              ; preds = %548
  %550 = load i32, ptr %24, align 4, !tbaa !5
  %551 = getelementptr inbounds i8, ptr %1, i64 472
  %552 = load i32, ptr %551, align 4, !tbaa !72
  call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %550, i32 noundef 537209368, i32 noundef %6, i32 noundef 127, i32 noundef 0, i32 noundef 0, i8 noundef signext %29, i32 noundef %552, i32 noundef 0, i32 noundef 1, i32 noundef 0) #4
  br label %.thread877

553:                                              ; preds = %.thread874
  %554 = icmp eq i32 %3, 65
  %555 = getelementptr inbounds i8, ptr %1, i64 72
  %556 = load i32, ptr %555, align 4, !tbaa !11
  %557 = getelementptr inbounds i8, ptr %1, i64 344
  store i32 %556, ptr %557, align 4, !tbaa !15
  %558 = getelementptr inbounds i8, ptr %1, i64 348
  %559 = insertelement <2 x i32> poison, i32 %556, i64 0
  %560 = shufflevector <2 x i32> %559, <2 x i32> poison, <2 x i32> zeroinitializer
  %561 = add <2 x i32> %560, <i32 1, i32 2>
  store <2 x i32> %561, ptr %558, align 4, !tbaa !21
  %562 = add i32 %556, 3
  store i32 %562, ptr %555, align 4, !tbaa !11
  %563 = getelementptr inbounds i8, ptr %1, i64 76
  %564 = load i32, ptr %563, align 4, !tbaa !61
  %565 = getelementptr inbounds i8, ptr %1, i64 228
  store i32 %564, ptr %565, align 4, !tbaa !66
  %566 = add i32 %564, 1
  store i32 %566, ptr %563, align 4, !tbaa !61
  call void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef nonnull %0, i32 noundef -1568407413, i32 noundef %5, i64 noundef 2863311530) #4
  %567 = load i32, ptr %565, align 4, !tbaa !66
  call void @libxsmm_x86_instruction_mask_move(ptr noundef nonnull %0, i32 noundef -1610149486, i32 noundef %5, i32 noundef %567) #4
  br i1 %554, label %568, label %571

568:                                              ; preds = %553
  %569 = getelementptr inbounds i8, ptr %1, i64 56
  %570 = load i32, ptr %569, align 4, !tbaa !76
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %570, i32 noundef %6, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %7, i32 noundef 0) #4
  br label %571

571:                                              ; preds = %568, %553
  %572 = getelementptr inbounds i8, ptr %1, i64 56
  %573 = load i32, ptr %572, align 4, !tbaa !76
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %573, i32 noundef %6, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %6, i32 noundef 0) #4
  br label %.thread877

.thread877:                                       ; preds = %.thread874, %.thread891, %549, %548, %571
  %574 = and i32 %4, 4096
  %.not840 = icmp eq i32 %574, 0
  br i1 %.not840, label %595, label %575

575:                                              ; preds = %.thread877
  %576 = load i32, ptr %24, align 4, !tbaa !5
  %577 = add i32 %576, -1005
  %or.cond848 = icmp ult i32 %577, 994
  br i1 %or.cond848, label %578, label %595

578:                                              ; preds = %575
  %579 = getelementptr inbounds i8, ptr %1, i64 72
  %580 = load i32, ptr %579, align 4, !tbaa !11
  %581 = add i32 %580, 7
  %582 = add i32 %580, 6
  %583 = getelementptr inbounds i8, ptr %1, i64 412
  store i32 %582, ptr %583, align 4, !tbaa !23
  %584 = add i32 %580, 5
  %585 = getelementptr inbounds i8, ptr %1, i64 416
  store i32 %584, ptr %585, align 4, !tbaa !24
  %586 = add i32 %580, 4
  %587 = getelementptr inbounds i8, ptr %1, i64 420
  store i32 %586, ptr %587, align 4, !tbaa !77
  %588 = add i32 %580, 3
  %589 = getelementptr inbounds i8, ptr %1, i64 424
  store i32 %588, ptr %589, align 4, !tbaa !78
  %590 = getelementptr inbounds i8, ptr %1, i64 460
  %591 = insertelement <2 x i32> poison, i32 %580, i64 0
  %592 = shufflevector <2 x i32> %591, <2 x i32> poison, <2 x i32> zeroinitializer
  %593 = add <2 x i32> %592, <i32 2, i32 1>
  store <2 x i32> %593, ptr %590, align 4, !tbaa !21
  %594 = getelementptr inbounds i8, ptr %1, i64 468
  store i32 %580, ptr %594, align 4, !tbaa !79
  call void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef nonnull %0, i8 noundef zeroext %29, i32 noundef %6, i32 noundef %582, i32 noundef %584, i32 noundef %586, i32 noundef %588) #4
  store i32 %581, ptr %579, align 4, !tbaa !11
  br label %595

595:                                              ; preds = %575, %578, %.thread877
  ret void
}

; 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) #3

declare void @libxsmm_x86_instruction_full_vec_load_of_constants(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_load_prng_state_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_dropout_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_dropout_inv_avx_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512_vl256(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512_vl256(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_ps_minimax3_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_gelu_inv_ps_minimax3_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_3dts_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_exp_ps_5dts_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_tanh_ps_rational_78_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_generator_prepare_coeffs_sigmoid_ps_rational_78_avx512(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_alu_imm_i64(ptr noundef, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #1

declare void @libxsmm_x86_instruction_mask_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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, !10, i64 28}
!6 = !{!"libxsmm_generated_code", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !10, i64 72}
!12 = !{!"libxsmm_mateltwise_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !10, i64 460, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !8, i64 512}
!13 = !{!12, !10, i64 116}
!14 = !{!12, !10, i64 128}
!15 = !{!12, !10, i64 344}
!16 = !{!12, !10, i64 120}
!17 = !{!12, !10, i64 408}
!18 = !{!12, !8, i64 512}
!19 = !{!12, !10, i64 124}
!20 = !{!12, !10, i64 80}
!21 = !{!10, !10, i64 0}
!22 = !{!12, !10, i64 456}
!23 = !{!12, !10, i64 412}
!24 = !{!12, !10, i64 416}
!25 = !{!12, !10, i64 436}
!26 = !{!12, !10, i64 440}
!27 = !{!12, !10, i64 448}
!28 = !{!12, !10, i64 452}
!29 = !{!12, !10, i64 444}
!30 = !{!12, !10, i64 476}
!31 = !{!12, !10, i64 216}
!32 = !{!12, !10, i64 256}
!33 = !{!12, !10, i64 260}
!34 = !{!12, !10, i64 320}
!35 = !{!12, !10, i64 324}
!36 = !{!12, !10, i64 328}
!37 = !{!12, !10, i64 332}
!38 = !{!12, !10, i64 368}
!39 = !{!12, !10, i64 372}
!40 = !{!12, !10, i64 376}
!41 = !{!12, !10, i64 380}
!42 = !{!12, !10, i64 384}
!43 = !{!12, !10, i64 388}
!44 = !{!12, !10, i64 392}
!45 = !{!12, !10, i64 396}
!46 = !{!12, !10, i64 304}
!47 = !{!12, !10, i64 308}
!48 = !{!12, !10, i64 312}
!49 = !{!12, !10, i64 316}
!50 = !{!12, !10, i64 224}
!51 = !{!12, !10, i64 296}
!52 = !{!12, !10, i64 300}
!53 = !{!12, !10, i64 144}
!54 = !{!12, !10, i64 160}
!55 = !{!12, !10, i64 176}
!56 = !{!12, !10, i64 204}
!57 = !{!12, !10, i64 240}
!58 = !{!12, !10, i64 264}
!59 = !{!12, !10, i64 208}
!60 = !{!12, !10, i64 212}
!61 = !{!12, !10, i64 76}
!62 = !{!12, !10, i64 244}
!63 = !{!12, !10, i64 268}
!64 = !{!12, !10, i64 272}
!65 = !{!12, !10, i64 276}
!66 = !{!12, !10, i64 228}
!67 = !{!12, !10, i64 232}
!68 = !{!12, !10, i64 220}
!69 = !{!12, !10, i64 192}
!70 = !{!12, !10, i64 196}
!71 = !{!12, !10, i64 200}
!72 = !{!12, !10, i64 472}
!73 = !{!12, !10, i64 20}
!74 = !{!12, !10, i64 348}
!75 = !{!12, !10, i64 352}
!76 = !{!12, !10, i64 56}
!77 = !{!12, !10, i64 420}
!78 = !{!12, !10, i64 424}
!79 = !{!12, !10, i64 468}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass