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

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

%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%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 }
%struct.libxsmm_mateltwise_gp_reg_mapping_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 }

@.str = external hidden unnamed_addr constant [97 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [281 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [386 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [391 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu = external hidden unnamed_addr constant [276 x i8], align 1
@__func__.libxsmm_compute_unary_aarch64_2d_reg_block_relu = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [396 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [401 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [431 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [431 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [391 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

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

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

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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) #1

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

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #1

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

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

declare void @libxsmm_generator_exp_ps_3dts_aarch64_sve(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, i8 noundef zeroext) #1

declare void @libxsmm_generator_exp_ps_3dts_aarch64_asimd(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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_unary_aarch64_2d_reg_block_relu(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #3 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  store i32 %8, ptr %19, align 4, !tbaa !9
  store i32 %9, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #4
  %36 = load ptr, ptr %11, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %36, i32 0, i32 6
  %38 = load i32, ptr %37, align 4, !tbaa !11
  %39 = icmp uge i32 %38, 2201
  br i1 %39, label %40, label %45

40:                                               ; preds = %10
  %41 = load ptr, ptr %11, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %41, i32 0, i32 6
  %43 = load i32, ptr %42, align 4, !tbaa !11
  %44 = icmp ule i32 %43, 2999
  br label %45

45:                                               ; preds = %40, %10
  %46 = phi i1 [ false, %10 ], [ %44, %40 ]
  %47 = zext i1 %46 to i32
  %48 = trunc i32 %47 to i8
  store i8 %48, ptr %23, align 1, !tbaa !13
  %49 = load i32, ptr %19, align 4, !tbaa !9
  %50 = load i32, ptr %15, align 4, !tbaa !9
  %51 = load i8, ptr %23, align 1, !tbaa !13
  %52 = icmp ne i8 %51, 0
  br i1 %52, label %53, label %620

53:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #4
  %54 = load i32, ptr %20, align 4, !tbaa !9
  %55 = trunc i32 %54 to i8
  %56 = zext i8 %55 to i32
  %57 = icmp eq i32 0, %56
  br i1 %57, label %63, label %58

58:                                               ; preds = %53
  %59 = load i32, ptr %20, align 4, !tbaa !9
  %60 = trunc i32 %59 to i8
  %61 = zext i8 %60 to i32
  %62 = icmp slt i32 0, %61
  br i1 %62, label %63, label %81

63:                                               ; preds = %58, %53
  %64 = load i32, ptr %20, align 4, !tbaa !9
  %65 = zext i32 %64 to i64
  %66 = mul i64 1, %65
  %67 = icmp ult i64 %66, 255
  br i1 %67, label %68, label %72

68:                                               ; preds = %63
  %69 = load i32, ptr %20, align 4, !tbaa !9
  %70 = zext i32 %69 to i64
  %71 = mul i64 1, %70
  br label %73

72:                                               ; preds = %63
  br label %73

73:                                               ; preds = %72, %68
  %74 = phi i64 [ %71, %68 ], [ 255, %72 ]
  %75 = icmp ule i64 %74, 255
  br i1 %75, label %76, label %81

76:                                               ; preds = %73
  %77 = load i32, ptr %20, align 4, !tbaa !9
  %78 = uitofp i32 %77 to double
  %79 = fcmp ole double 0.000000e+00, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %76
  br label %82

81:                                               ; preds = %76, %73, %58
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str, i32 noundef 1424, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

82:                                               ; preds = %80
  %83 = load i32, ptr %20, align 4, !tbaa !9
  %84 = trunc i32 %83 to i8
  store i8 %84, ptr %24, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  store i8 7, ptr %25, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #4
  store i8 6, ptr %26, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #4
  store i8 5, ptr %27, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %85 = load ptr, ptr %14, align 8, !tbaa !5
  %86 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %85, i32 noundef 4)
  %87 = icmp eq i32 0, %86
  br i1 %87, label %88, label %89

88:                                               ; preds = %82
  br label %182

89:                                               ; preds = %82
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %90, i32 noundef 4)
  %92 = icmp eq i32 1, %91
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  br label %180

94:                                               ; preds = %89
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %95, i32 noundef 4)
  %97 = icmp eq i32 2, %96
  br i1 %97, label %98, label %99

98:                                               ; preds = %94
  br label %178

99:                                               ; preds = %94
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  %101 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %100, i32 noundef 4)
  %102 = icmp eq i32 3, %101
  br i1 %102, label %103, label %104

103:                                              ; preds = %99
  br label %176

104:                                              ; preds = %99
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %105, i32 noundef 4)
  %107 = icmp eq i32 4, %106
  br i1 %107, label %108, label %109

108:                                              ; preds = %104
  br label %174

109:                                              ; preds = %104
  %110 = load ptr, ptr %14, align 8, !tbaa !5
  %111 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %110, i32 noundef 4)
  %112 = icmp eq i32 5, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  br label %172

114:                                              ; preds = %109
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %115, i32 noundef 4)
  %117 = icmp eq i32 6, %116
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  br label %170

119:                                              ; preds = %114
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %120, i32 noundef 4)
  %122 = icmp eq i32 7, %121
  br i1 %122, label %123, label %124

123:                                              ; preds = %119
  br label %168

124:                                              ; preds = %119
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %125, i32 noundef 4)
  %127 = icmp eq i32 8, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  br label %166

129:                                              ; preds = %124
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %130, i32 noundef 4)
  %132 = icmp eq i32 9, %131
  br i1 %132, label %133, label %134

133:                                              ; preds = %129
  br label %164

134:                                              ; preds = %129
  %135 = load ptr, ptr %14, align 8, !tbaa !5
  %136 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %135, i32 noundef 4)
  %137 = icmp eq i32 10, %136
  br i1 %137, label %138, label %139

138:                                              ; preds = %134
  br label %162

139:                                              ; preds = %134
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  %141 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %140, i32 noundef 4)
  %142 = icmp eq i32 11, %141
  br i1 %142, label %143, label %144

143:                                              ; preds = %139
  br label %160

144:                                              ; preds = %139
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %145, i32 noundef 4)
  %147 = icmp eq i32 12, %146
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  br label %158

149:                                              ; preds = %144
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  %151 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %150, i32 noundef 4)
  %152 = icmp eq i32 13, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  br label %156

154:                                              ; preds = %149
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 1428, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

155:                                              ; No predecessors!
  br label %156

156:                                              ; preds = %155, %153
  %157 = phi i32 [ 1, %153 ], [ 0, %155 ]
  br label %158

158:                                              ; preds = %156, %148
  %159 = phi i32 [ 1, %148 ], [ %157, %156 ]
  br label %160

160:                                              ; preds = %158, %143
  %161 = phi i32 [ 2, %143 ], [ %159, %158 ]
  br label %162

162:                                              ; preds = %160, %138
  %163 = phi i32 [ 2, %138 ], [ %161, %160 ]
  br label %164

164:                                              ; preds = %162, %133
  %165 = phi i32 [ 4, %133 ], [ %163, %162 ]
  br label %166

166:                                              ; preds = %164, %128
  %167 = phi i32 [ 4, %128 ], [ %165, %164 ]
  br label %168

168:                                              ; preds = %166, %123
  %169 = phi i32 [ 8, %123 ], [ %167, %166 ]
  br label %170

170:                                              ; preds = %168, %118
  %171 = phi i32 [ 8, %118 ], [ %169, %168 ]
  br label %172

172:                                              ; preds = %170, %113
  %173 = phi i32 [ 1, %113 ], [ %171, %170 ]
  br label %174

174:                                              ; preds = %172, %108
  %175 = phi i32 [ 1, %108 ], [ %173, %172 ]
  br label %176

176:                                              ; preds = %174, %103
  %177 = phi i32 [ 2, %103 ], [ %175, %174 ]
  br label %178

178:                                              ; preds = %176, %98
  %179 = phi i32 [ 2, %98 ], [ %177, %176 ]
  br label %180

180:                                              ; preds = %178, %93
  %181 = phi i32 [ 4, %93 ], [ %179, %178 ]
  br label %182

182:                                              ; preds = %180, %88
  %183 = phi i32 [ 8, %88 ], [ %181, %180 ]
  %184 = trunc i32 %183 to i8
  %185 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %184)
  store i32 %185, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  %187 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %186, i32 noundef 4)
  %188 = icmp eq i32 2, %187
  %189 = zext i1 %188 to i64
  %190 = select i1 %188, i32 1, i32 0
  store i32 %190, ptr %29, align 4, !tbaa !9
  %191 = load i32, ptr %29, align 4, !tbaa !9
  %192 = icmp ugt i32 %191, 0
  br i1 %192, label %193, label %202

193:                                              ; preds = %182
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %196 = icmp ult i32 1, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %193
  %198 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %200

199:                                              ; preds = %193
  br label %200

200:                                              ; preds = %199, %197
  %201 = phi i32 [ %198, %197 ], [ 1, %199 ]
  call void @libxsmm_handle_error(ptr noundef %194, i32 noundef 90033, ptr noundef @__func__.libxsmm_compute_unary_aarch64_2d_reg_block_relu, ptr noundef @.str, i32 noundef 1432, i32 noundef %201)
  store i32 1, ptr %30, align 4
  br label %617

202:                                              ; preds = %182
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %581, %202
  %204 = load i32, ptr %22, align 4, !tbaa !9
  %205 = load i32, ptr %18, align 4, !tbaa !9
  %206 = icmp ult i32 %204, %205
  br i1 %206, label %207, label %584

207:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  store i32 0, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %544, %207
  %209 = load i32, ptr %21, align 4, !tbaa !9
  %210 = load i32, ptr %17, align 4, !tbaa !9
  %211 = icmp ult i32 %209, %210
  br i1 %211, label %212, label %547

212:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %213 = load i32, ptr %16, align 4, !tbaa !9
  %214 = load i32, ptr %22, align 4, !tbaa !9
  %215 = load i32, ptr %17, align 4, !tbaa !9
  %216 = mul i32 %214, %215
  %217 = add i32 %213, %216
  %218 = load i32, ptr %21, align 4, !tbaa !9
  %219 = add i32 %217, %218
  store i32 %219, ptr %32, align 4, !tbaa !9
  %220 = load ptr, ptr %14, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %220, i32 0, i32 10
  %222 = load i16, ptr %221, align 1, !tbaa !14
  %223 = zext i16 %222 to i32
  %224 = icmp eq i32 %223, 34
  br i1 %224, label %231, label %225

225:                                              ; preds = %212
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %226, i32 0, i32 10
  %228 = load i16, ptr %227, align 1, !tbaa !14
  %229 = zext i16 %228 to i32
  %230 = icmp eq i32 %229, 5
  br i1 %230, label %231, label %444

231:                                              ; preds = %225, %212
  %232 = load ptr, ptr %14, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %232, i32 0, i32 10
  %234 = load i16, ptr %233, align 1, !tbaa !14
  %235 = zext i16 %234 to i32
  %236 = icmp eq i32 %235, 34
  br i1 %236, label %244, label %237

237:                                              ; preds = %231
  %238 = load ptr, ptr %14, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %238, i32 0, i32 9
  %240 = load i16, ptr %239, align 1, !tbaa !17
  %241 = zext i16 %240 to i32
  %242 = and i32 %241, 1
  %243 = icmp sgt i32 %242, 0
  br i1 %243, label %244, label %252

244:                                              ; preds = %237, %231
  %245 = load ptr, ptr %11, align 8, !tbaa !5
  %246 = load i32, ptr %32, align 4, !tbaa !9
  %247 = load i8, ptr %25, align 1, !tbaa !13
  %248 = zext i8 %247 to i32
  %249 = load i8, ptr %24, align 1, !tbaa !13
  %250 = zext i8 %249 to i32
  %251 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %245, i32 noundef 1695555730, i32 noundef %246, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %248, i32 noundef %250, i32 noundef %251)
  br label %252

252:                                              ; preds = %244, %237
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %253, i32 0, i32 9
  %255 = load i16, ptr %254, align 1, !tbaa !17
  %256 = zext i16 %255 to i32
  %257 = and i32 %256, 1
  %258 = icmp sgt i32 %257, 0
  br i1 %258, label %259, label %398

259:                                              ; preds = %252
  %260 = load ptr, ptr %11, align 8, !tbaa !5
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %261, i32 0, i32 0
  %263 = load i32, ptr %262, align 1, !tbaa !18
  %264 = load i32, ptr %21, align 4, !tbaa !9
  %265 = load i32, ptr %17, align 4, !tbaa !9
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %266, i32 0, i32 29
  %268 = load i32, ptr %267, align 4, !tbaa !19
  %269 = trunc i32 %268 to i8
  %270 = zext i8 %269 to i32
  %271 = icmp eq i32 0, %270
  br i1 %271, label %279, label %272

272:                                              ; preds = %259
  %273 = load ptr, ptr %13, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %273, i32 0, i32 29
  %275 = load i32, ptr %274, align 4, !tbaa !19
  %276 = trunc i32 %275 to i8
  %277 = zext i8 %276 to i32
  %278 = icmp slt i32 0, %277
  br i1 %278, label %279, label %303

279:                                              ; preds = %272, %259
  %280 = load ptr, ptr %13, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %280, i32 0, i32 29
  %282 = load i32, ptr %281, align 4, !tbaa !19
  %283 = zext i32 %282 to i64
  %284 = mul i64 1, %283
  %285 = icmp ult i64 %284, 255
  br i1 %285, label %286, label %292

286:                                              ; preds = %279
  %287 = load ptr, ptr %13, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %287, i32 0, i32 29
  %289 = load i32, ptr %288, align 4, !tbaa !19
  %290 = zext i32 %289 to i64
  %291 = mul i64 1, %290
  br label %293

292:                                              ; preds = %279
  br label %293

293:                                              ; preds = %292, %286
  %294 = phi i64 [ %291, %286 ], [ 255, %292 ]
  %295 = icmp ule i64 %294, 255
  br i1 %295, label %296, label %303

296:                                              ; preds = %293
  %297 = load ptr, ptr %13, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %297, i32 0, i32 29
  %299 = load i32, ptr %298, align 4, !tbaa !19
  %300 = uitofp i32 %299 to double
  %301 = fcmp ole double 0.000000e+00, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %296
  br label %304

303:                                              ; preds = %296, %293, %272
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 1451, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

304:                                              ; preds = %302
  %305 = load ptr, ptr %13, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %305, i32 0, i32 29
  %307 = load i32, ptr %306, align 4, !tbaa !19
  %308 = trunc i32 %307 to i8
  %309 = load ptr, ptr %12, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %309, i32 0, i32 9
  %311 = load i32, ptr %310, align 4, !tbaa !21
  %312 = trunc i32 %311 to i8
  %313 = zext i8 %312 to i32
  %314 = icmp eq i32 0, %313
  br i1 %314, label %322, label %315

315:                                              ; preds = %304
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %316, i32 0, i32 9
  %318 = load i32, ptr %317, align 4, !tbaa !21
  %319 = trunc i32 %318 to i8
  %320 = zext i8 %319 to i32
  %321 = icmp slt i32 0, %320
  br i1 %321, label %322, label %346

322:                                              ; preds = %315, %304
  %323 = load ptr, ptr %12, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %323, i32 0, i32 9
  %325 = load i32, ptr %324, align 4, !tbaa !21
  %326 = zext i32 %325 to i64
  %327 = mul i64 1, %326
  %328 = icmp ult i64 %327, 255
  br i1 %328, label %329, label %335

329:                                              ; preds = %322
  %330 = load ptr, ptr %12, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %330, i32 0, i32 9
  %332 = load i32, ptr %331, align 4, !tbaa !21
  %333 = zext i32 %332 to i64
  %334 = mul i64 1, %333
  br label %336

335:                                              ; preds = %322
  br label %336

336:                                              ; preds = %335, %329
  %337 = phi i64 [ %334, %329 ], [ 255, %335 ]
  %338 = icmp ule i64 %337, 255
  br i1 %338, label %339, label %346

339:                                              ; preds = %336
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %340, i32 0, i32 9
  %342 = load i32, ptr %341, align 4, !tbaa !21
  %343 = uitofp i32 %342 to double
  %344 = fcmp ole double 0.000000e+00, %343
  br i1 %344, label %345, label %346

345:                                              ; preds = %339
  br label %347

346:                                              ; preds = %339, %336, %315
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str, i32 noundef 1452, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

347:                                              ; preds = %345
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %348, i32 0, i32 9
  %350 = load i32, ptr %349, align 4, !tbaa !21
  %351 = trunc i32 %350 to i8
  %352 = load i8, ptr %25, align 1, !tbaa !13
  %353 = load i8, ptr %26, align 1, !tbaa !13
  %354 = load i8, ptr %27, align 1, !tbaa !13
  %355 = load ptr, ptr %12, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %355, i32 0, i32 35
  %357 = load i32, ptr %356, align 4, !tbaa !23
  %358 = trunc i32 %357 to i8
  %359 = zext i8 %358 to i32
  %360 = icmp eq i32 0, %359
  br i1 %360, label %368, label %361

361:                                              ; preds = %347
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %362, i32 0, i32 35
  %364 = load i32, ptr %363, align 4, !tbaa !23
  %365 = trunc i32 %364 to i8
  %366 = zext i8 %365 to i32
  %367 = icmp slt i32 0, %366
  br i1 %367, label %368, label %392

368:                                              ; preds = %361, %347
  %369 = load ptr, ptr %12, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %369, i32 0, i32 35
  %371 = load i32, ptr %370, align 4, !tbaa !23
  %372 = zext i32 %371 to i64
  %373 = mul i64 1, %372
  %374 = icmp ult i64 %373, 255
  br i1 %374, label %375, label %381

375:                                              ; preds = %368
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %376, i32 0, i32 35
  %378 = load i32, ptr %377, align 4, !tbaa !23
  %379 = zext i32 %378 to i64
  %380 = mul i64 1, %379
  br label %382

381:                                              ; preds = %368
  br label %382

382:                                              ; preds = %381, %375
  %383 = phi i64 [ %380, %375 ], [ 255, %381 ]
  %384 = icmp ule i64 %383, 255
  br i1 %384, label %385, label %392

385:                                              ; preds = %382
  %386 = load ptr, ptr %12, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %386, i32 0, i32 35
  %388 = load i32, ptr %387, align 4, !tbaa !23
  %389 = uitofp i32 %388 to double
  %390 = fcmp ole double 0.000000e+00, %389
  br i1 %390, label %391, label %392

391:                                              ; preds = %385
  br label %393

392:                                              ; preds = %385, %382, %361
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 1454, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

393:                                              ; preds = %391
  %394 = load ptr, ptr %12, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %394, i32 0, i32 35
  %396 = load i32, ptr %395, align 4, !tbaa !23
  %397 = trunc i32 %396 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %260, i32 noundef %263, i32 noundef %264, i32 noundef %265, i8 noundef zeroext %308, i8 noundef zeroext %351, i8 noundef zeroext %352, i8 noundef zeroext %353, i8 noundef zeroext %354, i8 noundef zeroext %397, ptr noundef %31)
  br label %398

398:                                              ; preds = %393, %252
  %399 = load ptr, ptr %14, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %399, i32 0, i32 10
  %401 = load i16, ptr %400, align 1, !tbaa !14
  %402 = zext i16 %401 to i32
  %403 = icmp eq i32 %402, 5
  br i1 %403, label %404, label %414

404:                                              ; preds = %398
  %405 = load ptr, ptr %11, align 8, !tbaa !5
  %406 = load i32, ptr %32, align 4, !tbaa !9
  %407 = load ptr, ptr %13, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %407, i32 0, i32 32
  %409 = load i32, ptr %408, align 4, !tbaa !24
  %410 = load i32, ptr %32, align 4, !tbaa !9
  %411 = load i8, ptr %24, align 1, !tbaa !13
  %412 = zext i8 %411 to i32
  %413 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %405, i32 noundef 1694924962, i32 noundef %406, i32 noundef %409, i8 noundef zeroext 0, i32 noundef %410, i32 noundef %412, i32 noundef %413)
  br label %443

414:                                              ; preds = %398
  %415 = load ptr, ptr %14, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %415, i32 0, i32 10
  %417 = load i16, ptr %416, align 1, !tbaa !14
  %418 = zext i16 %417 to i32
  %419 = icmp eq i32 %418, 34
  br i1 %419, label %420, label %441

420:                                              ; preds = %414
  %421 = load ptr, ptr %11, align 8, !tbaa !5
  %422 = load i32, ptr %32, align 4, !tbaa !9
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %423, i32 0, i32 102
  %425 = load i32, ptr %424, align 4, !tbaa !25
  %426 = load ptr, ptr %13, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %426, i32 0, i32 30
  %428 = load i32, ptr %427, align 4, !tbaa !26
  %429 = load i8, ptr %24, align 1, !tbaa !13
  %430 = zext i8 %429 to i32
  %431 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %421, i32 noundef 1694500867, i32 noundef %422, i32 noundef %425, i8 noundef zeroext 0, i32 noundef %428, i32 noundef %430, i32 noundef %431)
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = load i32, ptr %32, align 4, !tbaa !9
  %434 = load ptr, ptr %13, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %434, i32 0, i32 30
  %436 = load i32, ptr %435, align 4, !tbaa !26
  %437 = load i32, ptr %32, align 4, !tbaa !9
  %438 = load i8, ptr %25, align 1, !tbaa !13
  %439 = zext i8 %438 to i32
  %440 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %432, i32 noundef 86032515, i32 noundef %433, i32 noundef %436, i8 noundef zeroext 0, i32 noundef %437, i32 noundef %439, i32 noundef %440)
  br label %442

441:                                              ; preds = %414
  br label %442

442:                                              ; preds = %441, %420
  br label %443

443:                                              ; preds = %442, %404
  br label %543

444:                                              ; preds = %225
  %445 = load ptr, ptr %14, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %445, i32 0, i32 10
  %447 = load i16, ptr %446, align 1, !tbaa !14
  %448 = zext i16 %447 to i32
  %449 = icmp eq i32 %448, 36
  br i1 %449, label %450, label %541

450:                                              ; preds = %444
  %451 = load ptr, ptr %11, align 8, !tbaa !5
  %452 = load i32, ptr %32, align 4, !tbaa !9
  %453 = load i32, ptr %32, align 4, !tbaa !9
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %454, i32 0, i32 30
  %456 = load i32, ptr %455, align 4, !tbaa !26
  %457 = load i8, ptr %24, align 1, !tbaa !13
  %458 = zext i8 %457 to i32
  %459 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %451, i32 noundef 73412611, i32 noundef %452, i32 noundef %453, i8 noundef zeroext 0, i32 noundef %456, i32 noundef %458, i32 noundef %459)
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  %461 = load ptr, ptr %13, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %461, i32 0, i32 30
  %463 = load i32, ptr %462, align 4, !tbaa !26
  %464 = load ptr, ptr %13, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %464, i32 0, i32 29
  %466 = load i32, ptr %465, align 4, !tbaa !19
  %467 = load ptr, ptr %13, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %467, i32 0, i32 31
  %469 = load i32, ptr %468, align 4, !tbaa !27
  %470 = load ptr, ptr %13, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %470, i32 0, i32 36
  %472 = load i32, ptr %471, align 4, !tbaa !28
  %473 = load ptr, ptr %13, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %473, i32 0, i32 40
  %475 = load i32, ptr %474, align 4, !tbaa !29
  %476 = load ptr, ptr %13, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %476, i32 0, i32 44
  %478 = load i32, ptr %477, align 4, !tbaa !30
  %479 = load ptr, ptr %13, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %479, i32 0, i32 51
  %481 = load i32, ptr %480, align 4, !tbaa !31
  %482 = load ptr, ptr %13, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %482, i32 0, i32 56
  %484 = load i32, ptr %483, align 4, !tbaa !32
  %485 = load ptr, ptr %13, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %485, i32 0, i32 60
  %487 = load i32, ptr %486, align 4, !tbaa !33
  %488 = load ptr, ptr %13, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %488, i32 0, i32 66
  %490 = load i32, ptr %489, align 4, !tbaa !34
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %491, i32 0, i32 52
  %493 = load i32, ptr %492, align 4, !tbaa !35
  %494 = load ptr, ptr %13, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %494, i32 0, i32 53
  %496 = load i32, ptr %495, align 4, !tbaa !36
  %497 = load i32, ptr %28, align 4, !tbaa !9
  %498 = load i8, ptr %24, align 1, !tbaa !13
  call void @libxsmm_generator_exp_ps_3dts_aarch64_sve(ptr noundef %460, i32 noundef %463, i32 noundef %466, i32 noundef %469, i32 noundef %472, i32 noundef %475, i32 noundef %478, i32 noundef %481, i32 noundef %484, i32 noundef %487, i32 noundef %490, i32 noundef %493, i32 noundef %496, i32 noundef %497, i8 noundef zeroext %498)
  %499 = load ptr, ptr %11, align 8, !tbaa !5
  %500 = load i32, ptr %32, align 4, !tbaa !9
  %501 = load i8, ptr %25, align 1, !tbaa !13
  %502 = zext i8 %501 to i32
  %503 = load i8, ptr %24, align 1, !tbaa !13
  %504 = zext i8 %503 to i32
  %505 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %499, i32 noundef 1695555730, i32 noundef %500, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %502, i32 noundef %504, i32 noundef %505)
  %506 = load ptr, ptr %11, align 8, !tbaa !5
  %507 = load ptr, ptr %13, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %507, i32 0, i32 30
  %509 = load i32, ptr %508, align 4, !tbaa !26
  %510 = load ptr, ptr %13, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %510, i32 0, i32 102
  %512 = load i32, ptr %511, align 4, !tbaa !25
  %513 = load ptr, ptr %13, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %513, i32 0, i32 30
  %515 = load i32, ptr %514, align 4, !tbaa !26
  %516 = load i8, ptr %24, align 1, !tbaa !13
  %517 = zext i8 %516 to i32
  %518 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %506, i32 noundef 1694500867, i32 noundef %509, i32 noundef %512, i8 noundef zeroext 0, i32 noundef %515, i32 noundef %517, i32 noundef %518)
  %519 = load ptr, ptr %11, align 8, !tbaa !5
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %520, i32 0, i32 30
  %522 = load i32, ptr %521, align 4, !tbaa !26
  %523 = load ptr, ptr %13, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %523, i32 0, i32 102
  %525 = load i32, ptr %524, align 4, !tbaa !25
  %526 = load ptr, ptr %13, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %526, i32 0, i32 30
  %528 = load i32, ptr %527, align 4, !tbaa !26
  %529 = load i8, ptr %24, align 1, !tbaa !13
  %530 = zext i8 %529 to i32
  %531 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %519, i32 noundef 1694499843, i32 noundef %522, i32 noundef %525, i8 noundef zeroext 0, i32 noundef %528, i32 noundef %530, i32 noundef %531)
  %532 = load ptr, ptr %11, align 8, !tbaa !5
  %533 = load i32, ptr %32, align 4, !tbaa !9
  %534 = load ptr, ptr %13, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %534, i32 0, i32 30
  %536 = load i32, ptr %535, align 4, !tbaa !26
  %537 = load i32, ptr %32, align 4, !tbaa !9
  %538 = load i8, ptr %25, align 1, !tbaa !13
  %539 = zext i8 %538 to i32
  %540 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %532, i32 noundef 86032515, i32 noundef %533, i32 noundef %536, i8 noundef zeroext 0, i32 noundef %537, i32 noundef %539, i32 noundef %540)
  br label %542

541:                                              ; preds = %444
  br label %542

542:                                              ; preds = %541, %450
  br label %543

543:                                              ; preds = %542, %443
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %544

544:                                              ; preds = %543
  %545 = load i32, ptr %21, align 4, !tbaa !9
  %546 = add i32 %545, 1
  store i32 %546, ptr %21, align 4, !tbaa !9
  br label %208, !llvm.loop !37

547:                                              ; preds = %208
  %548 = load ptr, ptr %14, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %548, i32 0, i32 9
  %550 = load i16, ptr %549, align 1, !tbaa !17
  %551 = zext i16 %550 to i32
  %552 = and i32 %551, 1
  %553 = icmp sgt i32 %552, 0
  br i1 %553, label %554, label %580

554:                                              ; preds = %547
  %555 = load ptr, ptr %14, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %555, i32 0, i32 10
  %557 = load i16, ptr %556, align 1, !tbaa !14
  %558 = zext i16 %557 to i32
  %559 = icmp ne i32 %558, 36
  br i1 %559, label %560, label %580

560:                                              ; preds = %554
  %561 = load ptr, ptr %11, align 8, !tbaa !5
  %562 = load ptr, ptr %12, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %562, i32 0, i32 9
  %564 = load i32, ptr %563, align 4, !tbaa !21
  %565 = load ptr, ptr %12, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %565, i32 0, i32 35
  %567 = load i32, ptr %566, align 4, !tbaa !23
  %568 = load ptr, ptr %12, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %568, i32 0, i32 9
  %570 = load i32, ptr %569, align 4, !tbaa !21
  %571 = load ptr, ptr %13, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %571, i32 0, i32 17
  %573 = load i32, ptr %572, align 4, !tbaa !39
  %574 = zext i32 %573 to i64
  %575 = load i32, ptr %31, align 4, !tbaa !9
  %576 = zext i32 %575 to i64
  %577 = mul nsw i64 %576, 8
  %578 = sub nsw i64 %574, %577
  %579 = sdiv i64 %578, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %561, i32 noundef 4096, i32 noundef %564, i32 noundef %567, i32 noundef %570, i64 noundef %579)
  br label %580

580:                                              ; preds = %560, %554, %547
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  br label %581

581:                                              ; preds = %580
  %582 = load i32, ptr %22, align 4, !tbaa !9
  %583 = add i32 %582, 1
  store i32 %583, ptr %22, align 4, !tbaa !9
  br label %203, !llvm.loop !40

584:                                              ; preds = %203
  %585 = load ptr, ptr %14, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %585, i32 0, i32 9
  %587 = load i16, ptr %586, align 1, !tbaa !17
  %588 = zext i16 %587 to i32
  %589 = and i32 %588, 1
  %590 = icmp sgt i32 %589, 0
  br i1 %590, label %591, label %616

591:                                              ; preds = %584
  %592 = load ptr, ptr %14, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %592, i32 0, i32 10
  %594 = load i16, ptr %593, align 1, !tbaa !14
  %595 = zext i16 %594 to i32
  %596 = icmp ne i32 %595, 36
  br i1 %596, label %597, label %616

597:                                              ; preds = %591
  %598 = load ptr, ptr %11, align 8, !tbaa !5
  %599 = load ptr, ptr %12, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %599, i32 0, i32 9
  %601 = load i32, ptr %600, align 4, !tbaa !21
  %602 = load ptr, ptr %12, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %602, i32 0, i32 35
  %604 = load i32, ptr %603, align 4, !tbaa !23
  %605 = load ptr, ptr %12, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %605, i32 0, i32 9
  %607 = load i32, ptr %606, align 4, !tbaa !21
  %608 = load i32, ptr %18, align 4, !tbaa !9
  %609 = zext i32 %608 to i64
  %610 = load ptr, ptr %13, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %610, i32 0, i32 17
  %612 = load i32, ptr %611, align 4, !tbaa !39
  %613 = zext i32 %612 to i64
  %614 = sdiv i64 %613, 8
  %615 = mul nsw i64 %609, %614
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %598, i32 noundef 4097, i32 noundef %601, i32 noundef %604, i32 noundef %607, i64 noundef %615)
  br label %616

616:                                              ; preds = %597, %591, %584
  store i32 0, ptr %30, align 4
  br label %617

617:                                              ; preds = %616, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #4
  %618 = load i32, ptr %30, align 4
  switch i32 %618, label %1143 [
    i32 0, label %619
  ]

619:                                              ; preds = %617
  br label %1142

620:                                              ; preds = %45
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  %621 = load ptr, ptr %13, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %621, i32 0, i32 2
  %623 = load i32, ptr %622, align 4, !tbaa !41
  %624 = icmp eq i32 %623, 4
  %625 = zext i1 %624 to i64
  %626 = select i1 %624, i32 5, i32 7
  store i32 %626, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %1106, %620
  %628 = load i32, ptr %22, align 4, !tbaa !9
  %629 = load i32, ptr %18, align 4, !tbaa !9
  %630 = icmp ult i32 %628, %629
  br i1 %630, label %631, label %1109

631:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 0, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %1069, %631
  %633 = load i32, ptr %21, align 4, !tbaa !9
  %634 = load i32, ptr %17, align 4, !tbaa !9
  %635 = icmp ult i32 %633, %634
  br i1 %635, label %636, label %1072

636:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %637 = load i32, ptr %16, align 4, !tbaa !9
  %638 = load i32, ptr %22, align 4, !tbaa !9
  %639 = load i32, ptr %17, align 4, !tbaa !9
  %640 = mul i32 %638, %639
  %641 = add i32 %637, %640
  %642 = load i32, ptr %21, align 4, !tbaa !9
  %643 = add i32 %641, %642
  store i32 %643, ptr %35, align 4, !tbaa !9
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %644, i32 0, i32 10
  %646 = load i16, ptr %645, align 1, !tbaa !14
  %647 = zext i16 %646 to i32
  %648 = icmp eq i32 %647, 34
  br i1 %648, label %655, label %649

649:                                              ; preds = %636
  %650 = load ptr, ptr %14, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %650, i32 0, i32 10
  %652 = load i16, ptr %651, align 1, !tbaa !14
  %653 = zext i16 %652 to i32
  %654 = icmp eq i32 %653, 5
  br i1 %654, label %655, label %982

655:                                              ; preds = %649, %636
  %656 = load ptr, ptr %14, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %656, i32 0, i32 10
  %658 = load i16, ptr %657, align 1, !tbaa !14
  %659 = zext i16 %658 to i32
  %660 = icmp eq i32 %659, 34
  br i1 %660, label %668, label %661

661:                                              ; preds = %655
  %662 = load ptr, ptr %14, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %662, i32 0, i32 9
  %664 = load i16, ptr %663, align 1, !tbaa !17
  %665 = zext i16 %664 to i32
  %666 = and i32 %665, 1
  %667 = icmp sgt i32 %666, 0
  br i1 %667, label %668, label %674

668:                                              ; preds = %661, %655
  %669 = load ptr, ptr %11, align 8, !tbaa !5
  %670 = load i32, ptr %35, align 4, !tbaa !9
  %671 = load ptr, ptr %13, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %671, i32 0, i32 29
  %673 = load i32, ptr %672, align 4, !tbaa !19
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %669, i32 noundef 245417994, i32 noundef %670, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %673, i32 noundef 5)
  br label %674

674:                                              ; preds = %668, %661
  %675 = load ptr, ptr %14, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %675, i32 0, i32 9
  %677 = load i16, ptr %676, align 1, !tbaa !17
  %678 = zext i16 %677 to i32
  %679 = and i32 %678, 1
  %680 = icmp sgt i32 %679, 0
  br i1 %680, label %681, label %943

681:                                              ; preds = %674
  %682 = load ptr, ptr %11, align 8, !tbaa !5
  %683 = load i32, ptr %21, align 4, !tbaa !9
  %684 = load i32, ptr %17, align 4, !tbaa !9
  %685 = load ptr, ptr %13, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %685, i32 0, i32 100
  %687 = load i32, ptr %686, align 4, !tbaa !42
  %688 = trunc i32 %687 to i8
  %689 = zext i8 %688 to i32
  %690 = icmp eq i32 0, %689
  br i1 %690, label %698, label %691

691:                                              ; preds = %681
  %692 = load ptr, ptr %13, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %692, i32 0, i32 100
  %694 = load i32, ptr %693, align 4, !tbaa !42
  %695 = trunc i32 %694 to i8
  %696 = zext i8 %695 to i32
  %697 = icmp slt i32 0, %696
  br i1 %697, label %698, label %722

698:                                              ; preds = %691, %681
  %699 = load ptr, ptr %13, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %699, i32 0, i32 100
  %701 = load i32, ptr %700, align 4, !tbaa !42
  %702 = zext i32 %701 to i64
  %703 = mul i64 1, %702
  %704 = icmp ult i64 %703, 255
  br i1 %704, label %705, label %711

705:                                              ; preds = %698
  %706 = load ptr, ptr %13, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %706, i32 0, i32 100
  %708 = load i32, ptr %707, align 4, !tbaa !42
  %709 = zext i32 %708 to i64
  %710 = mul i64 1, %709
  br label %712

711:                                              ; preds = %698
  br label %712

712:                                              ; preds = %711, %705
  %713 = phi i64 [ %710, %705 ], [ 255, %711 ]
  %714 = icmp ule i64 %713, 255
  br i1 %714, label %715, label %722

715:                                              ; preds = %712
  %716 = load ptr, ptr %13, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %716, i32 0, i32 100
  %718 = load i32, ptr %717, align 4, !tbaa !42
  %719 = uitofp i32 %718 to double
  %720 = fcmp ole double 0.000000e+00, %719
  br i1 %720, label %721, label %722

721:                                              ; preds = %715
  br label %723

722:                                              ; preds = %715, %712, %691
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str, i32 noundef 1549, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

723:                                              ; preds = %721
  %724 = load ptr, ptr %13, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %724, i32 0, i32 100
  %726 = load i32, ptr %725, align 4, !tbaa !42
  %727 = trunc i32 %726 to i8
  %728 = load ptr, ptr %13, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %728, i32 0, i32 101
  %730 = load i32, ptr %729, align 4, !tbaa !43
  %731 = trunc i32 %730 to i8
  %732 = zext i8 %731 to i32
  %733 = icmp eq i32 0, %732
  br i1 %733, label %741, label %734

734:                                              ; preds = %723
  %735 = load ptr, ptr %13, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %735, i32 0, i32 101
  %737 = load i32, ptr %736, align 4, !tbaa !43
  %738 = trunc i32 %737 to i8
  %739 = zext i8 %738 to i32
  %740 = icmp slt i32 0, %739
  br i1 %740, label %741, label %765

741:                                              ; preds = %734, %723
  %742 = load ptr, ptr %13, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %742, i32 0, i32 101
  %744 = load i32, ptr %743, align 4, !tbaa !43
  %745 = zext i32 %744 to i64
  %746 = mul i64 1, %745
  %747 = icmp ult i64 %746, 255
  br i1 %747, label %748, label %754

748:                                              ; preds = %741
  %749 = load ptr, ptr %13, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %749, i32 0, i32 101
  %751 = load i32, ptr %750, align 4, !tbaa !43
  %752 = zext i32 %751 to i64
  %753 = mul i64 1, %752
  br label %755

754:                                              ; preds = %741
  br label %755

755:                                              ; preds = %754, %748
  %756 = phi i64 [ %753, %748 ], [ 255, %754 ]
  %757 = icmp ule i64 %756, 255
  br i1 %757, label %758, label %765

758:                                              ; preds = %755
  %759 = load ptr, ptr %13, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %759, i32 0, i32 101
  %761 = load i32, ptr %760, align 4, !tbaa !43
  %762 = uitofp i32 %761 to double
  %763 = fcmp ole double 0.000000e+00, %762
  br i1 %763, label %764, label %765

764:                                              ; preds = %758
  br label %766

765:                                              ; preds = %758, %755, %734
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 1550, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

766:                                              ; preds = %764
  %767 = load ptr, ptr %13, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %767, i32 0, i32 101
  %769 = load i32, ptr %768, align 4, !tbaa !43
  %770 = trunc i32 %769 to i8
  %771 = load ptr, ptr %13, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %771, i32 0, i32 29
  %773 = load i32, ptr %772, align 4, !tbaa !19
  %774 = trunc i32 %773 to i8
  %775 = zext i8 %774 to i32
  %776 = icmp eq i32 0, %775
  br i1 %776, label %784, label %777

777:                                              ; preds = %766
  %778 = load ptr, ptr %13, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %778, i32 0, i32 29
  %780 = load i32, ptr %779, align 4, !tbaa !19
  %781 = trunc i32 %780 to i8
  %782 = zext i8 %781 to i32
  %783 = icmp slt i32 0, %782
  br i1 %783, label %784, label %808

784:                                              ; preds = %777, %766
  %785 = load ptr, ptr %13, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %785, i32 0, i32 29
  %787 = load i32, ptr %786, align 4, !tbaa !19
  %788 = zext i32 %787 to i64
  %789 = mul i64 1, %788
  %790 = icmp ult i64 %789, 255
  br i1 %790, label %791, label %797

791:                                              ; preds = %784
  %792 = load ptr, ptr %13, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %792, i32 0, i32 29
  %794 = load i32, ptr %793, align 4, !tbaa !19
  %795 = zext i32 %794 to i64
  %796 = mul i64 1, %795
  br label %798

797:                                              ; preds = %784
  br label %798

798:                                              ; preds = %797, %791
  %799 = phi i64 [ %796, %791 ], [ 255, %797 ]
  %800 = icmp ule i64 %799, 255
  br i1 %800, label %801, label %808

801:                                              ; preds = %798
  %802 = load ptr, ptr %13, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %802, i32 0, i32 29
  %804 = load i32, ptr %803, align 4, !tbaa !19
  %805 = uitofp i32 %804 to double
  %806 = fcmp ole double 0.000000e+00, %805
  br i1 %806, label %807, label %808

807:                                              ; preds = %801
  br label %809

808:                                              ; preds = %801, %798, %777
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 1551, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

809:                                              ; preds = %807
  %810 = load ptr, ptr %13, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %810, i32 0, i32 29
  %812 = load i32, ptr %811, align 4, !tbaa !19
  %813 = trunc i32 %812 to i8
  %814 = load ptr, ptr %13, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %814, i32 0, i32 30
  %816 = load i32, ptr %815, align 4, !tbaa !26
  %817 = trunc i32 %816 to i8
  %818 = zext i8 %817 to i32
  %819 = icmp eq i32 0, %818
  br i1 %819, label %827, label %820

820:                                              ; preds = %809
  %821 = load ptr, ptr %13, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %821, i32 0, i32 30
  %823 = load i32, ptr %822, align 4, !tbaa !26
  %824 = trunc i32 %823 to i8
  %825 = zext i8 %824 to i32
  %826 = icmp slt i32 0, %825
  br i1 %826, label %827, label %851

827:                                              ; preds = %820, %809
  %828 = load ptr, ptr %13, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %828, i32 0, i32 30
  %830 = load i32, ptr %829, align 4, !tbaa !26
  %831 = zext i32 %830 to i64
  %832 = mul i64 1, %831
  %833 = icmp ult i64 %832, 255
  br i1 %833, label %834, label %840

834:                                              ; preds = %827
  %835 = load ptr, ptr %13, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %835, i32 0, i32 30
  %837 = load i32, ptr %836, align 4, !tbaa !26
  %838 = zext i32 %837 to i64
  %839 = mul i64 1, %838
  br label %841

840:                                              ; preds = %827
  br label %841

841:                                              ; preds = %840, %834
  %842 = phi i64 [ %839, %834 ], [ 255, %840 ]
  %843 = icmp ule i64 %842, 255
  br i1 %843, label %844, label %851

844:                                              ; preds = %841
  %845 = load ptr, ptr %13, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %845, i32 0, i32 30
  %847 = load i32, ptr %846, align 4, !tbaa !26
  %848 = uitofp i32 %847 to double
  %849 = fcmp ole double 0.000000e+00, %848
  br i1 %849, label %850, label %851

850:                                              ; preds = %844
  br label %852

851:                                              ; preds = %844, %841, %820
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str, i32 noundef 1552, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

852:                                              ; preds = %850
  %853 = load ptr, ptr %13, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %853, i32 0, i32 30
  %855 = load i32, ptr %854, align 4, !tbaa !26
  %856 = trunc i32 %855 to i8
  %857 = load ptr, ptr %13, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %857, i32 0, i32 31
  %859 = load i32, ptr %858, align 4, !tbaa !27
  %860 = trunc i32 %859 to i8
  %861 = zext i8 %860 to i32
  %862 = icmp eq i32 0, %861
  br i1 %862, label %870, label %863

863:                                              ; preds = %852
  %864 = load ptr, ptr %13, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %864, i32 0, i32 31
  %866 = load i32, ptr %865, align 4, !tbaa !27
  %867 = trunc i32 %866 to i8
  %868 = zext i8 %867 to i32
  %869 = icmp slt i32 0, %868
  br i1 %869, label %870, label %894

870:                                              ; preds = %863, %852
  %871 = load ptr, ptr %13, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %871, i32 0, i32 31
  %873 = load i32, ptr %872, align 4, !tbaa !27
  %874 = zext i32 %873 to i64
  %875 = mul i64 1, %874
  %876 = icmp ult i64 %875, 255
  br i1 %876, label %877, label %883

877:                                              ; preds = %870
  %878 = load ptr, ptr %13, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %878, i32 0, i32 31
  %880 = load i32, ptr %879, align 4, !tbaa !27
  %881 = zext i32 %880 to i64
  %882 = mul i64 1, %881
  br label %884

883:                                              ; preds = %870
  br label %884

884:                                              ; preds = %883, %877
  %885 = phi i64 [ %882, %877 ], [ 255, %883 ]
  %886 = icmp ule i64 %885, 255
  br i1 %886, label %887, label %894

887:                                              ; preds = %884
  %888 = load ptr, ptr %13, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %888, i32 0, i32 31
  %890 = load i32, ptr %889, align 4, !tbaa !27
  %891 = uitofp i32 %890 to double
  %892 = fcmp ole double 0.000000e+00, %891
  br i1 %892, label %893, label %894

893:                                              ; preds = %887
  br label %895

894:                                              ; preds = %887, %884, %863
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str, i32 noundef 1553, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

895:                                              ; preds = %893
  %896 = load ptr, ptr %13, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %896, i32 0, i32 31
  %898 = load i32, ptr %897, align 4, !tbaa !27
  %899 = trunc i32 %898 to i8
  %900 = load ptr, ptr %12, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %900, i32 0, i32 9
  %902 = load i32, ptr %901, align 4, !tbaa !21
  %903 = trunc i32 %902 to i8
  %904 = zext i8 %903 to i32
  %905 = icmp eq i32 0, %904
  br i1 %905, label %913, label %906

906:                                              ; preds = %895
  %907 = load ptr, ptr %12, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %907, i32 0, i32 9
  %909 = load i32, ptr %908, align 4, !tbaa !21
  %910 = trunc i32 %909 to i8
  %911 = zext i8 %910 to i32
  %912 = icmp slt i32 0, %911
  br i1 %912, label %913, label %937

913:                                              ; preds = %906, %895
  %914 = load ptr, ptr %12, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %914, i32 0, i32 9
  %916 = load i32, ptr %915, align 4, !tbaa !21
  %917 = zext i32 %916 to i64
  %918 = mul i64 1, %917
  %919 = icmp ult i64 %918, 255
  br i1 %919, label %920, label %926

920:                                              ; preds = %913
  %921 = load ptr, ptr %12, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %921, i32 0, i32 9
  %923 = load i32, ptr %922, align 4, !tbaa !21
  %924 = zext i32 %923 to i64
  %925 = mul i64 1, %924
  br label %927

926:                                              ; preds = %913
  br label %927

927:                                              ; preds = %926, %920
  %928 = phi i64 [ %925, %920 ], [ 255, %926 ]
  %929 = icmp ule i64 %928, 255
  br i1 %929, label %930, label %937

930:                                              ; preds = %927
  %931 = load ptr, ptr %12, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %931, i32 0, i32 9
  %933 = load i32, ptr %932, align 4, !tbaa !21
  %934 = uitofp i32 %933 to double
  %935 = fcmp ole double 0.000000e+00, %934
  br i1 %935, label %936, label %937

936:                                              ; preds = %930
  br label %938

937:                                              ; preds = %930, %927, %906
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str, i32 noundef 1554, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

938:                                              ; preds = %936
  %939 = load ptr, ptr %12, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %939, i32 0, i32 9
  %941 = load i32, ptr %940, align 4, !tbaa !21
  %942 = trunc i32 %941 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef %682, i32 noundef %683, i32 noundef %684, i8 noundef zeroext %727, i8 noundef zeroext %770, i8 noundef zeroext %813, i8 noundef zeroext %856, i8 noundef zeroext %899, i8 noundef zeroext %942, ptr noundef %34)
  br label %943

943:                                              ; preds = %938, %674
  %944 = load ptr, ptr %14, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %944, i32 0, i32 10
  %946 = load i16, ptr %945, align 1, !tbaa !14
  %947 = zext i16 %946 to i32
  %948 = icmp eq i32 %947, 5
  br i1 %948, label %949, label %956

949:                                              ; preds = %943
  %950 = load ptr, ptr %11, align 8, !tbaa !5
  %951 = load i32, ptr %35, align 4, !tbaa !9
  %952 = load ptr, ptr %13, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %952, i32 0, i32 32
  %954 = load i32, ptr %953, align 4, !tbaa !24
  %955 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %950, i32 noundef 237040651, i32 noundef %951, i32 noundef %954, i8 noundef zeroext 0, i32 noundef %955, i32 noundef 5)
  br label %981

956:                                              ; preds = %943
  %957 = load ptr, ptr %14, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %957, i32 0, i32 10
  %959 = load i16, ptr %958, align 1, !tbaa !14
  %960 = zext i16 %959 to i32
  %961 = icmp eq i32 %960, 34
  br i1 %961, label %962, label %979

962:                                              ; preds = %956
  %963 = load ptr, ptr %11, align 8, !tbaa !5
  %964 = load i32, ptr %35, align 4, !tbaa !9
  %965 = load ptr, ptr %13, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %965, i32 0, i32 102
  %967 = load i32, ptr %966, align 4, !tbaa !25
  %968 = load ptr, ptr %13, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %968, i32 0, i32 30
  %970 = load i32, ptr %969, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %963, i32 noundef 773905419, i32 noundef %964, i32 noundef %967, i8 noundef zeroext 0, i32 noundef %970, i32 noundef 5)
  %971 = load ptr, ptr %11, align 8, !tbaa !5
  %972 = load ptr, ptr %13, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %972, i32 0, i32 30
  %974 = load i32, ptr %973, align 4, !tbaa !26
  %975 = load ptr, ptr %13, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %975, i32 0, i32 29
  %977 = load i32, ptr %976, align 4, !tbaa !19
  %978 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %971, i32 noundef 786439187, i32 noundef %974, i32 noundef %977, i8 noundef zeroext 0, i32 noundef %978, i32 noundef 1)
  br label %980

979:                                              ; preds = %956
  br label %980

980:                                              ; preds = %979, %962
  br label %981

981:                                              ; preds = %980, %949
  br label %1068

982:                                              ; preds = %649
  %983 = load ptr, ptr %14, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %983, i32 0, i32 10
  %985 = load i16, ptr %984, align 1, !tbaa !14
  %986 = zext i16 %985 to i32
  %987 = icmp eq i32 %986, 36
  br i1 %987, label %988, label %1066

988:                                              ; preds = %982
  %989 = load ptr, ptr %11, align 8, !tbaa !5
  %990 = load i32, ptr %35, align 4, !tbaa !9
  %991 = load i32, ptr %35, align 4, !tbaa !9
  %992 = load ptr, ptr %13, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %992, i32 0, i32 30
  %994 = load i32, ptr %993, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %989, i32 noundef 245373971, i32 noundef %990, i32 noundef %991, i8 noundef zeroext 0, i32 noundef %994, i32 noundef 1)
  %995 = load ptr, ptr %11, align 8, !tbaa !5
  %996 = load ptr, ptr %13, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %996, i32 0, i32 30
  %998 = load i32, ptr %997, align 4, !tbaa !26
  %999 = load ptr, ptr %13, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %999, i32 0, i32 29
  %1001 = load i32, ptr %1000, align 4, !tbaa !19
  %1002 = load ptr, ptr %13, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1002, i32 0, i32 31
  %1004 = load i32, ptr %1003, align 4, !tbaa !27
  %1005 = load ptr, ptr %13, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1005, i32 0, i32 36
  %1007 = load i32, ptr %1006, align 4, !tbaa !28
  %1008 = load ptr, ptr %13, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1008, i32 0, i32 40
  %1010 = load i32, ptr %1009, align 4, !tbaa !29
  %1011 = load ptr, ptr %13, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1011, i32 0, i32 44
  %1013 = load i32, ptr %1012, align 4, !tbaa !30
  %1014 = load ptr, ptr %13, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1014, i32 0, i32 51
  %1016 = load i32, ptr %1015, align 4, !tbaa !31
  %1017 = load ptr, ptr %13, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1017, i32 0, i32 56
  %1019 = load i32, ptr %1018, align 4, !tbaa !32
  %1020 = load ptr, ptr %13, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1020, i32 0, i32 60
  %1022 = load i32, ptr %1021, align 4, !tbaa !33
  %1023 = load ptr, ptr %13, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1023, i32 0, i32 66
  %1025 = load i32, ptr %1024, align 4, !tbaa !34
  %1026 = load ptr, ptr %13, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1026, i32 0, i32 52
  %1028 = load i32, ptr %1027, align 4, !tbaa !35
  %1029 = load ptr, ptr %13, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1029, i32 0, i32 53
  %1031 = load i32, ptr %1030, align 4, !tbaa !36
  %1032 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_generator_exp_ps_3dts_aarch64_asimd(ptr noundef %995, i32 noundef %998, i32 noundef %1001, i32 noundef %1004, i32 noundef %1007, i32 noundef %1010, i32 noundef %1013, i32 noundef %1016, i32 noundef %1019, i32 noundef %1022, i32 noundef %1025, i32 noundef %1028, i32 noundef %1031, i32 noundef %1032)
  %1033 = load ptr, ptr %11, align 8, !tbaa !5
  %1034 = load i32, ptr %35, align 4, !tbaa !9
  %1035 = load ptr, ptr %13, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1035, i32 0, i32 29
  %1037 = load i32, ptr %1036, align 4, !tbaa !19
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1033, i32 noundef 245417994, i32 noundef %1034, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %1037, i32 noundef 5)
  %1038 = load ptr, ptr %11, align 8, !tbaa !5
  %1039 = load ptr, ptr %13, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1039, i32 0, i32 30
  %1041 = load i32, ptr %1040, align 4, !tbaa !26
  %1042 = load ptr, ptr %13, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1042, i32 0, i32 102
  %1044 = load i32, ptr %1043, align 4, !tbaa !25
  %1045 = load ptr, ptr %13, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1045, i32 0, i32 30
  %1047 = load i32, ptr %1046, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1038, i32 noundef 773905419, i32 noundef %1041, i32 noundef %1044, i8 noundef zeroext 0, i32 noundef %1047, i32 noundef 1)
  %1048 = load ptr, ptr %11, align 8, !tbaa !5
  %1049 = load ptr, ptr %13, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1049, i32 0, i32 30
  %1051 = load i32, ptr %1050, align 4, !tbaa !26
  %1052 = load ptr, ptr %13, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1052, i32 0, i32 102
  %1054 = load i32, ptr %1053, align 4, !tbaa !25
  %1055 = load ptr, ptr %13, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1055, i32 0, i32 30
  %1057 = load i32, ptr %1056, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1048, i32 noundef 245421067, i32 noundef %1051, i32 noundef %1054, i8 noundef zeroext 0, i32 noundef %1057, i32 noundef 1)
  %1058 = load ptr, ptr %11, align 8, !tbaa !5
  %1059 = load ptr, ptr %13, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1059, i32 0, i32 30
  %1061 = load i32, ptr %1060, align 4, !tbaa !26
  %1062 = load ptr, ptr %13, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1062, i32 0, i32 29
  %1064 = load i32, ptr %1063, align 4, !tbaa !19
  %1065 = load i32, ptr %35, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1058, i32 noundef 786439187, i32 noundef %1061, i32 noundef %1064, i8 noundef zeroext 0, i32 noundef %1065, i32 noundef 1)
  br label %1067

1066:                                             ; preds = %982
  br label %1067

1067:                                             ; preds = %1066, %988
  br label %1068

1068:                                             ; preds = %1067, %981
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %21, align 4, !tbaa !9
  %1071 = add i32 %1070, 1
  store i32 %1071, ptr %21, align 4, !tbaa !9
  br label %632, !llvm.loop !44

1072:                                             ; preds = %632
  %1073 = load ptr, ptr %14, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1073, i32 0, i32 9
  %1075 = load i16, ptr %1074, align 1, !tbaa !17
  %1076 = zext i16 %1075 to i32
  %1077 = and i32 %1076, 1
  %1078 = icmp sgt i32 %1077, 0
  br i1 %1078, label %1079, label %1105

1079:                                             ; preds = %1072
  %1080 = load ptr, ptr %14, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1080, i32 0, i32 10
  %1082 = load i16, ptr %1081, align 1, !tbaa !14
  %1083 = zext i16 %1082 to i32
  %1084 = icmp ne i32 %1083, 36
  br i1 %1084, label %1085, label %1105

1085:                                             ; preds = %1079
  %1086 = load ptr, ptr %11, align 8, !tbaa !5
  %1087 = load ptr, ptr %12, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1087, i32 0, i32 9
  %1089 = load i32, ptr %1088, align 4, !tbaa !21
  %1090 = load ptr, ptr %12, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1090, i32 0, i32 35
  %1092 = load i32, ptr %1091, align 4, !tbaa !23
  %1093 = load ptr, ptr %12, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1093, i32 0, i32 9
  %1095 = load i32, ptr %1094, align 4, !tbaa !21
  %1096 = load ptr, ptr %13, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1096, i32 0, i32 17
  %1098 = load i32, ptr %1097, align 4, !tbaa !39
  %1099 = zext i32 %1098 to i64
  %1100 = load i32, ptr %34, align 4, !tbaa !9
  %1101 = zext i32 %1100 to i64
  %1102 = mul nsw i64 %1101, 8
  %1103 = sub nsw i64 %1099, %1102
  %1104 = sdiv i64 %1103, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1086, i32 noundef 4096, i32 noundef %1089, i32 noundef %1092, i32 noundef %1095, i64 noundef %1104)
  br label %1105

1105:                                             ; preds = %1085, %1079, %1072
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load i32, ptr %22, align 4, !tbaa !9
  %1108 = add i32 %1107, 1
  store i32 %1108, ptr %22, align 4, !tbaa !9
  br label %627, !llvm.loop !45

1109:                                             ; preds = %627
  %1110 = load ptr, ptr %14, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1110, i32 0, i32 9
  %1112 = load i16, ptr %1111, align 1, !tbaa !17
  %1113 = zext i16 %1112 to i32
  %1114 = and i32 %1113, 1
  %1115 = icmp sgt i32 %1114, 0
  br i1 %1115, label %1116, label %1141

1116:                                             ; preds = %1109
  %1117 = load ptr, ptr %14, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1117, i32 0, i32 10
  %1119 = load i16, ptr %1118, align 1, !tbaa !14
  %1120 = zext i16 %1119 to i32
  %1121 = icmp ne i32 %1120, 36
  br i1 %1121, label %1122, label %1141

1122:                                             ; preds = %1116
  %1123 = load ptr, ptr %11, align 8, !tbaa !5
  %1124 = load ptr, ptr %12, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1124, i32 0, i32 9
  %1126 = load i32, ptr %1125, align 4, !tbaa !21
  %1127 = load ptr, ptr %12, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1127, i32 0, i32 35
  %1129 = load i32, ptr %1128, align 4, !tbaa !23
  %1130 = load ptr, ptr %12, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1130, i32 0, i32 9
  %1132 = load i32, ptr %1131, align 4, !tbaa !21
  %1133 = load i32, ptr %18, align 4, !tbaa !9
  %1134 = zext i32 %1133 to i64
  %1135 = load ptr, ptr %13, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1135, i32 0, i32 17
  %1137 = load i32, ptr %1136, align 4, !tbaa !39
  %1138 = zext i32 %1137 to i64
  %1139 = sdiv i64 %1138, 8
  %1140 = mul nsw i64 %1134, %1139
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1123, i32 noundef 4097, i32 noundef %1126, i32 noundef %1129, i32 noundef %1132, i64 noundef %1140)
  br label %1141

1141:                                             ; preds = %1122, %1116, %1109
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %1142

1142:                                             ; preds = %1141, %619
  store i32 0, ptr %30, align 4
  br label %1143

1143:                                             ; preds = %1142, %617
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  %1144 = load i32, ptr %30, align 4
  switch i32 %1144, label %1146 [
    i32 0, label %1145
    i32 1, label %1145
  ]

1145:                                             ; preds = %1143, %1143
  ret void

1146:                                             ; preds = %1143
  unreachable
}

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

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

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !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, !16, i64 29}
!15 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 27, !16, i64 29, !7, i64 31}
!16 = !{!"short", !7, i64 0}
!17 = !{!15, !16, i64 27}
!18 = !{!15, !10, i64 0}
!19 = !{!20, !10, i64 116}
!20 = !{!"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}
!21 = !{!22, !10, i64 36}
!22 = !{!"libxsmm_mateltwise_gp_reg_mapping_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}
!23 = !{!22, !10, i64 140}
!24 = !{!20, !10, i64 128}
!25 = !{!20, !10, i64 408}
!26 = !{!20, !10, i64 120}
!27 = !{!20, !10, i64 124}
!28 = !{!20, !10, i64 144}
!29 = !{!20, !10, i64 160}
!30 = !{!20, !10, i64 176}
!31 = !{!20, !10, i64 204}
!32 = !{!20, !10, i64 224}
!33 = !{!20, !10, i64 240}
!34 = !{!20, !10, i64 264}
!35 = !{!20, !10, i64 208}
!36 = !{!20, !10, i64 212}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!20, !10, i64 68}
!40 = distinct !{!40, !38}
!41 = !{!20, !10, i64 8}
!42 = !{!20, !10, i64 400}
!43 = !{!20, !10, i64 404}
!44 = distinct !{!44, !38}
!45 = distinct !{!45, !38}


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

@.str = external hidden unnamed_addr constant [97 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu = external hidden unnamed_addr constant [276 x i8], align 1
@__func__.libxsmm_compute_unary_aarch64_2d_reg_block_relu = external hidden unnamed_addr constant [48 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

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

; 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_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) local_unnamed_addr #1

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

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) local_unnamed_addr #1

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

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

declare void @libxsmm_generator_exp_ps_3dts_aarch64_sve(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, i8 noundef zeroext) local_unnamed_addr #1

declare void @libxsmm_generator_exp_ps_3dts_aarch64_asimd(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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_unary_aarch64_2d_reg_block_relu(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #3 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = getelementptr inbounds i8, ptr %0, i64 28
  %14 = load i32, ptr %13, align 4, !tbaa !5
  %15 = add i32 %14, -2201
  %spec.select = icmp ult i32 %15, 799
  br i1 %spec.select, label %16, label %177

16:                                               ; preds = %10
  %17 = trunc i32 %9 to i8
  %18 = and i32 %9, 255
  %19 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %61, label %21

21:                                               ; preds = %16
  %22 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %23 = icmp eq i32 %22, 1
  br i1 %23, label %61, label %24

24:                                               ; preds = %21
  %25 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %26 = icmp eq i32 %25, 2
  br i1 %26, label %61, label %27

27:                                               ; preds = %24
  %28 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %29 = icmp eq i32 %28, 3
  br i1 %29, label %61, label %30

30:                                               ; preds = %27
  %31 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %32 = icmp eq i32 %31, 4
  br i1 %32, label %61, label %33

33:                                               ; preds = %30
  %34 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %35 = icmp eq i32 %34, 5
  br i1 %35, label %61, label %36

36:                                               ; preds = %33
  %37 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %38 = icmp eq i32 %37, 6
  br i1 %38, label %61, label %39

39:                                               ; preds = %36
  %40 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %41 = icmp eq i32 %40, 7
  br i1 %41, label %61, label %42

42:                                               ; preds = %39
  %43 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %44 = icmp eq i32 %43, 8
  br i1 %44, label %61, label %45

45:                                               ; preds = %42
  %46 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %47 = icmp eq i32 %46, 9
  br i1 %47, label %61, label %48

48:                                               ; preds = %45
  %49 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %50 = icmp eq i32 %49, 10
  br i1 %50, label %61, label %51

51:                                               ; preds = %48
  %52 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %53 = icmp eq i32 %52, 11
  br i1 %53, label %61, label %54

54:                                               ; preds = %51
  %55 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %56 = icmp eq i32 %55, 12
  br i1 %56, label %61, label %57

57:                                               ; preds = %54
  %58 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %59 = icmp eq i32 %58, 13
  br i1 %59, label %61, label %60

60:                                               ; preds = %57
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 1428, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_compute_unary_aarch64_2d_reg_block_relu) #5
  unreachable

61:                                               ; preds = %21, %27, %33, %39, %45, %51, %57, %54, %48, %42, %36, %30, %24, %16
  %62 = phi i8 [ 8, %16 ], [ 4, %21 ], [ 2, %24 ], [ 2, %27 ], [ 1, %30 ], [ 1, %33 ], [ 8, %36 ], [ 8, %39 ], [ 4, %42 ], [ 4, %45 ], [ 2, %48 ], [ 2, %51 ], [ 1, %54 ], [ 1, %57 ]
  %63 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %62) #4
  %64 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %.not306 = icmp eq i32 %64, 2
  br i1 %.not306, label %143, label %.preheader

.preheader:                                       ; preds = %61
  %.not322 = icmp eq i32 %7, 0
  br i1 %.not322, label %._crit_edge317, label %.lr.ph316

.lr.ph316:                                        ; preds = %.preheader
  %.not323 = icmp eq i32 %6, 0
  %65 = getelementptr inbounds i8, ptr %3, i64 29
  %66 = getelementptr inbounds i8, ptr %3, i64 27
  %67 = getelementptr inbounds i8, ptr %2, i64 116
  %68 = getelementptr inbounds i8, ptr %1, i64 36
  %69 = getelementptr inbounds i8, ptr %1, i64 140
  %70 = getelementptr inbounds i8, ptr %2, i64 408
  %71 = getelementptr inbounds i8, ptr %2, i64 120
  %72 = getelementptr inbounds i8, ptr %2, i64 128
  %73 = getelementptr inbounds i8, ptr %2, i64 124
  %74 = getelementptr inbounds i8, ptr %2, i64 144
  %75 = getelementptr inbounds i8, ptr %2, i64 160
  %76 = getelementptr inbounds i8, ptr %2, i64 176
  %77 = getelementptr inbounds i8, ptr %2, i64 204
  %78 = getelementptr inbounds i8, ptr %2, i64 224
  %79 = getelementptr inbounds i8, ptr %2, i64 240
  %80 = getelementptr inbounds i8, ptr %2, i64 264
  %81 = getelementptr inbounds i8, ptr %2, i64 208
  %82 = getelementptr inbounds i8, ptr %2, i64 212
  %83 = getelementptr inbounds i8, ptr %2, i64 68
  br i1 %.not323, label %.lr.ph316.split, label %.lr.ph.us318

.lr.ph.us318:                                     ; preds = %.lr.ph316, %98
  %.0274315.us = phi i32 [ %99, %98 ], [ 0, %.lr.ph316 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #4
  store i32 0, ptr %11, align 4, !tbaa !11
  %84 = mul i32 %.0274315.us, %6
  %85 = add i32 %84, %5
  br label %100

86:                                               ; preds = %._crit_edge.us319
  %87 = load i16, ptr %65, align 1, !tbaa !12
  %.not303.us = icmp eq i16 %87, 36
  br i1 %.not303.us, label %98, label %88

88:                                               ; preds = %86
  %89 = load i32, ptr %68, align 4, !tbaa !15
  %90 = load i32, ptr %69, align 4, !tbaa !17
  %91 = load i32, ptr %83, align 4, !tbaa !18
  %92 = zext i32 %91 to i64
  %93 = load i32, ptr %11, align 4, !tbaa !11
  %94 = zext i32 %93 to i64
  %95 = shl nuw nsw i64 %94, 3
  %96 = sub nsw i64 %92, %95
  %97 = sdiv i64 %96, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %89, i32 noundef %90, i32 noundef %89, i64 noundef %97) #4
  br label %98

98:                                               ; preds = %88, %86, %._crit_edge.us319
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  %99 = add nuw i32 %.0274315.us, 1
  %exitcond329.not = icmp eq i32 %99, %7
  br i1 %exitcond329.not, label %._crit_edge317, label %.lr.ph.us318, !llvm.loop !20

100:                                              ; preds = %.lr.ph.us318, %139
  %.0313.us = phi i32 [ 0, %.lr.ph.us318 ], [ %140, %139 ]
  %101 = add i32 %85, %.0313.us
  %102 = load i16, ptr %65, align 1, !tbaa !12
  switch i16 %102, label %139 [
    i16 36, label %120
    i16 34, label %106
    i16 5, label %103
  ]

103:                                              ; preds = %100
  %104 = load i16, ptr %66, align 1, !tbaa !22
  %105 = and i16 %104, 1
  %.not304.us = icmp eq i16 %105, 0
  br i1 %.not304.us, label %.thread.thread, label %106

106:                                              ; preds = %100, %103
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %101, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 7, i32 noundef %18, i32 noundef %63) #4
  %.pre331 = load i16, ptr %66, align 1, !tbaa !22
  %.pre332 = and i16 %.pre331, 1
  %.not305.us = icmp eq i16 %.pre332, 0
  br i1 %.not305.us, label %.thread, label %107

107:                                              ; preds = %106
  %108 = load i32, ptr %3, align 1, !tbaa !23
  %109 = load i32, ptr %67, align 4, !tbaa !24
  %110 = trunc i32 %109 to i8
  %111 = load i32, ptr %68, align 4, !tbaa !15
  %112 = trunc i32 %111 to i8
  %113 = load i32, ptr %69, align 4, !tbaa !17
  %114 = trunc i32 %113 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %108, i32 noundef %.0313.us, i32 noundef %6, i8 noundef zeroext %110, i8 noundef zeroext %112, i8 noundef zeroext 7, i8 noundef zeroext 6, i8 noundef zeroext 5, i8 noundef zeroext %114, ptr noundef nonnull %11)
  br label %.thread

.thread:                                          ; preds = %107, %106
  %.pr = load i16, ptr %65, align 1, !tbaa !12
  switch i16 %.pr, label %139 [
    i16 5, label %.thread.thread
    i16 34, label %115
  ]

115:                                              ; preds = %.thread
  %116 = load i32, ptr %70, align 4, !tbaa !25
  %117 = load i32, ptr %71, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %101, i32 noundef %116, i8 noundef zeroext 0, i32 noundef %117, i32 noundef %18, i32 noundef %63) #4
  %118 = load i32, ptr %71, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86032515, i32 noundef %101, i32 noundef %118, i8 noundef zeroext 0, i32 noundef %101, i32 noundef 7, i32 noundef %63) #4
  br label %139

.thread.thread:                                   ; preds = %103, %.thread
  %119 = load i32, ptr %72, align 4, !tbaa !27
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694924962, i32 noundef %101, i32 noundef %119, i8 noundef zeroext 0, i32 noundef %101, i32 noundef %18, i32 noundef %63) #4
  br label %139

120:                                              ; preds = %100
  %121 = load i32, ptr %71, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %101, i32 noundef %101, i8 noundef zeroext 0, i32 noundef %121, i32 noundef %18, i32 noundef %63) #4
  %122 = load i32, ptr %71, align 4, !tbaa !26
  %123 = load i32, ptr %67, align 4, !tbaa !24
  %124 = load i32, ptr %73, align 4, !tbaa !28
  %125 = load i32, ptr %74, align 4, !tbaa !29
  %126 = load i32, ptr %75, align 4, !tbaa !30
  %127 = load i32, ptr %76, align 4, !tbaa !31
  %128 = load i32, ptr %77, align 4, !tbaa !32
  %129 = load i32, ptr %78, align 4, !tbaa !33
  %130 = load i32, ptr %79, align 4, !tbaa !34
  %131 = load i32, ptr %80, align 4, !tbaa !35
  %132 = load i32, ptr %81, align 4, !tbaa !36
  %133 = load i32, ptr %82, align 4, !tbaa !37
  call void @libxsmm_generator_exp_ps_3dts_aarch64_sve(ptr noundef %0, i32 noundef %122, i32 noundef %123, i32 noundef %124, i32 noundef %125, i32 noundef %126, i32 noundef %127, i32 noundef %128, i32 noundef %129, i32 noundef %130, i32 noundef %131, i32 noundef %132, i32 noundef %133, i32 noundef %63, i8 noundef zeroext %17) #4
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1695555730, i32 noundef %101, i32 noundef 127, i8 noundef zeroext 0, i32 noundef 7, i32 noundef %18, i32 noundef %63) #4
  %134 = load i32, ptr %71, align 4, !tbaa !26
  %135 = load i32, ptr %70, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694500867, i32 noundef %134, i32 noundef %135, i8 noundef zeroext 0, i32 noundef %134, i32 noundef %18, i32 noundef %63) #4
  %136 = load i32, ptr %71, align 4, !tbaa !26
  %137 = load i32, ptr %70, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 1694499843, i32 noundef %136, i32 noundef %137, i8 noundef zeroext 0, i32 noundef %136, i32 noundef %18, i32 noundef %63) #4
  %138 = load i32, ptr %71, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 86032515, i32 noundef %101, i32 noundef %138, i8 noundef zeroext 0, i32 noundef %101, i32 noundef 7, i32 noundef %63) #4
  br label %139

139:                                              ; preds = %120, %.thread.thread, %115, %.thread, %100
  %140 = add nuw i32 %.0313.us, 1
  %exitcond328.not = icmp eq i32 %140, %6
  br i1 %exitcond328.not, label %._crit_edge.us319, label %100, !llvm.loop !38

._crit_edge.us319:                                ; preds = %139
  %141 = load i16, ptr %66, align 1, !tbaa !22
  %142 = and i16 %141, 1
  %.not302.us = icmp eq i16 %142, 0
  br i1 %.not302.us, label %98, label %86

143:                                              ; preds = %61
  %144 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !11
  %145 = icmp ugt i32 %144, 1
  %146 = load i32, ptr @libxsmm_verbosity, align 4
  %147 = select i1 %145, i32 %146, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_compute_unary_aarch64_2d_reg_block_relu, ptr noundef nonnull @.str, i32 noundef 1432, i32 noundef %147) #4
  br label %300

.lr.ph316.split:                                  ; preds = %.lr.ph316, %158
  %.0274315 = phi i32 [ %159, %158 ], [ 0, %.lr.ph316 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #4
  %148 = load i16, ptr %66, align 1, !tbaa !22
  %149 = and i16 %148, 1
  %.not302 = icmp eq i16 %149, 0
  br i1 %.not302, label %158, label %150

150:                                              ; preds = %.lr.ph316.split
  %151 = load i16, ptr %65, align 1, !tbaa !12
  %.not303 = icmp eq i16 %151, 36
  br i1 %.not303, label %158, label %152

152:                                              ; preds = %150
  %153 = load i32, ptr %68, align 4, !tbaa !15
  %154 = load i32, ptr %69, align 4, !tbaa !17
  %155 = load i32, ptr %83, align 4, !tbaa !18
  %156 = lshr i32 %155, 3
  %157 = zext nneg i32 %156 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %153, i32 noundef %154, i32 noundef %153, i64 noundef %157) #4
  br label %158

158:                                              ; preds = %152, %150, %.lr.ph316.split
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  %159 = add nuw i32 %.0274315, 1
  %exitcond330.not = icmp eq i32 %159, %7
  br i1 %exitcond330.not, label %._crit_edge317, label %.lr.ph316.split, !llvm.loop !20

._crit_edge317:                                   ; preds = %98, %158, %.preheader
  %160 = getelementptr inbounds i8, ptr %3, i64 27
  %161 = load i16, ptr %160, align 1, !tbaa !22
  %162 = and i16 %161, 1
  %.not300 = icmp eq i16 %162, 0
  br i1 %.not300, label %300, label %163

163:                                              ; preds = %._crit_edge317
  %164 = getelementptr inbounds i8, ptr %3, i64 29
  %165 = load i16, ptr %164, align 1, !tbaa !12
  %.not301 = icmp eq i16 %165, 36
  br i1 %.not301, label %300, label %166

166:                                              ; preds = %163
  %167 = getelementptr inbounds i8, ptr %1, i64 36
  %168 = load i32, ptr %167, align 4, !tbaa !15
  %169 = getelementptr inbounds i8, ptr %1, i64 140
  %170 = load i32, ptr %169, align 4, !tbaa !17
  %171 = zext i32 %7 to i64
  %172 = getelementptr inbounds i8, ptr %2, i64 68
  %173 = load i32, ptr %172, align 4, !tbaa !18
  %174 = lshr i32 %173, 3
  %175 = zext nneg i32 %174 to i64
  %176 = mul nuw nsw i64 %175, %171
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %168, i32 noundef %170, i32 noundef %168, i64 noundef %176) #4
  br label %300

177:                                              ; preds = %10
  %178 = getelementptr inbounds i8, ptr %2, i64 8
  %179 = load i32, ptr %178, align 4, !tbaa !39
  %180 = icmp eq i32 %179, 4
  %181 = select i1 %180, i32 5, i32 7
  %.not320 = icmp eq i32 %7, 0
  br i1 %.not320, label %._crit_edge312, label %.lr.ph311

.lr.ph311:                                        ; preds = %177
  %.not321 = icmp eq i32 %6, 0
  %182 = getelementptr inbounds i8, ptr %3, i64 29
  %183 = getelementptr inbounds i8, ptr %3, i64 27
  %184 = getelementptr inbounds i8, ptr %2, i64 116
  %185 = getelementptr inbounds i8, ptr %2, i64 400
  %186 = getelementptr inbounds i8, ptr %2, i64 404
  %187 = getelementptr inbounds i8, ptr %2, i64 120
  %188 = getelementptr inbounds i8, ptr %2, i64 124
  %189 = getelementptr inbounds i8, ptr %1, i64 36
  %190 = getelementptr inbounds i8, ptr %2, i64 408
  %191 = getelementptr inbounds i8, ptr %2, i64 128
  %192 = getelementptr inbounds i8, ptr %2, i64 144
  %193 = getelementptr inbounds i8, ptr %2, i64 160
  %194 = getelementptr inbounds i8, ptr %2, i64 176
  %195 = getelementptr inbounds i8, ptr %2, i64 204
  %196 = getelementptr inbounds i8, ptr %2, i64 224
  %197 = getelementptr inbounds i8, ptr %2, i64 240
  %198 = getelementptr inbounds i8, ptr %2, i64 264
  %199 = getelementptr inbounds i8, ptr %2, i64 208
  %200 = getelementptr inbounds i8, ptr %2, i64 212
  %201 = getelementptr inbounds i8, ptr %1, i64 140
  %202 = getelementptr inbounds i8, ptr %2, i64 68
  br i1 %.not321, label %.lr.ph311.split, label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph311, %217
  %.1275309.us = phi i32 [ %218, %217 ], [ 0, %.lr.ph311 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #4
  store i32 0, ptr %12, align 4, !tbaa !11
  %203 = mul i32 %.1275309.us, %6
  %204 = add i32 %203, %5
  br label %219

205:                                              ; preds = %._crit_edge.us
  %206 = load i16, ptr %182, align 1, !tbaa !12
  %.not297.us = icmp eq i16 %206, 36
  br i1 %.not297.us, label %217, label %207

207:                                              ; preds = %205
  %208 = load i32, ptr %189, align 4, !tbaa !15
  %209 = load i32, ptr %201, align 4, !tbaa !17
  %210 = load i32, ptr %202, align 4, !tbaa !18
  %211 = zext i32 %210 to i64
  %212 = load i32, ptr %12, align 4, !tbaa !11
  %213 = zext i32 %212 to i64
  %214 = shl nuw nsw i64 %213, 3
  %215 = sub nsw i64 %211, %214
  %216 = sdiv i64 %215, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %208, i32 noundef %209, i32 noundef %208, i64 noundef %216) #4
  br label %217

217:                                              ; preds = %207, %205, %._crit_edge.us
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  %218 = add nuw i32 %.1275309.us, 1
  %exitcond326.not = icmp eq i32 %218, %7
  br i1 %exitcond326.not, label %._crit_edge312, label %.lr.ph.us, !llvm.loop !40

219:                                              ; preds = %.lr.ph.us, %267
  %.1307.us = phi i32 [ 0, %.lr.ph.us ], [ %268, %267 ]
  %220 = add i32 %204, %.1307.us
  %221 = load i16, ptr %182, align 1, !tbaa !12
  switch i16 %221, label %267 [
    i16 36, label %246
    i16 34, label %225
    i16 5, label %222
  ]

222:                                              ; preds = %219
  %223 = load i16, ptr %183, align 1, !tbaa !22
  %224 = and i16 %223, 1
  %.not298.us = icmp eq i16 %224, 0
  br i1 %.not298.us, label %.thread337.thread, label %225

225:                                              ; preds = %219, %222
  %226 = load i32, ptr %184, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245417994, i32 noundef %220, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %226, i32 noundef 5) #4
  %.pre = load i16, ptr %183, align 1, !tbaa !22
  %.pre333 = and i16 %.pre, 1
  %.not299.us = icmp eq i16 %.pre333, 0
  br i1 %.not299.us, label %.thread337, label %227

227:                                              ; preds = %225
  %228 = load i32, ptr %185, align 4, !tbaa !41
  %229 = trunc i32 %228 to i8
  %230 = load i32, ptr %186, align 4, !tbaa !42
  %231 = trunc i32 %230 to i8
  %232 = load i32, ptr %184, align 4, !tbaa !24
  %233 = trunc i32 %232 to i8
  %234 = load i32, ptr %187, align 4, !tbaa !26
  %235 = trunc i32 %234 to i8
  %236 = load i32, ptr %188, align 4, !tbaa !28
  %237 = trunc i32 %236 to i8
  %238 = load i32, ptr %189, align 4, !tbaa !15
  %239 = trunc i32 %238 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef %0, i32 noundef %.1307.us, i32 noundef %6, i8 noundef zeroext %229, i8 noundef zeroext %231, i8 noundef zeroext %233, i8 noundef zeroext %235, i8 noundef zeroext %237, i8 noundef zeroext %239, ptr noundef nonnull %12)
  br label %.thread337

.thread337:                                       ; preds = %227, %225
  %.pr340 = load i16, ptr %182, align 1, !tbaa !12
  switch i16 %.pr340, label %267 [
    i16 5, label %.thread337.thread
    i16 34, label %240
  ]

240:                                              ; preds = %.thread337
  %241 = load i32, ptr %190, align 4, !tbaa !25
  %242 = load i32, ptr %187, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773905419, i32 noundef %220, i32 noundef %241, i8 noundef zeroext 0, i32 noundef %242, i32 noundef 5) #4
  %243 = load i32, ptr %187, align 4, !tbaa !26
  %244 = load i32, ptr %184, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 786439187, i32 noundef %243, i32 noundef %244, i8 noundef zeroext 0, i32 noundef %220, i32 noundef 1) #4
  br label %267

.thread337.thread:                                ; preds = %222, %.thread337
  %245 = load i32, ptr %191, align 4, !tbaa !27
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 237040651, i32 noundef %220, i32 noundef %245, i8 noundef zeroext 0, i32 noundef %220, i32 noundef 5) #4
  br label %267

246:                                              ; preds = %219
  %247 = load i32, ptr %187, align 4, !tbaa !26
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef %220, i32 noundef %220, i8 noundef zeroext 0, i32 noundef %247, i32 noundef 1) #4
  %248 = load i32, ptr %187, align 4, !tbaa !26
  %249 = load i32, ptr %184, align 4, !tbaa !24
  %250 = load i32, ptr %188, align 4, !tbaa !28
  %251 = load i32, ptr %192, align 4, !tbaa !29
  %252 = load i32, ptr %193, align 4, !tbaa !30
  %253 = load i32, ptr %194, align 4, !tbaa !31
  %254 = load i32, ptr %195, align 4, !tbaa !32
  %255 = load i32, ptr %196, align 4, !tbaa !33
  %256 = load i32, ptr %197, align 4, !tbaa !34
  %257 = load i32, ptr %198, align 4, !tbaa !35
  %258 = load i32, ptr %199, align 4, !tbaa !36
  %259 = load i32, ptr %200, align 4, !tbaa !37
  call void @libxsmm_generator_exp_ps_3dts_aarch64_asimd(ptr noundef %0, i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, i32 noundef %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i32 noundef %257, i32 noundef %258, i32 noundef %259, i32 noundef %181) #4
  %260 = load i32, ptr %184, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245417994, i32 noundef %220, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %260, i32 noundef 5) #4
  %261 = load i32, ptr %187, align 4, !tbaa !26
  %262 = load i32, ptr %190, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773905419, i32 noundef %261, i32 noundef %262, i8 noundef zeroext 0, i32 noundef %261, i32 noundef 1) #4
  %263 = load i32, ptr %187, align 4, !tbaa !26
  %264 = load i32, ptr %190, align 4, !tbaa !25
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245421067, i32 noundef %263, i32 noundef %264, i8 noundef zeroext 0, i32 noundef %263, i32 noundef 1) #4
  %265 = load i32, ptr %187, align 4, !tbaa !26
  %266 = load i32, ptr %184, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 786439187, i32 noundef %265, i32 noundef %266, i8 noundef zeroext 0, i32 noundef %220, i32 noundef 1) #4
  br label %267

267:                                              ; preds = %246, %.thread337.thread, %240, %.thread337, %219
  %268 = add nuw i32 %.1307.us, 1
  %exitcond.not = icmp eq i32 %268, %6
  br i1 %exitcond.not, label %._crit_edge.us, label %219, !llvm.loop !43

._crit_edge.us:                                   ; preds = %267
  %269 = load i16, ptr %183, align 1, !tbaa !22
  %270 = and i16 %269, 1
  %.not296.us = icmp eq i16 %270, 0
  br i1 %.not296.us, label %217, label %205

.lr.ph311.split:                                  ; preds = %.lr.ph311, %281
  %.1275309 = phi i32 [ %282, %281 ], [ 0, %.lr.ph311 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #4
  %271 = load i16, ptr %183, align 1, !tbaa !22
  %272 = and i16 %271, 1
  %.not296 = icmp eq i16 %272, 0
  br i1 %.not296, label %281, label %273

273:                                              ; preds = %.lr.ph311.split
  %274 = load i16, ptr %182, align 1, !tbaa !12
  %.not297 = icmp eq i16 %274, 36
  br i1 %.not297, label %281, label %275

275:                                              ; preds = %273
  %276 = load i32, ptr %189, align 4, !tbaa !15
  %277 = load i32, ptr %201, align 4, !tbaa !17
  %278 = load i32, ptr %202, align 4, !tbaa !18
  %279 = lshr i32 %278, 3
  %280 = zext nneg i32 %279 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %276, i32 noundef %277, i32 noundef %276, i64 noundef %280) #4
  br label %281

281:                                              ; preds = %275, %273, %.lr.ph311.split
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  %282 = add nuw i32 %.1275309, 1
  %exitcond327.not = icmp eq i32 %282, %7
  br i1 %exitcond327.not, label %._crit_edge312, label %.lr.ph311.split, !llvm.loop !40

._crit_edge312:                                   ; preds = %217, %281, %177
  %283 = getelementptr inbounds i8, ptr %3, i64 27
  %284 = load i16, ptr %283, align 1, !tbaa !22
  %285 = and i16 %284, 1
  %.not = icmp eq i16 %285, 0
  br i1 %.not, label %300, label %286

286:                                              ; preds = %._crit_edge312
  %287 = getelementptr inbounds i8, ptr %3, i64 29
  %288 = load i16, ptr %287, align 1, !tbaa !12
  %.not295 = icmp eq i16 %288, 36
  br i1 %.not295, label %300, label %289

289:                                              ; preds = %286
  %290 = getelementptr inbounds i8, ptr %1, i64 36
  %291 = load i32, ptr %290, align 4, !tbaa !15
  %292 = getelementptr inbounds i8, ptr %1, i64 140
  %293 = load i32, ptr %292, align 4, !tbaa !17
  %294 = zext i32 %7 to i64
  %295 = getelementptr inbounds i8, ptr %2, i64 68
  %296 = load i32, ptr %295, align 4, !tbaa !18
  %297 = lshr i32 %296, 3
  %298 = zext nneg i32 %297 to i64
  %299 = mul nuw nsw i64 %298, %294
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %291, i32 noundef %293, i32 noundef %291, i64 noundef %299) #4
  br label %300

300:                                              ; preds = %143, %166, %163, %._crit_edge317, %289, %286, %._crit_edge312
  ret void
}

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

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

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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !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 = !{!10, !10, i64 0}
!12 = !{!13, !14, i64 29}
!13 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !14, i64 27, !14, i64 29, !8, i64 31}
!14 = !{!"short", !8, i64 0}
!15 = !{!16, !10, i64 36}
!16 = !{!"libxsmm_mateltwise_gp_reg_mapping_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}
!17 = !{!16, !10, i64 140}
!18 = !{!19, !10, i64 68}
!19 = !{!"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}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!13, !14, i64 27}
!23 = !{!13, !10, i64 0}
!24 = !{!19, !10, i64 116}
!25 = !{!19, !10, i64 408}
!26 = !{!19, !10, i64 120}
!27 = !{!19, !10, i64 128}
!28 = !{!19, !10, i64 124}
!29 = !{!19, !10, i64 144}
!30 = !{!19, !10, i64 160}
!31 = !{!19, !10, i64 176}
!32 = !{!19, !10, i64 204}
!33 = !{!19, !10, i64 224}
!34 = !{!19, !10, i64 240}
!35 = !{!19, !10, i64 264}
!36 = !{!19, !10, i64 208}
!37 = !{!19, !10, i64 212}
!38 = distinct !{!38, !21}
!39 = !{!19, !10, i64 8}
!40 = distinct !{!40, !21}
!41 = !{!19, !10, i64 400}
!42 = !{!19, !10, i64 404}
!43 = distinct !{!43, !21}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass