; 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_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 }
%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 }

@.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
@__func__.libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg = external hidden unnamed_addr constant [84 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 i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7) #2 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %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 i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store i32 %4, ptr %13, align 4, !tbaa !9
  store i32 %5, ptr %14, align 4, !tbaa !9
  store i32 %6, ptr %15, align 4, !tbaa !9
  store i32 %7, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  %29 = load i32, ptr %13, align 4, !tbaa !9
  %30 = load ptr, ptr %10, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %30, i32 0, i32 1
  %32 = load i32, ptr %31, align 4, !tbaa !11
  %33 = icmp eq i32 %29, %32
  br i1 %33, label %66, label %34

34:                                               ; preds = %8
  %35 = load i32, ptr %13, align 4, !tbaa !9
  %36 = load ptr, ptr %10, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %36, i32 0, i32 2
  %38 = load i32, ptr %37, align 4, !tbaa !13
  %39 = icmp eq i32 %35, %38
  br i1 %39, label %40, label %52

40:                                               ; preds = %34
  %41 = load ptr, ptr %12, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %41, i32 0, i32 11
  %43 = load i8, ptr %42, align 1, !tbaa !14
  %44 = zext i8 %43 to i32
  %45 = icmp eq i32 %44, 2
  br i1 %45, label %66, label %46

46:                                               ; preds = %40
  %47 = load ptr, ptr %12, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %47, i32 0, i32 11
  %49 = load i8, ptr %48, align 1, !tbaa !14
  %50 = zext i8 %49 to i32
  %51 = icmp eq i32 %50, 3
  br i1 %51, label %66, label %52

52:                                               ; preds = %46, %34
  %53 = load i32, ptr %13, align 4, !tbaa !9
  %54 = load ptr, ptr %10, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %54, i32 0, i32 3
  %56 = load i32, ptr %55, align 4, !tbaa !17
  %57 = icmp eq i32 %53, %56
  br i1 %57, label %58, label %64

58:                                               ; preds = %52
  %59 = load ptr, ptr %12, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %59, i32 0, i32 11
  %61 = load i8, ptr %60, align 1, !tbaa !14
  %62 = zext i8 %61 to i32
  %63 = icmp eq i32 %62, 3
  br label %64

64:                                               ; preds = %58, %52
  %65 = phi i1 [ false, %52 ], [ %63, %58 ]
  br label %66

66:                                               ; preds = %64, %46, %40, %8
  %67 = phi i1 [ true, %46 ], [ true, %40 ], [ true, %8 ], [ %65, %64 ]
  %68 = zext i1 %67 to i64
  %69 = select i1 %67, i32 1, i32 0
  store i32 %69, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  %70 = load i32, ptr %13, align 4, !tbaa !9
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %71, i32 0, i32 6
  %73 = load i32, ptr %72, align 4, !tbaa !18
  %74 = icmp eq i32 %70, %73
  br i1 %74, label %95, label %75

75:                                               ; preds = %66
  %76 = load ptr, ptr %12, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %76, i32 0, i32 11
  %78 = load i8, ptr %77, align 1, !tbaa !14
  %79 = zext i8 %78 to i32
  %80 = icmp eq i32 %79, 1
  br i1 %80, label %81, label %93

81:                                               ; preds = %75
  %82 = load ptr, ptr %12, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %82, i32 0, i32 10
  %84 = load i16, ptr %83, align 1, !tbaa !19
  %85 = zext i16 %84 to i32
  %86 = icmp eq i32 %85, 63
  br i1 %86, label %87, label %93

87:                                               ; preds = %81
  %88 = load i32, ptr %13, align 4, !tbaa !9
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %89, i32 0, i32 7
  %91 = load i32, ptr %90, align 4, !tbaa !20
  %92 = icmp eq i32 %88, %91
  br label %93

93:                                               ; preds = %87, %81, %75
  %94 = phi i1 [ false, %81 ], [ false, %75 ], [ %92, %87 ]
  br label %95

95:                                               ; preds = %93, %66
  %96 = phi i1 [ true, %66 ], [ %94, %93 ]
  %97 = zext i1 %96 to i64
  %98 = select i1 %96, i32 1, i32 0
  store i32 %98, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  %99 = load i32, ptr %13, align 4, !tbaa !9
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %100, i32 0, i32 1
  %102 = load i32, ptr %101, align 4, !tbaa !11
  %103 = icmp eq i32 %99, %102
  br i1 %103, label %104, label %117

104:                                              ; preds = %95
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %105, i32 0, i32 11
  %107 = load i8, ptr %106, align 1, !tbaa !14
  %108 = zext i8 %107 to i32
  %109 = icmp eq i32 %108, 1
  br i1 %109, label %110, label %117

110:                                              ; preds = %104
  %111 = load ptr, ptr %12, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %111, i32 0, i32 9
  %113 = load i16, ptr %112, align 1, !tbaa !21
  %114 = zext i16 %113 to i32
  %115 = and i32 %114, 2
  %116 = icmp sgt i32 %115, 0
  br i1 %116, label %214, label %117

117:                                              ; preds = %110, %104, %95
  %118 = load i32, ptr %13, align 4, !tbaa !9
  %119 = load ptr, ptr %10, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %119, i32 0, i32 1
  %121 = load i32, ptr %120, align 4, !tbaa !11
  %122 = icmp eq i32 %118, %121
  br i1 %122, label %123, label %136

123:                                              ; preds = %117
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %124, i32 0, i32 11
  %126 = load i8, ptr %125, align 1, !tbaa !14
  %127 = zext i8 %126 to i32
  %128 = icmp eq i32 %127, 2
  br i1 %128, label %129, label %136

129:                                              ; preds = %123
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %130, i32 0, i32 9
  %132 = load i16, ptr %131, align 1, !tbaa !21
  %133 = zext i16 %132 to i32
  %134 = and i32 %133, 1
  %135 = icmp sgt i32 %134, 0
  br i1 %135, label %214, label %136

136:                                              ; preds = %129, %123, %117
  %137 = load i32, ptr %13, align 4, !tbaa !9
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %138, i32 0, i32 1
  %140 = load i32, ptr %139, align 4, !tbaa !11
  %141 = icmp eq i32 %137, %140
  br i1 %141, label %142, label %155

142:                                              ; preds = %136
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %143, i32 0, i32 11
  %145 = load i8, ptr %144, align 1, !tbaa !14
  %146 = zext i8 %145 to i32
  %147 = icmp eq i32 %146, 3
  br i1 %147, label %148, label %155

148:                                              ; preds = %142
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %149, i32 0, i32 9
  %151 = load i16, ptr %150, align 1, !tbaa !21
  %152 = zext i16 %151 to i32
  %153 = and i32 %152, 1
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %214, label %155

155:                                              ; preds = %148, %142, %136
  %156 = load i32, ptr %13, align 4, !tbaa !9
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %157, i32 0, i32 2
  %159 = load i32, ptr %158, align 4, !tbaa !13
  %160 = icmp eq i32 %156, %159
  br i1 %160, label %161, label %174

161:                                              ; preds = %155
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %162, i32 0, i32 11
  %164 = load i8, ptr %163, align 1, !tbaa !14
  %165 = zext i8 %164 to i32
  %166 = icmp eq i32 %165, 2
  br i1 %166, label %167, label %174

167:                                              ; preds = %161
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %168, i32 0, i32 9
  %170 = load i16, ptr %169, align 1, !tbaa !21
  %171 = zext i16 %170 to i32
  %172 = and i32 %171, 2
  %173 = icmp sgt i32 %172, 0
  br i1 %173, label %214, label %174

174:                                              ; preds = %167, %161, %155
  %175 = load i32, ptr %13, align 4, !tbaa !9
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %176, i32 0, i32 2
  %178 = load i32, ptr %177, align 4, !tbaa !13
  %179 = icmp eq i32 %175, %178
  br i1 %179, label %180, label %193

180:                                              ; preds = %174
  %181 = load ptr, ptr %12, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %181, i32 0, i32 11
  %183 = load i8, ptr %182, align 1, !tbaa !14
  %184 = zext i8 %183 to i32
  %185 = icmp eq i32 %184, 3
  br i1 %185, label %186, label %193

186:                                              ; preds = %180
  %187 = load ptr, ptr %12, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %187, i32 0, i32 9
  %189 = load i16, ptr %188, align 1, !tbaa !21
  %190 = zext i16 %189 to i32
  %191 = and i32 %190, 2
  %192 = icmp sgt i32 %191, 0
  br i1 %192, label %214, label %193

193:                                              ; preds = %186, %180, %174
  %194 = load i32, ptr %13, align 4, !tbaa !9
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %195, i32 0, i32 3
  %197 = load i32, ptr %196, align 4, !tbaa !17
  %198 = icmp eq i32 %194, %197
  br i1 %198, label %199, label %212

199:                                              ; preds = %193
  %200 = load ptr, ptr %12, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %200, i32 0, i32 11
  %202 = load i8, ptr %201, align 1, !tbaa !14
  %203 = zext i8 %202 to i32
  %204 = icmp eq i32 %203, 3
  br i1 %204, label %205, label %212

205:                                              ; preds = %199
  %206 = load ptr, ptr %12, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %206, i32 0, i32 9
  %208 = load i16, ptr %207, align 1, !tbaa !21
  %209 = zext i16 %208 to i32
  %210 = and i32 %209, 4
  %211 = icmp sgt i32 %210, 0
  br label %212

212:                                              ; preds = %205, %199, %193
  %213 = phi i1 [ false, %199 ], [ false, %193 ], [ %211, %205 ]
  br label %214

214:                                              ; preds = %212, %186, %167, %148, %129, %110
  %215 = phi i1 [ true, %186 ], [ true, %167 ], [ true, %148 ], [ true, %129 ], [ true, %110 ], [ %213, %212 ]
  %216 = zext i1 %215 to i64
  %217 = select i1 %215, i32 1, i32 0
  store i32 %217, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  %218 = load i32, ptr %13, align 4, !tbaa !9
  %219 = load ptr, ptr %10, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %219, i32 0, i32 1
  %221 = load i32, ptr %220, align 4, !tbaa !11
  %222 = icmp eq i32 %218, %221
  br i1 %222, label %223, label %236

223:                                              ; preds = %214
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %224, i32 0, i32 11
  %226 = load i8, ptr %225, align 1, !tbaa !14
  %227 = zext i8 %226 to i32
  %228 = icmp eq i32 %227, 1
  br i1 %228, label %229, label %236

229:                                              ; preds = %223
  %230 = load ptr, ptr %12, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %230, i32 0, i32 9
  %232 = load i16, ptr %231, align 1, !tbaa !21
  %233 = zext i16 %232 to i32
  %234 = and i32 %233, 4
  %235 = icmp sgt i32 %234, 0
  br i1 %235, label %333, label %236

236:                                              ; preds = %229, %223, %214
  %237 = load i32, ptr %13, align 4, !tbaa !9
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %238, i32 0, i32 1
  %240 = load i32, ptr %239, align 4, !tbaa !11
  %241 = icmp eq i32 %237, %240
  br i1 %241, label %242, label %255

242:                                              ; preds = %236
  %243 = load ptr, ptr %12, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %243, i32 0, i32 11
  %245 = load i8, ptr %244, align 1, !tbaa !14
  %246 = zext i8 %245 to i32
  %247 = icmp eq i32 %246, 2
  br i1 %247, label %248, label %255

248:                                              ; preds = %242
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %249, i32 0, i32 9
  %251 = load i16, ptr %250, align 1, !tbaa !21
  %252 = zext i16 %251 to i32
  %253 = and i32 %252, 4
  %254 = icmp sgt i32 %253, 0
  br i1 %254, label %333, label %255

255:                                              ; preds = %248, %242, %236
  %256 = load i32, ptr %13, align 4, !tbaa !9
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %257, i32 0, i32 1
  %259 = load i32, ptr %258, align 4, !tbaa !11
  %260 = icmp eq i32 %256, %259
  br i1 %260, label %261, label %274

261:                                              ; preds = %255
  %262 = load ptr, ptr %12, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %262, i32 0, i32 11
  %264 = load i8, ptr %263, align 1, !tbaa !14
  %265 = zext i8 %264 to i32
  %266 = icmp eq i32 %265, 3
  br i1 %266, label %267, label %274

267:                                              ; preds = %261
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %268, i32 0, i32 9
  %270 = load i16, ptr %269, align 1, !tbaa !21
  %271 = zext i16 %270 to i32
  %272 = and i32 %271, 8
  %273 = icmp sgt i32 %272, 0
  br i1 %273, label %333, label %274

274:                                              ; preds = %267, %261, %255
  %275 = load i32, ptr %13, align 4, !tbaa !9
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %276, i32 0, i32 2
  %278 = load i32, ptr %277, align 4, !tbaa !13
  %279 = icmp eq i32 %275, %278
  br i1 %279, label %280, label %293

280:                                              ; preds = %274
  %281 = load ptr, ptr %12, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %281, i32 0, i32 11
  %283 = load i8, ptr %282, align 1, !tbaa !14
  %284 = zext i8 %283 to i32
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %286, label %293

286:                                              ; preds = %280
  %287 = load ptr, ptr %12, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %287, i32 0, i32 9
  %289 = load i16, ptr %288, align 1, !tbaa !21
  %290 = zext i16 %289 to i32
  %291 = and i32 %290, 8
  %292 = icmp sgt i32 %291, 0
  br i1 %292, label %333, label %293

293:                                              ; preds = %286, %280, %274
  %294 = load i32, ptr %13, align 4, !tbaa !9
  %295 = load ptr, ptr %10, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %295, i32 0, i32 2
  %297 = load i32, ptr %296, align 4, !tbaa !13
  %298 = icmp eq i32 %294, %297
  br i1 %298, label %299, label %312

299:                                              ; preds = %293
  %300 = load ptr, ptr %12, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %300, i32 0, i32 11
  %302 = load i8, ptr %301, align 1, !tbaa !14
  %303 = zext i8 %302 to i32
  %304 = icmp eq i32 %303, 3
  br i1 %304, label %305, label %312

305:                                              ; preds = %299
  %306 = load ptr, ptr %12, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %306, i32 0, i32 9
  %308 = load i16, ptr %307, align 1, !tbaa !21
  %309 = zext i16 %308 to i32
  %310 = and i32 %309, 16
  %311 = icmp sgt i32 %310, 0
  br i1 %311, label %333, label %312

312:                                              ; preds = %305, %299, %293
  %313 = load i32, ptr %13, align 4, !tbaa !9
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 4, !tbaa !17
  %317 = icmp eq i32 %313, %316
  br i1 %317, label %318, label %331

318:                                              ; preds = %312
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %319, i32 0, i32 11
  %321 = load i8, ptr %320, align 1, !tbaa !14
  %322 = zext i8 %321 to i32
  %323 = icmp eq i32 %322, 3
  br i1 %323, label %324, label %331

324:                                              ; preds = %318
  %325 = load ptr, ptr %12, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %325, i32 0, i32 9
  %327 = load i16, ptr %326, align 1, !tbaa !21
  %328 = zext i16 %327 to i32
  %329 = and i32 %328, 32
  %330 = icmp sgt i32 %329, 0
  br label %331

331:                                              ; preds = %324, %318, %312
  %332 = phi i1 [ false, %318 ], [ false, %312 ], [ %330, %324 ]
  br label %333

333:                                              ; preds = %331, %305, %286, %267, %248, %229
  %334 = phi i1 [ true, %305 ], [ true, %286 ], [ true, %267 ], [ true, %248 ], [ true, %229 ], [ %332, %331 ]
  %335 = zext i1 %334 to i64
  %336 = select i1 %334, i32 1, i32 0
  store i32 %336, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  %337 = load i32, ptr %13, align 4, !tbaa !9
  %338 = load ptr, ptr %10, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %338, i32 0, i32 1
  %340 = load i32, ptr %339, align 4, !tbaa !11
  %341 = icmp eq i32 %337, %340
  br i1 %341, label %342, label %355

342:                                              ; preds = %333
  %343 = load ptr, ptr %12, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %343, i32 0, i32 11
  %345 = load i8, ptr %344, align 1, !tbaa !14
  %346 = zext i8 %345 to i32
  %347 = icmp eq i32 %346, 1
  br i1 %347, label %348, label %355

348:                                              ; preds = %342
  %349 = load ptr, ptr %12, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %349, i32 0, i32 9
  %351 = load i16, ptr %350, align 1, !tbaa !21
  %352 = zext i16 %351 to i32
  %353 = and i32 %352, 8
  %354 = icmp sgt i32 %353, 0
  br i1 %354, label %452, label %355

355:                                              ; preds = %348, %342, %333
  %356 = load i32, ptr %13, align 4, !tbaa !9
  %357 = load ptr, ptr %10, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %357, i32 0, i32 1
  %359 = load i32, ptr %358, align 4, !tbaa !11
  %360 = icmp eq i32 %356, %359
  br i1 %360, label %361, label %374

361:                                              ; preds = %355
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %362, i32 0, i32 11
  %364 = load i8, ptr %363, align 1, !tbaa !14
  %365 = zext i8 %364 to i32
  %366 = icmp eq i32 %365, 2
  br i1 %366, label %367, label %374

367:                                              ; preds = %361
  %368 = load ptr, ptr %12, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %368, i32 0, i32 9
  %370 = load i16, ptr %369, align 1, !tbaa !21
  %371 = zext i16 %370 to i32
  %372 = and i32 %371, 16
  %373 = icmp sgt i32 %372, 0
  br i1 %373, label %452, label %374

374:                                              ; preds = %367, %361, %355
  %375 = load i32, ptr %13, align 4, !tbaa !9
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %376, i32 0, i32 1
  %378 = load i32, ptr %377, align 4, !tbaa !11
  %379 = icmp eq i32 %375, %378
  br i1 %379, label %380, label %393

380:                                              ; preds = %374
  %381 = load ptr, ptr %12, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %381, i32 0, i32 11
  %383 = load i8, ptr %382, align 1, !tbaa !14
  %384 = zext i8 %383 to i32
  %385 = icmp eq i32 %384, 3
  br i1 %385, label %386, label %393

386:                                              ; preds = %380
  %387 = load ptr, ptr %12, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %387, i32 0, i32 9
  %389 = load i16, ptr %388, align 1, !tbaa !21
  %390 = zext i16 %389 to i32
  %391 = and i32 %390, 64
  %392 = icmp sgt i32 %391, 0
  br i1 %392, label %452, label %393

393:                                              ; preds = %386, %380, %374
  %394 = load i32, ptr %13, align 4, !tbaa !9
  %395 = load ptr, ptr %10, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %395, i32 0, i32 2
  %397 = load i32, ptr %396, align 4, !tbaa !13
  %398 = icmp eq i32 %394, %397
  br i1 %398, label %399, label %412

399:                                              ; preds = %393
  %400 = load ptr, ptr %12, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %400, i32 0, i32 11
  %402 = load i8, ptr %401, align 1, !tbaa !14
  %403 = zext i8 %402 to i32
  %404 = icmp eq i32 %403, 2
  br i1 %404, label %405, label %412

405:                                              ; preds = %399
  %406 = load ptr, ptr %12, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %406, i32 0, i32 9
  %408 = load i16, ptr %407, align 1, !tbaa !21
  %409 = zext i16 %408 to i32
  %410 = and i32 %409, 32
  %411 = icmp sgt i32 %410, 0
  br i1 %411, label %452, label %412

412:                                              ; preds = %405, %399, %393
  %413 = load i32, ptr %13, align 4, !tbaa !9
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %414, i32 0, i32 2
  %416 = load i32, ptr %415, align 4, !tbaa !13
  %417 = icmp eq i32 %413, %416
  br i1 %417, label %418, label %431

418:                                              ; preds = %412
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %419, i32 0, i32 11
  %421 = load i8, ptr %420, align 1, !tbaa !14
  %422 = zext i8 %421 to i32
  %423 = icmp eq i32 %422, 3
  br i1 %423, label %424, label %431

424:                                              ; preds = %418
  %425 = load ptr, ptr %12, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %425, i32 0, i32 9
  %427 = load i16, ptr %426, align 1, !tbaa !21
  %428 = zext i16 %427 to i32
  %429 = and i32 %428, 128
  %430 = icmp sgt i32 %429, 0
  br i1 %430, label %452, label %431

431:                                              ; preds = %424, %418, %412
  %432 = load i32, ptr %13, align 4, !tbaa !9
  %433 = load ptr, ptr %10, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %433, i32 0, i32 3
  %435 = load i32, ptr %434, align 4, !tbaa !17
  %436 = icmp eq i32 %432, %435
  br i1 %436, label %437, label %450

437:                                              ; preds = %431
  %438 = load ptr, ptr %12, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %438, i32 0, i32 11
  %440 = load i8, ptr %439, align 1, !tbaa !14
  %441 = zext i8 %440 to i32
  %442 = icmp eq i32 %441, 3
  br i1 %442, label %443, label %450

443:                                              ; preds = %437
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %444, i32 0, i32 9
  %446 = load i16, ptr %445, align 1, !tbaa !21
  %447 = zext i16 %446 to i32
  %448 = and i32 %447, 256
  %449 = icmp sgt i32 %448, 0
  br label %450

450:                                              ; preds = %443, %437, %431
  %451 = phi i1 [ false, %437 ], [ false, %431 ], [ %449, %443 ]
  br label %452

452:                                              ; preds = %450, %424, %405, %386, %367, %348
  %453 = phi i1 [ true, %424 ], [ true, %405 ], [ true, %386 ], [ true, %367 ], [ true, %348 ], [ %451, %450 ]
  %454 = zext i1 %453 to i64
  %455 = select i1 %453, i32 1, i32 0
  store i32 %455, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  %456 = load i32, ptr %19, align 4, !tbaa !9
  %457 = icmp eq i32 %456, 1
  br i1 %457, label %464, label %458

458:                                              ; preds = %452
  %459 = load i32, ptr %20, align 4, !tbaa !9
  %460 = icmp eq i32 %459, 1
  br i1 %460, label %464, label %461

461:                                              ; preds = %458
  %462 = load i32, ptr %21, align 4, !tbaa !9
  %463 = icmp eq i32 %462, 1
  br label %464

464:                                              ; preds = %461, %458, %452
  %465 = phi i1 [ true, %458 ], [ true, %452 ], [ %463, %461 ]
  %466 = zext i1 %465 to i64
  %467 = select i1 %465, i32 1, i32 0
  store i32 %467, ptr %22, align 4, !tbaa !9
  %468 = load i32, ptr %17, align 4, !tbaa !9
  %469 = icmp ugt i32 %468, 0
  br i1 %469, label %473, label %470

470:                                              ; preds = %464
  %471 = load i32, ptr %18, align 4, !tbaa !9
  %472 = icmp ugt i32 %471, 0
  br i1 %472, label %473, label %719

473:                                              ; preds = %470, %464
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  %474 = load i32, ptr %17, align 4, !tbaa !9
  %475 = icmp ugt i32 %474, 0
  br i1 %475, label %476, label %480

476:                                              ; preds = %473
  %477 = load ptr, ptr %11, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %477, i32 0, i32 120
  %479 = load i32, ptr %478, align 4, !tbaa !22
  br label %484

480:                                              ; preds = %473
  %481 = load ptr, ptr %11, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %481, i32 0, i32 123
  %483 = load i32, ptr %482, align 4, !tbaa !24
  br label %484

484:                                              ; preds = %480, %476
  %485 = phi i32 [ %479, %476 ], [ %483, %480 ]
  store i32 %485, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %486 = load i32, ptr %17, align 4, !tbaa !9
  %487 = icmp ugt i32 %486, 0
  br i1 %487, label %488, label %516

488:                                              ; preds = %484
  %489 = load i32, ptr %13, align 4, !tbaa !9
  %490 = load ptr, ptr %10, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %490, i32 0, i32 2
  %492 = load i32, ptr %491, align 4, !tbaa !13
  %493 = icmp eq i32 %489, %492
  br i1 %493, label %494, label %510

494:                                              ; preds = %488
  %495 = load ptr, ptr %12, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %495, i32 0, i32 11
  %497 = load i8, ptr %496, align 1, !tbaa !14
  %498 = zext i8 %497 to i32
  %499 = icmp eq i32 %498, 2
  br i1 %499, label %506, label %500

500:                                              ; preds = %494
  %501 = load ptr, ptr %12, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %501, i32 0, i32 11
  %503 = load i8, ptr %502, align 1, !tbaa !14
  %504 = zext i8 %503 to i32
  %505 = icmp eq i32 %504, 3
  br i1 %505, label %506, label %510

506:                                              ; preds = %500, %494
  %507 = load ptr, ptr %11, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %507, i32 0, i32 3
  %509 = load i32, ptr %508, align 4, !tbaa !25
  br label %514

510:                                              ; preds = %500, %488
  %511 = load ptr, ptr %11, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %511, i32 0, i32 2
  %513 = load i32, ptr %512, align 4, !tbaa !26
  br label %514

514:                                              ; preds = %510, %506
  %515 = phi i32 [ %509, %506 ], [ %513, %510 ]
  br label %520

516:                                              ; preds = %484
  %517 = load ptr, ptr %11, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %517, i32 0, i32 5
  %519 = load i32, ptr %518, align 4, !tbaa !27
  br label %520

520:                                              ; preds = %516, %514
  %521 = phi i32 [ %515, %514 ], [ %519, %516 ]
  store i32 %521, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %522 = load i32, ptr %17, align 4, !tbaa !9
  %523 = icmp ugt i32 %522, 0
  br i1 %523, label %524, label %552

524:                                              ; preds = %520
  %525 = load i32, ptr %13, align 4, !tbaa !9
  %526 = load ptr, ptr %10, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %526, i32 0, i32 2
  %528 = load i32, ptr %527, align 4, !tbaa !13
  %529 = icmp eq i32 %525, %528
  br i1 %529, label %530, label %546

530:                                              ; preds = %524
  %531 = load ptr, ptr %12, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %531, i32 0, i32 11
  %533 = load i8, ptr %532, align 1, !tbaa !14
  %534 = zext i8 %533 to i32
  %535 = icmp eq i32 %534, 2
  br i1 %535, label %542, label %536

536:                                              ; preds = %530
  %537 = load ptr, ptr %12, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %537, i32 0, i32 11
  %539 = load i8, ptr %538, align 1, !tbaa !14
  %540 = zext i8 %539 to i32
  %541 = icmp eq i32 %540, 3
  br i1 %541, label %542, label %546

542:                                              ; preds = %536, %530
  %543 = load ptr, ptr %12, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %543, i32 0, i32 4
  %545 = load i32, ptr %544, align 1, !tbaa !28
  br label %550

546:                                              ; preds = %536, %524
  %547 = load ptr, ptr %12, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %547, i32 0, i32 2
  %549 = load i32, ptr %548, align 1, !tbaa !29
  br label %550

550:                                              ; preds = %546, %542
  %551 = phi i32 [ %545, %542 ], [ %549, %546 ]
  br label %556

552:                                              ; preds = %520
  %553 = load ptr, ptr %12, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %553, i32 0, i32 3
  %555 = load i32, ptr %554, align 1, !tbaa !30
  br label %556

556:                                              ; preds = %552, %550
  %557 = phi i32 [ %551, %550 ], [ %555, %552 ]
  store i32 %557, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  %558 = load i32, ptr %23, align 4, !tbaa !9
  %559 = zext i32 %558 to i64
  %560 = load i32, ptr %15, align 4, !tbaa !9
  %561 = zext i32 %560 to i64
  %562 = mul nsw i64 %559, %561
  %563 = load i32, ptr %24, align 4, !tbaa !9
  %564 = zext i32 %563 to i64
  %565 = mul nsw i64 %562, %564
  store i64 %565, ptr %26, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  %566 = load i32, ptr %25, align 4, !tbaa !9
  %567 = zext i32 %566 to i64
  %568 = load i32, ptr %15, align 4, !tbaa !9
  %569 = zext i32 %568 to i64
  %570 = mul nsw i64 %567, %569
  %571 = load i32, ptr %24, align 4, !tbaa !9
  %572 = zext i32 %571 to i64
  %573 = mul nsw i64 %570, %572
  store i64 %573, ptr %27, align 8, !tbaa !31
  %574 = load i32, ptr %17, align 4, !tbaa !9
  %575 = icmp ugt i32 %574, 0
  br i1 %575, label %576, label %628

576:                                              ; preds = %556
  %577 = load i32, ptr %13, align 4, !tbaa !9
  %578 = load ptr, ptr %10, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %578, i32 0, i32 3
  %580 = load i32, ptr %579, align 4, !tbaa !17
  %581 = icmp eq i32 %577, %580
  br i1 %581, label %582, label %628

582:                                              ; preds = %576
  %583 = load ptr, ptr %12, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %583, i32 0, i32 11
  %585 = load i8, ptr %584, align 1, !tbaa !14
  %586 = zext i8 %585 to i32
  %587 = icmp eq i32 %586, 3
  br i1 %587, label %588, label %628

588:                                              ; preds = %582
  %589 = load ptr, ptr %11, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %589, i32 0, i32 4
  %591 = load i32, ptr %590, align 4, !tbaa !33
  store i32 %591, ptr %24, align 4, !tbaa !9
  %592 = load ptr, ptr %12, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %592, i32 0, i32 5
  %594 = load i32, ptr %593, align 1, !tbaa !34
  store i32 %594, ptr %25, align 4, !tbaa !9
  %595 = load ptr, ptr %12, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %595, i32 0, i32 10
  %597 = load i16, ptr %596, align 1, !tbaa !19
  %598 = zext i16 %597 to i32
  %599 = icmp eq i32 %598, 3
  br i1 %599, label %600, label %627

600:                                              ; preds = %588
  store i32 1, ptr %24, align 4, !tbaa !9
  %601 = load ptr, ptr %12, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %601, i32 0, i32 9
  %603 = load i16, ptr %602, align 1, !tbaa !21
  %604 = zext i16 %603 to i32
  %605 = and i32 %604, 1024
  %606 = icmp sgt i32 %605, 0
  br i1 %606, label %607, label %612

607:                                              ; preds = %600
  %608 = load i32, ptr %25, align 4, !tbaa !9
  %609 = add i32 %608, 15
  %610 = udiv i32 %609, 16
  %611 = mul i32 %610, 16
  store i32 %611, ptr %25, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %607, %600
  %613 = load i32, ptr %23, align 4, !tbaa !9
  %614 = load i32, ptr %15, align 4, !tbaa !9
  %615 = mul i32 %613, %614
  %616 = load i32, ptr %24, align 4, !tbaa !9
  %617 = mul i32 %615, %616
  %618 = zext i32 %617 to i64
  %619 = sdiv i64 %618, 8
  store i64 %619, ptr %26, align 8, !tbaa !31
  %620 = load i32, ptr %25, align 4, !tbaa !9
  %621 = load i32, ptr %15, align 4, !tbaa !9
  %622 = mul i32 %620, %621
  %623 = load i32, ptr %24, align 4, !tbaa !9
  %624 = mul i32 %622, %623
  %625 = zext i32 %624 to i64
  %626 = sdiv i64 %625, 8
  store i64 %626, ptr %27, align 8, !tbaa !31
  br label %627

627:                                              ; preds = %612, %588
  br label %628

628:                                              ; preds = %627, %582, %576, %556
  %629 = load ptr, ptr %12, align 8, !tbaa !5
  %630 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %629)
  %631 = icmp ugt i32 %630, 0
  br i1 %631, label %632, label %660

632:                                              ; preds = %628
  %633 = load ptr, ptr %12, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %633, i32 0, i32 9
  %635 = load i16, ptr %634, align 1, !tbaa !21
  %636 = zext i16 %635 to i32
  %637 = and i32 %636, 128
  %638 = icmp sgt i32 %637, 0
  br i1 %638, label %639, label %660

639:                                              ; preds = %632
  %640 = load i32, ptr %18, align 4, !tbaa !9
  %641 = icmp ugt i32 %640, 0
  br i1 %641, label %642, label %660

642:                                              ; preds = %639
  store i32 1, ptr %24, align 4, !tbaa !9
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %643, i32 0, i32 17
  %645 = load i32, ptr %644, align 4, !tbaa !35
  store i32 %645, ptr %25, align 4, !tbaa !9
  %646 = load i32, ptr %23, align 4, !tbaa !9
  %647 = load i32, ptr %15, align 4, !tbaa !9
  %648 = mul i32 %646, %647
  %649 = load i32, ptr %24, align 4, !tbaa !9
  %650 = mul i32 %648, %649
  %651 = zext i32 %650 to i64
  %652 = sdiv i64 %651, 8
  store i64 %652, ptr %26, align 8, !tbaa !31
  %653 = load i32, ptr %25, align 4, !tbaa !9
  %654 = load i32, ptr %15, align 4, !tbaa !9
  %655 = mul i32 %653, %654
  %656 = load i32, ptr %24, align 4, !tbaa !9
  %657 = mul i32 %655, %656
  %658 = zext i32 %657 to i64
  %659 = sdiv i64 %658, 8
  store i64 %659, ptr %27, align 8, !tbaa !31
  br label %660

660:                                              ; preds = %642, %639, %632, %628
  %661 = load i32, ptr %22, align 4, !tbaa !9
  %662 = icmp eq i32 %661, 0
  br i1 %662, label %663, label %685

663:                                              ; preds = %660
  %664 = load i32, ptr %16, align 4, !tbaa !9
  %665 = icmp eq i32 %664, 0
  br i1 %665, label %666, label %675

666:                                              ; preds = %663
  %667 = load ptr, ptr %9, align 8, !tbaa !5
  %668 = load i32, ptr %14, align 4, !tbaa !9
  %669 = load i32, ptr %13, align 4, !tbaa !9
  %670 = load ptr, ptr %10, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %670, i32 0, i32 35
  %672 = load i32, ptr %671, align 4, !tbaa !36
  %673 = load i32, ptr %13, align 4, !tbaa !9
  %674 = load i64, ptr %26, align 8, !tbaa !31
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %667, i32 noundef %668, i32 noundef %669, i32 noundef %672, i32 noundef %673, i64 noundef %674)
  br label %684

675:                                              ; preds = %663
  %676 = load ptr, ptr %9, align 8, !tbaa !5
  %677 = load i32, ptr %14, align 4, !tbaa !9
  %678 = load i32, ptr %13, align 4, !tbaa !9
  %679 = load ptr, ptr %10, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %679, i32 0, i32 35
  %681 = load i32, ptr %680, align 4, !tbaa !36
  %682 = load i32, ptr %13, align 4, !tbaa !9
  %683 = load i64, ptr %27, align 8, !tbaa !31
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %676, i32 noundef %677, i32 noundef %678, i32 noundef %681, i32 noundef %682, i64 noundef %683)
  br label %684

684:                                              ; preds = %675, %666
  br label %718

685:                                              ; preds = %660
  %686 = load i32, ptr %19, align 4, !tbaa !9
  %687 = icmp ugt i32 %686, 0
  br i1 %687, label %688, label %701

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

691:                                              ; preds = %688
  %692 = load ptr, ptr %9, align 8, !tbaa !5
  %693 = load i32, ptr %14, align 4, !tbaa !9
  %694 = load i32, ptr %13, align 4, !tbaa !9
  %695 = load ptr, ptr %10, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %695, i32 0, i32 35
  %697 = load i32, ptr %696, align 4, !tbaa !36
  %698 = load i32, ptr %13, align 4, !tbaa !9
  %699 = load i64, ptr %27, align 8, !tbaa !31
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %692, i32 noundef %693, i32 noundef %694, i32 noundef %697, i32 noundef %698, i64 noundef %699)
  br label %700

700:                                              ; preds = %691, %688
  br label %701

701:                                              ; preds = %700, %685
  %702 = load i32, ptr %20, align 4, !tbaa !9
  %703 = icmp ugt i32 %702, 0
  br i1 %703, label %704, label %717

704:                                              ; preds = %701
  %705 = load i32, ptr %16, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %716

707:                                              ; preds = %704
  %708 = load ptr, ptr %9, align 8, !tbaa !5
  %709 = load i32, ptr %14, align 4, !tbaa !9
  %710 = load i32, ptr %13, align 4, !tbaa !9
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %711, i32 0, i32 35
  %713 = load i32, ptr %712, align 4, !tbaa !36
  %714 = load i32, ptr %13, align 4, !tbaa !9
  %715 = load i64, ptr %26, align 8, !tbaa !31
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %708, i32 noundef %709, i32 noundef %710, i32 noundef %713, i32 noundef %714, i64 noundef %715)
  br label %716

716:                                              ; preds = %707, %704
  br label %717

717:                                              ; preds = %716, %701
  br label %718

718:                                              ; preds = %717, %684
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  br label %1018

719:                                              ; preds = %470
  %720 = load ptr, ptr %12, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %720, i32 0, i32 11
  %722 = load i8, ptr %721, align 1, !tbaa !14
  %723 = zext i8 %722 to i32
  %724 = icmp eq i32 %723, 1
  br i1 %724, label %725, label %1017

725:                                              ; preds = %719
  %726 = load ptr, ptr %12, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %726, i32 0, i32 10
  %728 = load i16, ptr %727, align 1, !tbaa !19
  %729 = zext i16 %728 to i32
  %730 = icmp eq i32 %729, 5
  br i1 %730, label %737, label %731

731:                                              ; preds = %725
  %732 = load ptr, ptr %12, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %732, i32 0, i32 10
  %734 = load i16, ptr %733, align 1, !tbaa !19
  %735 = zext i16 %734 to i32
  %736 = icmp eq i32 %735, 34
  br i1 %736, label %737, label %788

737:                                              ; preds = %731, %725
  %738 = load ptr, ptr %12, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %738, i32 0, i32 9
  %740 = load i16, ptr %739, align 1, !tbaa !21
  %741 = zext i16 %740 to i32
  %742 = and i32 %741, 1
  %743 = icmp sgt i32 %742, 0
  br i1 %743, label %744, label %788

744:                                              ; preds = %737
  %745 = load i32, ptr %16, align 4, !tbaa !9
  %746 = icmp eq i32 %745, 0
  br i1 %746, label %747, label %767

747:                                              ; preds = %744
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = load i32, ptr %14, align 4, !tbaa !9
  %750 = load ptr, ptr %10, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %750, i32 0, i32 9
  %752 = load i32, ptr %751, align 4, !tbaa !37
  %753 = load ptr, ptr %10, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %753, i32 0, i32 35
  %755 = load i32, ptr %754, align 4, !tbaa !36
  %756 = load ptr, ptr %10, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %756, i32 0, i32 9
  %758 = load i32, ptr %757, align 4, !tbaa !37
  %759 = load ptr, ptr %11, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %759, i32 0, i32 123
  %761 = load i32, ptr %760, align 4, !tbaa !24
  %762 = zext i32 %761 to i64
  %763 = load i32, ptr %15, align 4, !tbaa !9
  %764 = zext i32 %763 to i64
  %765 = mul nsw i64 %762, %764
  %766 = sdiv i64 %765, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %748, i32 noundef %749, i32 noundef %752, i32 noundef %755, i32 noundef %758, i64 noundef %766)
  br label %787

767:                                              ; preds = %744
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = load i32, ptr %14, align 4, !tbaa !9
  %770 = load ptr, ptr %10, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %770, i32 0, i32 9
  %772 = load i32, ptr %771, align 4, !tbaa !37
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %773, i32 0, i32 35
  %775 = load i32, ptr %774, align 4, !tbaa !36
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %776, i32 0, i32 9
  %778 = load i32, ptr %777, align 4, !tbaa !37
  %779 = load ptr, ptr %11, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %779, i32 0, i32 17
  %781 = load i32, ptr %780, align 4, !tbaa !35
  %782 = zext i32 %781 to i64
  %783 = load i32, ptr %15, align 4, !tbaa !9
  %784 = zext i32 %783 to i64
  %785 = mul nsw i64 %782, %784
  %786 = sdiv i64 %785, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %768, i32 noundef %769, i32 noundef %772, i32 noundef %775, i32 noundef %778, i64 noundef %786)
  br label %787

787:                                              ; preds = %767, %747
  br label %788

788:                                              ; preds = %787, %737, %731
  %789 = load ptr, ptr %12, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %789, i32 0, i32 10
  %791 = load i16, ptr %790, align 1, !tbaa !19
  %792 = zext i16 %791 to i32
  %793 = icmp eq i32 %792, 6
  br i1 %793, label %806, label %794

794:                                              ; preds = %788
  %795 = load ptr, ptr %12, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %795, i32 0, i32 10
  %797 = load i16, ptr %796, align 1, !tbaa !19
  %798 = zext i16 %797 to i32
  %799 = icmp eq i32 %798, 35
  br i1 %799, label %806, label %800

800:                                              ; preds = %794
  %801 = load ptr, ptr %12, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %801, i32 0, i32 10
  %803 = load i16, ptr %802, align 1, !tbaa !19
  %804 = zext i16 %803 to i32
  %805 = icmp eq i32 %804, 37
  br i1 %805, label %806, label %900

806:                                              ; preds = %800, %794, %788
  %807 = load ptr, ptr %12, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %807, i32 0, i32 9
  %809 = load i16, ptr %808, align 1, !tbaa !21
  %810 = zext i16 %809 to i32
  %811 = and i32 %810, 1
  %812 = icmp sgt i32 %811, 0
  br i1 %812, label %813, label %855

813:                                              ; preds = %806
  %814 = load ptr, ptr %12, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %814, i32 0, i32 10
  %816 = load i16, ptr %815, align 1, !tbaa !19
  %817 = zext i16 %816 to i32
  %818 = icmp ne i32 %817, 37
  br i1 %818, label %819, label %855

819:                                              ; preds = %813
  %820 = load i32, ptr %16, align 4, !tbaa !9
  %821 = icmp eq i32 %820, 0
  br i1 %821, label %822, label %838

822:                                              ; preds = %819
  %823 = load ptr, ptr %9, align 8, !tbaa !5
  %824 = load i32, ptr %14, align 4, !tbaa !9
  %825 = load i32, ptr %13, align 4, !tbaa !9
  %826 = load ptr, ptr %10, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %826, i32 0, i32 35
  %828 = load i32, ptr %827, align 4, !tbaa !36
  %829 = load i32, ptr %13, align 4, !tbaa !9
  %830 = load ptr, ptr %11, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %830, i32 0, i32 120
  %832 = load i32, ptr %831, align 4, !tbaa !22
  %833 = zext i32 %832 to i64
  %834 = load i32, ptr %15, align 4, !tbaa !9
  %835 = zext i32 %834 to i64
  %836 = mul nsw i64 %833, %835
  %837 = sdiv i64 %836, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %823, i32 noundef %824, i32 noundef %825, i32 noundef %828, i32 noundef %829, i64 noundef %837)
  br label %854

838:                                              ; preds = %819
  %839 = load ptr, ptr %9, align 8, !tbaa !5
  %840 = load i32, ptr %14, align 4, !tbaa !9
  %841 = load i32, ptr %13, align 4, !tbaa !9
  %842 = load ptr, ptr %10, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %842, i32 0, i32 35
  %844 = load i32, ptr %843, align 4, !tbaa !36
  %845 = load i32, ptr %13, align 4, !tbaa !9
  %846 = load ptr, ptr %11, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %846, i32 0, i32 16
  %848 = load i32, ptr %847, align 4, !tbaa !38
  %849 = zext i32 %848 to i64
  %850 = load i32, ptr %15, align 4, !tbaa !9
  %851 = zext i32 %850 to i64
  %852 = mul nsw i64 %849, %851
  %853 = sdiv i64 %852, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %839, i32 noundef %840, i32 noundef %841, i32 noundef %844, i32 noundef %845, i64 noundef %853)
  br label %854

854:                                              ; preds = %838, %822
  br label %899

855:                                              ; preds = %813, %806
  %856 = load i32, ptr %16, align 4, !tbaa !9
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %858, label %878

858:                                              ; preds = %855
  %859 = load ptr, ptr %9, align 8, !tbaa !5
  %860 = load i32, ptr %14, align 4, !tbaa !9
  %861 = load i32, ptr %13, align 4, !tbaa !9
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %862, i32 0, i32 35
  %864 = load i32, ptr %863, align 4, !tbaa !36
  %865 = load i32, ptr %13, align 4, !tbaa !9
  %866 = load ptr, ptr %11, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %866, i32 0, i32 120
  %868 = load i32, ptr %867, align 4, !tbaa !22
  %869 = zext i32 %868 to i64
  %870 = load i32, ptr %15, align 4, !tbaa !9
  %871 = zext i32 %870 to i64
  %872 = mul nsw i64 %869, %871
  %873 = load ptr, ptr %11, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %873, i32 0, i32 2
  %875 = load i32, ptr %874, align 4, !tbaa !26
  %876 = zext i32 %875 to i64
  %877 = mul nsw i64 %872, %876
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %859, i32 noundef %860, i32 noundef %861, i32 noundef %864, i32 noundef %865, i64 noundef %877)
  br label %898

878:                                              ; preds = %855
  %879 = load ptr, ptr %9, align 8, !tbaa !5
  %880 = load i32, ptr %14, align 4, !tbaa !9
  %881 = load i32, ptr %13, align 4, !tbaa !9
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %882, i32 0, i32 35
  %884 = load i32, ptr %883, align 4, !tbaa !36
  %885 = load i32, ptr %13, align 4, !tbaa !9
  %886 = load ptr, ptr %12, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %886, i32 0, i32 2
  %888 = load i32, ptr %887, align 1, !tbaa !29
  %889 = zext i32 %888 to i64
  %890 = load i32, ptr %15, align 4, !tbaa !9
  %891 = zext i32 %890 to i64
  %892 = mul nsw i64 %889, %891
  %893 = load ptr, ptr %11, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %893, i32 0, i32 2
  %895 = load i32, ptr %894, align 4, !tbaa !26
  %896 = zext i32 %895 to i64
  %897 = mul nsw i64 %892, %896
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %879, i32 noundef %880, i32 noundef %881, i32 noundef %884, i32 noundef %885, i64 noundef %897)
  br label %898

898:                                              ; preds = %878, %858
  br label %899

899:                                              ; preds = %898, %854
  br label %900

900:                                              ; preds = %899, %800
  %901 = load ptr, ptr %12, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %901, i32 0, i32 10
  %903 = load i16, ptr %902, align 1, !tbaa !19
  %904 = zext i16 %903 to i32
  %905 = icmp eq i32 %904, 25
  br i1 %905, label %906, label %957

906:                                              ; preds = %900
  %907 = load ptr, ptr %12, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %907, i32 0, i32 9
  %909 = load i16, ptr %908, align 1, !tbaa !21
  %910 = zext i16 %909 to i32
  %911 = and i32 %910, 1
  %912 = icmp sgt i32 %911, 0
  br i1 %912, label %913, label %957

913:                                              ; preds = %906
  %914 = load i32, ptr %16, align 4, !tbaa !9
  %915 = icmp eq i32 %914, 0
  br i1 %915, label %916, label %936

916:                                              ; preds = %913
  %917 = load ptr, ptr %9, align 8, !tbaa !5
  %918 = load i32, ptr %14, align 4, !tbaa !9
  %919 = load ptr, ptr %10, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %919, i32 0, i32 13
  %921 = load i32, ptr %920, align 4, !tbaa !39
  %922 = load ptr, ptr %10, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %922, i32 0, i32 35
  %924 = load i32, ptr %923, align 4, !tbaa !36
  %925 = load ptr, ptr %10, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %925, i32 0, i32 13
  %927 = load i32, ptr %926, align 4, !tbaa !39
  %928 = load ptr, ptr %11, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %928, i32 0, i32 123
  %930 = load i32, ptr %929, align 4, !tbaa !24
  %931 = zext i32 %930 to i64
  %932 = load i32, ptr %15, align 4, !tbaa !9
  %933 = zext i32 %932 to i64
  %934 = mul nsw i64 %931, %933
  %935 = sdiv i64 %934, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %917, i32 noundef %918, i32 noundef %921, i32 noundef %924, i32 noundef %927, i64 noundef %935)
  br label %956

936:                                              ; preds = %913
  %937 = load ptr, ptr %9, align 8, !tbaa !5
  %938 = load i32, ptr %14, align 4, !tbaa !9
  %939 = load ptr, ptr %10, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %939, i32 0, i32 13
  %941 = load i32, ptr %940, align 4, !tbaa !39
  %942 = load ptr, ptr %10, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %942, i32 0, i32 35
  %944 = load i32, ptr %943, align 4, !tbaa !36
  %945 = load ptr, ptr %10, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %945, i32 0, i32 13
  %947 = load i32, ptr %946, align 4, !tbaa !39
  %948 = load ptr, ptr %11, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %948, i32 0, i32 17
  %950 = load i32, ptr %949, align 4, !tbaa !35
  %951 = zext i32 %950 to i64
  %952 = load i32, ptr %15, align 4, !tbaa !9
  %953 = zext i32 %952 to i64
  %954 = mul nsw i64 %951, %953
  %955 = sdiv i64 %954, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %937, i32 noundef %938, i32 noundef %941, i32 noundef %944, i32 noundef %947, i64 noundef %955)
  br label %956

956:                                              ; preds = %936, %916
  br label %957

957:                                              ; preds = %956, %906, %900
  %958 = load ptr, ptr %12, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %958, i32 0, i32 10
  %960 = load i16, ptr %959, align 1, !tbaa !19
  %961 = zext i16 %960 to i32
  %962 = icmp eq i32 %961, 26
  br i1 %962, label %963, label %1016

963:                                              ; preds = %957
  %964 = load ptr, ptr %12, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %964, i32 0, i32 9
  %966 = load i16, ptr %965, align 1, !tbaa !21
  %967 = zext i16 %966 to i32
  %968 = and i32 %967, 1
  %969 = icmp sgt i32 %968, 0
  br i1 %969, label %970, label %1006

970:                                              ; preds = %963
  %971 = load i32, ptr %16, align 4, !tbaa !9
  %972 = icmp eq i32 %971, 0
  br i1 %972, label %973, label %989

973:                                              ; preds = %970
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = load i32, ptr %14, align 4, !tbaa !9
  %976 = load i32, ptr %13, align 4, !tbaa !9
  %977 = load ptr, ptr %10, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %977, i32 0, i32 35
  %979 = load i32, ptr %978, align 4, !tbaa !36
  %980 = load i32, ptr %13, align 4, !tbaa !9
  %981 = load ptr, ptr %11, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %981, i32 0, i32 120
  %983 = load i32, ptr %982, align 4, !tbaa !22
  %984 = zext i32 %983 to i64
  %985 = load i32, ptr %15, align 4, !tbaa !9
  %986 = zext i32 %985 to i64
  %987 = mul nsw i64 %984, %986
  %988 = sdiv i64 %987, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %974, i32 noundef %975, i32 noundef %976, i32 noundef %979, i32 noundef %980, i64 noundef %988)
  br label %1005

989:                                              ; preds = %970
  %990 = load ptr, ptr %9, align 8, !tbaa !5
  %991 = load i32, ptr %14, align 4, !tbaa !9
  %992 = load i32, ptr %13, align 4, !tbaa !9
  %993 = load ptr, ptr %10, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %993, i32 0, i32 35
  %995 = load i32, ptr %994, align 4, !tbaa !36
  %996 = load i32, ptr %13, align 4, !tbaa !9
  %997 = load ptr, ptr %11, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %997, i32 0, i32 16
  %999 = load i32, ptr %998, align 4, !tbaa !38
  %1000 = zext i32 %999 to i64
  %1001 = load i32, ptr %15, align 4, !tbaa !9
  %1002 = zext i32 %1001 to i64
  %1003 = mul nsw i64 %1000, %1002
  %1004 = sdiv i64 %1003, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %990, i32 noundef %991, i32 noundef %992, i32 noundef %995, i32 noundef %996, i64 noundef %1004)
  br label %1005

1005:                                             ; preds = %989, %973
  br label %1015

1006:                                             ; preds = %963
  %1007 = load ptr, ptr %9, align 8, !tbaa !5
  %1008 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1009 = icmp ult i32 1, %1008
  br i1 %1009, label %1010, label %1012

1010:                                             ; preds = %1006
  %1011 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1013

1012:                                             ; preds = %1006
  br label %1013

1013:                                             ; preds = %1012, %1010
  %1014 = phi i32 [ %1011, %1010 ], [ 1, %1012 ]
  call void @libxsmm_handle_error(ptr noundef %1007, i32 noundef 90045, ptr noundef @__func__.libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg, ptr noundef @.str, i32 noundef 274, i32 noundef %1014)
  store i32 1, ptr %28, align 4
  br label %1019

1015:                                             ; preds = %1005
  br label %1016

1016:                                             ; preds = %1015, %957
  br label %1017

1017:                                             ; preds = %1016, %719
  br label %1018

1018:                                             ; preds = %1017, %718
  store i32 0, ptr %28, align 4
  br label %1019

1019:                                             ; preds = %1018, %1013
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  %1020 = load i32, ptr %28, align 4
  switch i32 %1020, label %1022 [
    i32 0, label %1021
    i32 1, label %1021
  ]

1021:                                             ; preds = %1019, %1019
  ret void

1022:                                             ; preds = %1019
  unreachable
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 4}
!12 = !{!"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}
!13 = !{!12, !10, i64 8}
!14 = !{!15, !7, i64 31}
!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 = !{!12, !10, i64 12}
!18 = !{!12, !10, i64 24}
!19 = !{!15, !16, i64 29}
!20 = !{!12, !10, i64 28}
!21 = !{!15, !16, i64 27}
!22 = !{!23, !10, i64 480}
!23 = !{!"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}
!24 = !{!23, !10, i64 492}
!25 = !{!23, !10, i64 12}
!26 = !{!23, !10, i64 8}
!27 = !{!23, !10, i64 20}
!28 = !{!15, !10, i64 16}
!29 = !{!15, !10, i64 8}
!30 = !{!15, !10, i64 12}
!31 = !{!32, !32, i64 0}
!32 = !{!"long long", !7, i64 0}
!33 = !{!23, !10, i64 16}
!34 = !{!15, !10, i64 20}
!35 = !{!23, !10, i64 68}
!36 = !{!12, !10, i64 140}
!37 = !{!12, !10, i64 36}
!38 = !{!23, !10, i64 64}
!39 = !{!12, !10, i64 52}


; 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
@__func__.libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg = external hidden unnamed_addr constant [84 x i8], align 1

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) local_unnamed_addr #0

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

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg(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) local_unnamed_addr #1 {
  %9 = getelementptr inbounds i8, ptr %1, i64 4
  %10 = load i32, ptr %9, align 4, !tbaa !5
  %11 = icmp eq i32 %10, %4
  br i1 %11, label %28, label %12

12:                                               ; preds = %8
  %13 = getelementptr inbounds i8, ptr %1, i64 8
  %14 = load i32, ptr %13, align 4, !tbaa !10
  %15 = icmp eq i32 %14, %4
  br i1 %15, label %16, label %20

16:                                               ; preds = %12
  %17 = getelementptr inbounds i8, ptr %3, i64 31
  %18 = load i8, ptr %17, align 1, !tbaa !11
  %19 = and i8 %18, -2
  %switch = icmp eq i8 %19, 2
  br i1 %switch, label %28, label %20

20:                                               ; preds = %16, %12
  %21 = getelementptr inbounds i8, ptr %1, i64 12
  %22 = load i32, ptr %21, align 4, !tbaa !14
  %23 = icmp eq i32 %22, %4
  br i1 %23, label %24, label %28

24:                                               ; preds = %20
  %25 = getelementptr inbounds i8, ptr %3, i64 31
  %26 = load i8, ptr %25, align 1, !tbaa !11
  %27 = icmp eq i8 %26, 3
  br label %28

28:                                               ; preds = %16, %20, %24, %8
  %29 = phi i1 [ true, %8 ], [ false, %20 ], [ %27, %24 ], [ true, %16 ]
  %30 = getelementptr inbounds i8, ptr %1, i64 24
  %31 = load i32, ptr %30, align 4, !tbaa !15
  %32 = icmp eq i32 %31, %4
  br i1 %32, label %45, label %33

33:                                               ; preds = %28
  %34 = getelementptr inbounds i8, ptr %3, i64 31
  %35 = load i8, ptr %34, align 1, !tbaa !11
  %36 = icmp eq i8 %35, 1
  br i1 %36, label %37, label %45

37:                                               ; preds = %33
  %38 = getelementptr inbounds i8, ptr %3, i64 29
  %39 = load i16, ptr %38, align 1, !tbaa !16
  %40 = icmp eq i16 %39, 63
  br i1 %40, label %41, label %45

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %1, i64 28
  %43 = load i32, ptr %42, align 4, !tbaa !17
  %44 = icmp eq i32 %43, %4
  br label %45

45:                                               ; preds = %33, %37, %41, %28
  %46 = phi i1 [ true, %28 ], [ false, %37 ], [ false, %33 ], [ %44, %41 ]
  br i1 %11, label %47, label %.thread341

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %3, i64 31
  %49 = load i8, ptr %48, align 1, !tbaa !11
  switch i8 %49, label %.thread341 [
    i8 1, label %50
    i8 2, label %54
    i8 3, label %58
  ]

50:                                               ; preds = %47
  %51 = getelementptr inbounds i8, ptr %3, i64 27
  %52 = load i16, ptr %51, align 1, !tbaa !18
  %53 = and i16 %52, 2
  %.not = icmp eq i16 %53, 0
  br i1 %.not, label %.thread341, label %.thread313.thread343

54:                                               ; preds = %47
  %55 = getelementptr inbounds i8, ptr %3, i64 27
  %56 = load i16, ptr %55, align 1, !tbaa !18
  %57 = and i16 %56, 1
  %.not281 = icmp eq i16 %57, 0
  br i1 %.not281, label %.thread341, label %.thread313.thread.thread

58:                                               ; preds = %47
  %59 = getelementptr inbounds i8, ptr %3, i64 27
  %60 = load i16, ptr %59, align 1, !tbaa !18
  %61 = and i16 %60, 1
  %.not282 = icmp eq i16 %61, 0
  br i1 %.not282, label %.thread341, label %.thread364

.thread341:                                       ; preds = %47, %50, %54, %45, %58
  %62 = getelementptr inbounds i8, ptr %1, i64 8
  %63 = load i32, ptr %62, align 4, !tbaa !10
  %64 = icmp eq i32 %63, %4
  br i1 %64, label %65, label %.thread342

65:                                               ; preds = %.thread341
  %66 = getelementptr inbounds i8, ptr %3, i64 31
  %67 = load i8, ptr %66, align 1, !tbaa !11
  switch i8 %67, label %.thread342 [
    i8 2, label %68
    i8 3, label %72
  ]

68:                                               ; preds = %65
  %69 = getelementptr inbounds i8, ptr %3, i64 27
  %70 = load i16, ptr %69, align 1, !tbaa !18
  %71 = and i16 %70, 2
  %.not283 = icmp eq i16 %71, 0
  br i1 %.not283, label %.thread342, label %88

72:                                               ; preds = %65
  %73 = getelementptr inbounds i8, ptr %3, i64 27
  %74 = load i16, ptr %73, align 1, !tbaa !18
  %75 = and i16 %74, 2
  %.not284 = icmp eq i16 %75, 0
  br i1 %.not284, label %.thread342, label %88

.thread342:                                       ; preds = %65, %68, %.thread341, %72
  %76 = getelementptr inbounds i8, ptr %1, i64 12
  %77 = load i32, ptr %76, align 4, !tbaa !14
  %78 = icmp eq i32 %77, %4
  br i1 %78, label %79, label %88

79:                                               ; preds = %.thread342
  %80 = getelementptr inbounds i8, ptr %3, i64 31
  %81 = load i8, ptr %80, align 1, !tbaa !11
  %82 = icmp eq i8 %81, 3
  br i1 %82, label %83, label %88

83:                                               ; preds = %79
  %84 = getelementptr inbounds i8, ptr %3, i64 27
  %85 = load i16, ptr %84, align 1, !tbaa !18
  %86 = and i16 %85, 4
  %87 = icmp ne i16 %86, 0
  br label %88

88:                                               ; preds = %.thread342, %79, %83, %72, %68
  %89 = phi i1 [ true, %72 ], [ true, %68 ], [ false, %79 ], [ false, %.thread342 ], [ %87, %83 ]
  br i1 %11, label %.thread313, label %.thread348

.thread313:                                       ; preds = %88
  %.phi.trans.insert = getelementptr inbounds i8, ptr %3, i64 31
  %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !11
  switch i8 %.pre, label %.thread348 [
    i8 1, label %.thread313.thread343
    i8 2, label %.thread313.thread.thread
    i8 3, label %.thread364
  ]

.thread313.thread343:                             ; preds = %.thread313, %50
  %90 = phi i1 [ %89, %.thread313 ], [ true, %50 ]
  %91 = getelementptr inbounds i8, ptr %3, i64 27
  %92 = load i16, ptr %91, align 1, !tbaa !18
  %93 = and i16 %92, 4
  %.not285 = icmp eq i16 %93, 0
  br i1 %.not285, label %.thread348, label %.thread321.thread352

.thread313.thread.thread:                         ; preds = %.thread313, %54
  %94 = phi i1 [ true, %54 ], [ %89, %.thread313 ]
  %95 = getelementptr inbounds i8, ptr %3, i64 27
  %96 = load i16, ptr %95, align 1, !tbaa !18
  %97 = and i16 %96, 4
  %.not286 = icmp eq i16 %97, 0
  br i1 %.not286, label %.thread348, label %.thread321.thread.thread

.thread364:                                       ; preds = %.thread313, %58
  %98 = phi i1 [ true, %58 ], [ %89, %.thread313 ]
  %99 = getelementptr inbounds i8, ptr %3, i64 27
  %100 = load i16, ptr %99, align 1, !tbaa !18
  %101 = and i16 %100, 8
  %.not287 = icmp eq i16 %101, 0
  br i1 %.not287, label %.thread348, label %.thread366

.thread348:                                       ; preds = %.thread313, %.thread313.thread343, %.thread313.thread.thread, %88, %.thread364
  %102 = phi i1 [ %98, %.thread364 ], [ %89, %88 ], [ %94, %.thread313.thread.thread ], [ %90, %.thread313.thread343 ], [ %89, %.thread313 ]
  %103 = getelementptr inbounds i8, ptr %1, i64 8
  %104 = load i32, ptr %103, align 4, !tbaa !10
  %105 = icmp eq i32 %104, %4
  br i1 %105, label %106, label %.thread349

106:                                              ; preds = %.thread348
  %107 = getelementptr inbounds i8, ptr %3, i64 31
  %108 = load i8, ptr %107, align 1, !tbaa !11
  switch i8 %108, label %.thread349 [
    i8 2, label %109
    i8 3, label %113
  ]

109:                                              ; preds = %106
  %110 = getelementptr inbounds i8, ptr %3, i64 27
  %111 = load i16, ptr %110, align 1, !tbaa !18
  %112 = and i16 %111, 8
  %.not288 = icmp eq i16 %112, 0
  br i1 %.not288, label %.thread349, label %129

113:                                              ; preds = %106
  %114 = getelementptr inbounds i8, ptr %3, i64 27
  %115 = load i16, ptr %114, align 1, !tbaa !18
  %116 = and i16 %115, 16
  %.not289 = icmp eq i16 %116, 0
  br i1 %.not289, label %.thread349, label %129

.thread349:                                       ; preds = %106, %109, %.thread348, %113
  %117 = getelementptr inbounds i8, ptr %1, i64 12
  %118 = load i32, ptr %117, align 4, !tbaa !14
  %119 = icmp eq i32 %118, %4
  br i1 %119, label %120, label %129

120:                                              ; preds = %.thread349
  %121 = getelementptr inbounds i8, ptr %3, i64 31
  %122 = load i8, ptr %121, align 1, !tbaa !11
  %123 = icmp eq i8 %122, 3
  br i1 %123, label %124, label %129

124:                                              ; preds = %120
  %125 = getelementptr inbounds i8, ptr %3, i64 27
  %126 = load i16, ptr %125, align 1, !tbaa !18
  %127 = and i16 %126, 32
  %128 = icmp ne i16 %127, 0
  br label %129

129:                                              ; preds = %.thread349, %120, %124, %113, %109
  %130 = phi i1 [ true, %113 ], [ true, %109 ], [ false, %120 ], [ false, %.thread349 ], [ %128, %124 ]
  br i1 %11, label %.thread321, label %.thread358

.thread321:                                       ; preds = %129
  %.phi.trans.insert339 = getelementptr inbounds i8, ptr %3, i64 31
  %.pre340 = load i8, ptr %.phi.trans.insert339, align 1, !tbaa !11
  switch i8 %.pre340, label %.thread358 [
    i8 1, label %.thread321.thread352
    i8 2, label %.thread321.thread.thread
    i8 3, label %.thread366
  ]

.thread321.thread352:                             ; preds = %.thread321, %.thread313.thread343
  %131 = phi i1 [ %102, %.thread321 ], [ %90, %.thread313.thread343 ]
  %132 = phi i1 [ %130, %.thread321 ], [ true, %.thread313.thread343 ]
  %133 = getelementptr inbounds i8, ptr %3, i64 27
  %134 = load i16, ptr %133, align 1, !tbaa !18
  %135 = and i16 %134, 8
  %.not290 = icmp eq i16 %135, 0
  br i1 %.not290, label %.thread358, label %174

.thread321.thread.thread:                         ; preds = %.thread321, %.thread313.thread.thread
  %136 = phi i1 [ true, %.thread313.thread.thread ], [ %130, %.thread321 ]
  %137 = phi i1 [ %94, %.thread313.thread.thread ], [ %102, %.thread321 ]
  %138 = getelementptr inbounds i8, ptr %3, i64 27
  %139 = load i16, ptr %138, align 1, !tbaa !18
  %140 = and i16 %139, 16
  %.not291 = icmp eq i16 %140, 0
  br i1 %.not291, label %.thread358, label %174

.thread366:                                       ; preds = %.thread321, %.thread364
  %141 = phi i1 [ %98, %.thread364 ], [ %102, %.thread321 ]
  %142 = phi i1 [ true, %.thread364 ], [ %130, %.thread321 ]
  %143 = getelementptr inbounds i8, ptr %3, i64 27
  %144 = load i16, ptr %143, align 1, !tbaa !18
  %145 = and i16 %144, 64
  %.not292 = icmp eq i16 %145, 0
  br i1 %.not292, label %.thread358, label %174

.thread358:                                       ; preds = %.thread321, %.thread321.thread352, %.thread321.thread.thread, %129, %.thread366
  %146 = phi i1 [ %142, %.thread366 ], [ %130, %129 ], [ %136, %.thread321.thread.thread ], [ %132, %.thread321.thread352 ], [ %130, %.thread321 ]
  %147 = phi i1 [ %141, %.thread366 ], [ %102, %129 ], [ %137, %.thread321.thread.thread ], [ %131, %.thread321.thread352 ], [ %102, %.thread321 ]
  %148 = getelementptr inbounds i8, ptr %1, i64 8
  %149 = load i32, ptr %148, align 4, !tbaa !10
  %150 = icmp eq i32 %149, %4
  br i1 %150, label %151, label %.thread359

151:                                              ; preds = %.thread358
  %152 = getelementptr inbounds i8, ptr %3, i64 31
  %153 = load i8, ptr %152, align 1, !tbaa !11
  switch i8 %153, label %.thread359 [
    i8 2, label %154
    i8 3, label %158
  ]

154:                                              ; preds = %151
  %155 = getelementptr inbounds i8, ptr %3, i64 27
  %156 = load i16, ptr %155, align 1, !tbaa !18
  %157 = and i16 %156, 32
  %.not293 = icmp eq i16 %157, 0
  br i1 %.not293, label %.thread359, label %174

158:                                              ; preds = %151
  %159 = getelementptr inbounds i8, ptr %3, i64 27
  %160 = load i16, ptr %159, align 1, !tbaa !18
  %161 = and i16 %160, 128
  %.not294 = icmp eq i16 %161, 0
  br i1 %.not294, label %.thread359, label %174

.thread359:                                       ; preds = %151, %154, %.thread358, %158
  %162 = getelementptr inbounds i8, ptr %1, i64 12
  %163 = load i32, ptr %162, align 4, !tbaa !14
  %164 = icmp eq i32 %163, %4
  br i1 %164, label %165, label %174

165:                                              ; preds = %.thread359
  %166 = getelementptr inbounds i8, ptr %3, i64 31
  %167 = load i8, ptr %166, align 1, !tbaa !11
  %168 = icmp eq i8 %167, 3
  br i1 %168, label %169, label %174

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %3, i64 27
  %171 = load i16, ptr %170, align 1, !tbaa !18
  %172 = and i16 %171, 256
  %173 = icmp ne i16 %172, 0
  br label %174

174:                                              ; preds = %.thread359, %165, %169, %158, %154, %.thread366, %.thread321.thread.thread, %.thread321.thread352
  %175 = phi i1 [ %146, %158 ], [ %146, %154 ], [ %142, %.thread366 ], [ %136, %.thread321.thread.thread ], [ %132, %.thread321.thread352 ], [ %146, %165 ], [ %146, %.thread359 ], [ %146, %169 ]
  %176 = phi i1 [ %147, %158 ], [ %147, %154 ], [ %141, %.thread366 ], [ %137, %.thread321.thread.thread ], [ %131, %.thread321.thread352 ], [ %147, %165 ], [ %147, %.thread359 ], [ %147, %169 ]
  %177 = phi i1 [ true, %158 ], [ true, %154 ], [ true, %.thread366 ], [ true, %.thread321.thread.thread ], [ true, %.thread321.thread352 ], [ false, %165 ], [ false, %.thread359 ], [ %173, %169 ]
  %or.cond = select i1 %176, i1 true, i1 %175
  %spec.select = select i1 %or.cond, i1 true, i1 %177
  %or.cond3 = select i1 %29, i1 true, i1 %46
  br i1 %or.cond3, label %178, label %272

178:                                              ; preds = %174
  %.in.v = select i1 %29, i64 480, i64 492
  %.in = getelementptr inbounds i8, ptr %2, i64 %.in.v
  %179 = load i32, ptr %.in, align 4, !tbaa !19
  br i1 %29, label %180, label %192

180:                                              ; preds = %178
  %181 = getelementptr inbounds i8, ptr %1, i64 8
  %182 = load i32, ptr %181, align 4, !tbaa !10
  %183 = icmp eq i32 %182, %4
  br i1 %183, label %184, label %190

184:                                              ; preds = %180
  %185 = getelementptr inbounds i8, ptr %3, i64 31
  %186 = load i8, ptr %185, align 1, !tbaa !11
  %187 = and i8 %186, -2
  %switch305 = icmp eq i8 %187, 2
  %. = select i1 %switch305, i64 12, i64 8
  %188 = getelementptr inbounds i8, ptr %2, i64 %.
  %189 = and i8 %186, -2
  %switch307 = icmp eq i8 %189, 2
  %spec.select383 = select i1 %switch307, i64 16, i64 8
  br label %204

190:                                              ; preds = %180
  %191 = getelementptr inbounds i8, ptr %2, i64 8
  br label %204

192:                                              ; preds = %178
  %193 = getelementptr inbounds i8, ptr %2, i64 20
  %194 = load i32, ptr %193, align 4, !tbaa !19
  %195 = getelementptr inbounds i8, ptr %3, i64 12
  %196 = load i32, ptr %195, align 1, !tbaa !19
  %197 = zext i32 %179 to i64
  %198 = zext i32 %6 to i64
  %199 = zext i32 %194 to i64
  %200 = mul nuw i64 %199, %198
  %201 = mul i64 %200, %197
  %202 = zext i32 %196 to i64
  %203 = mul i64 %200, %202
  br label %240

204:                                              ; preds = %184, %190
  %.sink = phi i64 [ 8, %190 ], [ %spec.select383, %184 ]
  %.in384 = phi ptr [ %191, %190 ], [ %188, %184 ]
  %205 = load i32, ptr %.in384, align 4, !tbaa !19
  %206 = getelementptr inbounds i8, ptr %3, i64 %.sink
  %207 = load i32, ptr %206, align 1, !tbaa !19
  %208 = zext i32 %179 to i64
  %209 = zext i32 %6 to i64
  %210 = zext i32 %205 to i64
  %211 = mul nuw i64 %210, %209
  %212 = mul i64 %211, %208
  %213 = zext i32 %207 to i64
  %214 = mul i64 %211, %213
  %215 = getelementptr inbounds i8, ptr %1, i64 12
  %216 = load i32, ptr %215, align 4, !tbaa !14
  %217 = icmp eq i32 %216, %4
  br i1 %217, label %218, label %240

218:                                              ; preds = %204
  %219 = getelementptr inbounds i8, ptr %3, i64 31
  %220 = load i8, ptr %219, align 1, !tbaa !11
  %221 = icmp eq i8 %220, 3
  br i1 %221, label %222, label %240

222:                                              ; preds = %218
  %223 = getelementptr inbounds i8, ptr %3, i64 29
  %224 = load i16, ptr %223, align 1, !tbaa !16
  %225 = icmp eq i16 %224, 3
  br i1 %225, label %226, label %240

226:                                              ; preds = %222
  %227 = getelementptr inbounds i8, ptr %3, i64 20
  %228 = load i32, ptr %227, align 1, !tbaa !20
  %229 = getelementptr inbounds i8, ptr %3, i64 27
  %230 = load i16, ptr %229, align 1, !tbaa !18
  %231 = and i16 %230, 1024
  %.not302 = icmp eq i16 %231, 0
  %232 = add i32 %228, 15
  %233 = and i32 %232, -16
  %.0273 = select i1 %.not302, i32 %228, i32 %233
  %234 = mul i32 %179, %6
  %235 = lshr i32 %234, 3
  %236 = zext nneg i32 %235 to i64
  %237 = mul i32 %.0273, %6
  %238 = lshr i32 %237, 3
  %239 = zext nneg i32 %238 to i64
  br label %240

240:                                              ; preds = %192, %222, %226, %218, %204
  %.0271 = phi i64 [ %236, %226 ], [ %212, %222 ], [ %212, %218 ], [ %212, %204 ], [ %201, %192 ]
  %.0 = phi i64 [ %239, %226 ], [ %214, %222 ], [ %214, %218 ], [ %214, %204 ], [ %203, %192 ]
  %241 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %3) #2
  %.not303 = icmp eq i32 %241, 0
  br i1 %.not303, label %256, label %242

242:                                              ; preds = %240
  %243 = getelementptr inbounds i8, ptr %3, i64 27
  %244 = load i16, ptr %243, align 1, !tbaa !18
  %245 = and i16 %244, 128
  %246 = icmp ne i16 %245, 0
  %or.cond5 = select i1 %246, i1 %46, i1 false
  br i1 %or.cond5, label %247, label %256

247:                                              ; preds = %242
  %248 = getelementptr inbounds i8, ptr %2, i64 68
  %249 = load i32, ptr %248, align 4, !tbaa !21
  %250 = mul i32 %179, %6
  %251 = lshr i32 %250, 3
  %252 = zext nneg i32 %251 to i64
  %253 = mul i32 %249, %6
  %254 = lshr i32 %253, 3
  %255 = zext nneg i32 %254 to i64
  br label %256

256:                                              ; preds = %247, %242, %240
  %.1272 = phi i64 [ %252, %247 ], [ %.0271, %242 ], [ %.0271, %240 ]
  %.1 = phi i64 [ %255, %247 ], [ %.0, %242 ], [ %.0, %240 ]
  br i1 %spec.select, label %263, label %257

257:                                              ; preds = %256
  %258 = icmp eq i32 %7, 0
  %259 = getelementptr inbounds i8, ptr %1, i64 140
  %260 = load i32, ptr %259, align 4, !tbaa !23
  br i1 %258, label %261, label %262

261:                                              ; preds = %257
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %260, i32 noundef %4, i64 noundef %.1272) #2
  br label %380

262:                                              ; preds = %257
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %260, i32 noundef %4, i64 noundef %.1) #2
  br label %380

263:                                              ; preds = %256
  %264 = icmp eq i32 %7, 1
  %or.cond7 = and i1 %264, %176
  br i1 %or.cond7, label %.thread334, label %267

.thread334:                                       ; preds = %263
  %265 = getelementptr inbounds i8, ptr %1, i64 140
  %266 = load i32, ptr %265, align 4, !tbaa !23
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %266, i32 noundef %4, i64 noundef %.1) #2
  br label %380

267:                                              ; preds = %263
  %268 = icmp eq i32 %7, 0
  %or.cond9 = and i1 %268, %175
  br i1 %or.cond9, label %269, label %380

269:                                              ; preds = %267
  %270 = getelementptr inbounds i8, ptr %1, i64 140
  %271 = load i32, ptr %270, align 4, !tbaa !23
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %271, i32 noundef %4, i64 noundef %.1272) #2
  br label %380

272:                                              ; preds = %174
  %273 = getelementptr inbounds i8, ptr %3, i64 31
  %274 = load i8, ptr %273, align 1, !tbaa !11
  %275 = icmp eq i8 %274, 1
  br i1 %275, label %276, label %380

276:                                              ; preds = %272
  %277 = getelementptr inbounds i8, ptr %3, i64 29
  %278 = load i16, ptr %277, align 1, !tbaa !16
  switch i16 %278, label %294 [
    i16 5, label %279
    i16 34, label %279
  ]

279:                                              ; preds = %276, %276
  %280 = getelementptr inbounds i8, ptr %3, i64 27
  %281 = load i16, ptr %280, align 1, !tbaa !18
  %282 = and i16 %281, 1
  %.not295 = icmp eq i16 %282, 0
  br i1 %.not295, label %thread-pre-split, label %thread-pre-split.sink.split

thread-pre-split.sink.split:                      ; preds = %279
  %283 = icmp eq i32 %7, 0
  %284 = getelementptr inbounds i8, ptr %1, i64 36
  %285 = load i32, ptr %284, align 4, !tbaa !24
  %286 = getelementptr inbounds i8, ptr %1, i64 140
  %287 = load i32, ptr %286, align 4, !tbaa !23
  %288 = zext i32 %6 to i64
  %.380 = select i1 %283, i64 492, i64 68
  %289 = getelementptr inbounds i8, ptr %2, i64 %.380
  %290 = load i32, ptr %289, align 4, !tbaa !19
  %291 = zext i32 %290 to i64
  %292 = mul nuw nsw i64 %291, %288
  %293 = lshr i64 %292, 3
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %285, i32 noundef %287, i32 noundef %285, i64 noundef %293) #2
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %thread-pre-split.sink.split, %279
  %.pr = load i16, ptr %277, align 1, !tbaa !16
  br label %294

294:                                              ; preds = %thread-pre-split, %276
  %295 = phi i16 [ %.pr, %thread-pre-split ], [ %278, %276 ]
  switch i16 %295, label %333 [
    i16 6, label %296
    i16 35, label %296
    i16 37, label %296
  ]

296:                                              ; preds = %294, %294, %294
  %297 = getelementptr inbounds i8, ptr %3, i64 27
  %298 = load i16, ptr %297, align 1, !tbaa !18
  %299 = and i16 %298, 1
  %.not296 = icmp eq i16 %299, 0
  %.not297 = icmp eq i16 %295, 37
  %or.cond338 = or i1 %.not297, %.not296
  %300 = icmp eq i32 %7, 0
  %301 = getelementptr inbounds i8, ptr %1, i64 140
  %302 = load i32, ptr %301, align 4, !tbaa !23
  %303 = zext i32 %6 to i64
  br i1 %or.cond338, label %317, label %304

304:                                              ; preds = %296
  br i1 %300, label %305, label %311

305:                                              ; preds = %304
  %306 = getelementptr inbounds i8, ptr %2, i64 480
  %307 = load i32, ptr %306, align 4, !tbaa !25
  %308 = zext i32 %307 to i64
  %309 = mul nuw nsw i64 %308, %303
  %310 = lshr i64 %309, 3
  br label %.sink.split

311:                                              ; preds = %304
  %312 = getelementptr inbounds i8, ptr %2, i64 64
  %313 = load i32, ptr %312, align 4, !tbaa !26
  %314 = zext i32 %313 to i64
  %315 = mul nuw nsw i64 %314, %303
  %316 = lshr i64 %315, 3
  br label %.sink.split

317:                                              ; preds = %296
  %318 = getelementptr inbounds i8, ptr %2, i64 8
  %319 = load i32, ptr %318, align 4, !tbaa !27
  %320 = zext i32 %319 to i64
  br i1 %300, label %321, label %327

321:                                              ; preds = %317
  %322 = getelementptr inbounds i8, ptr %2, i64 480
  %323 = load i32, ptr %322, align 4, !tbaa !25
  %324 = zext i32 %323 to i64
  %325 = mul nuw nsw i64 %324, %303
  %326 = mul nuw nsw i64 %325, %320
  br label %.sink.split

327:                                              ; preds = %317
  %328 = getelementptr inbounds i8, ptr %3, i64 8
  %329 = load i32, ptr %328, align 1, !tbaa !28
  %330 = zext i32 %329 to i64
  %331 = mul nuw nsw i64 %330, %303
  %332 = mul nuw nsw i64 %331, %320
  br label %.sink.split

.sink.split:                                      ; preds = %321, %327, %305, %311
  %.sink381 = phi i64 [ %316, %311 ], [ %310, %305 ], [ %332, %327 ], [ %326, %321 ]
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %302, i32 noundef %4, i64 noundef %.sink381) #2
  br label %333

333:                                              ; preds = %.sink.split, %294
  %334 = load i16, ptr %277, align 1, !tbaa !16
  %335 = icmp eq i16 %334, 25
  br i1 %335, label %336, label %351

336:                                              ; preds = %333
  %337 = getelementptr inbounds i8, ptr %3, i64 27
  %338 = load i16, ptr %337, align 1, !tbaa !18
  %339 = and i16 %338, 1
  %.not298 = icmp eq i16 %339, 0
  br i1 %.not298, label %thread-pre-split336, label %thread-pre-split336.sink.split

thread-pre-split336.sink.split:                   ; preds = %336
  %340 = icmp eq i32 %7, 0
  %341 = getelementptr inbounds i8, ptr %1, i64 52
  %342 = load i32, ptr %341, align 4, !tbaa !29
  %343 = getelementptr inbounds i8, ptr %1, i64 140
  %344 = load i32, ptr %343, align 4, !tbaa !23
  %345 = zext i32 %6 to i64
  %.382 = select i1 %340, i64 492, i64 68
  %346 = getelementptr inbounds i8, ptr %2, i64 %.382
  %347 = load i32, ptr %346, align 4, !tbaa !19
  %348 = zext i32 %347 to i64
  %349 = mul nuw nsw i64 %348, %345
  %350 = lshr i64 %349, 3
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %342, i32 noundef %344, i32 noundef %342, i64 noundef %350) #2
  br label %thread-pre-split336

thread-pre-split336:                              ; preds = %thread-pre-split336.sink.split, %336
  %.pr337 = load i16, ptr %277, align 1, !tbaa !16
  br label %351

351:                                              ; preds = %thread-pre-split336, %333
  %352 = phi i16 [ %.pr337, %thread-pre-split336 ], [ %334, %333 ]
  %353 = icmp eq i16 %352, 26
  br i1 %353, label %354, label %380

354:                                              ; preds = %351
  %355 = getelementptr inbounds i8, ptr %3, i64 27
  %356 = load i16, ptr %355, align 1, !tbaa !18
  %357 = and i16 %356, 1
  %.not299 = icmp eq i16 %357, 0
  br i1 %.not299, label %375, label %358

358:                                              ; preds = %354
  %359 = icmp eq i32 %7, 0
  %360 = getelementptr inbounds i8, ptr %1, i64 140
  %361 = load i32, ptr %360, align 4, !tbaa !23
  %362 = zext i32 %6 to i64
  br i1 %359, label %363, label %369

363:                                              ; preds = %358
  %364 = getelementptr inbounds i8, ptr %2, i64 480
  %365 = load i32, ptr %364, align 4, !tbaa !25
  %366 = zext i32 %365 to i64
  %367 = mul nuw nsw i64 %366, %362
  %368 = lshr i64 %367, 3
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %361, i32 noundef %4, i64 noundef %368) #2
  br label %380

369:                                              ; preds = %358
  %370 = getelementptr inbounds i8, ptr %2, i64 64
  %371 = load i32, ptr %370, align 4, !tbaa !26
  %372 = zext i32 %371 to i64
  %373 = mul nuw nsw i64 %372, %362
  %374 = lshr i64 %373, 3
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %5, i32 noundef %4, i32 noundef %361, i32 noundef %4, i64 noundef %374) #2
  br label %380

375:                                              ; preds = %354
  %376 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !19
  %377 = icmp ugt i32 %376, 1
  %378 = load i32, ptr @libxsmm_verbosity, align 4
  %379 = select i1 %377, i32 %378, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90045, ptr noundef nonnull @__func__.libxsmm_generator_mateltwise_unary_binary_adjust_in_microkernel_addr_aarch64_gp_reg, ptr noundef nonnull @.str, i32 noundef 274, i32 noundef %379) #2
  br label %380

380:                                              ; preds = %.thread334, %351, %363, %369, %272, %267, %269, %261, %262, %375
  ret void
}

attributes #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 #1 = { 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 #2 = { 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, !7, i64 4}
!6 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 8}
!11 = !{!12, !8, i64 31}
!12 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !13, i64 27, !13, i64 29, !8, i64 31}
!13 = !{!"short", !8, i64 0}
!14 = !{!6, !7, i64 12}
!15 = !{!6, !7, i64 24}
!16 = !{!12, !13, i64 29}
!17 = !{!6, !7, i64 28}
!18 = !{!12, !13, i64 27}
!19 = !{!7, !7, i64 0}
!20 = !{!12, !7, i64 20}
!21 = !{!22, !7, i64 68}
!22 = !{!"libxsmm_mateltwise_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !7, i64 404, !7, i64 408, !7, i64 412, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428, !7, i64 432, !7, i64 436, !7, i64 440, !7, i64 444, !7, i64 448, !7, i64 452, !7, i64 456, !7, i64 460, !7, i64 464, !7, i64 468, !7, i64 472, !7, i64 476, !7, i64 480, !7, i64 484, !7, i64 488, !7, i64 492, !7, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !8, i64 512}
!23 = !{!6, !7, i64 140}
!24 = !{!6, !7, i64 36}
!25 = !{!22, !7, i64 480}
!26 = !{!22, !7, i64 64}
!27 = !{!22, !7, i64 8}
!28 = !{!12, !7, i64 8}
!29 = !{!6, !7, i64 52}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass