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

; 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 [94 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_generator_unary_binary_rv64_microkernel = external hidden unnamed_addr constant [48 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_vlens(ptr noundef, ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_M_N_blocking(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_loop_order(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_configure_rv64_kernel_vregs_masks(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_finalize_kernel_vregs_rv64_masks(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_rv64_binary_2d_microkernel(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_unary_binary_rv64_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca 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 i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store i32 32, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  store i32 17, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  store i32 127, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  store i32 127, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store i32 32, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store i32 80, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store i32 128, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store i32 176, ptr %33, align 4, !tbaa !9
  %35 = load i32, ptr %27, align 4, !tbaa !9
  %36 = load i32, ptr %28, align 4, !tbaa !9
  %37 = load i32, ptr %29, align 4, !tbaa !9
  %38 = load ptr, ptr %10, align 8, !tbaa !5
  %39 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %38, i32 noundef 0)
  %40 = icmp eq i32 1, %39
  br i1 %40, label %61, label %41

41:                                               ; preds = %5
  %42 = load ptr, ptr %10, align 8, !tbaa !5
  %43 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %42, i32 noundef 0)
  %44 = icmp eq i32 9, %43
  br i1 %44, label %61, label %45

45:                                               ; preds = %41
  %46 = load ptr, ptr %10, align 8, !tbaa !5
  %47 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %46, i32 noundef 0)
  %48 = icmp eq i32 8, %47
  br i1 %48, label %61, label %49

49:                                               ; preds = %45
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %50, i32 noundef 0)
  %52 = icmp eq i32 2, %51
  br i1 %52, label %61, label %53

53:                                               ; preds = %49
  %54 = load ptr, ptr %10, align 8, !tbaa !5
  %55 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %54, i32 noundef 0)
  %56 = icmp eq i32 11, %55
  br i1 %56, label %61, label %57

57:                                               ; preds = %53
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %58, i32 noundef 0)
  %60 = icmp eq i32 10, %59
  br i1 %60, label %61, label %73

61:                                               ; preds = %57, %53, %49, %45, %41, %5
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %62, i32 noundef 3)
  %64 = icmp eq i32 1, %63
  br i1 %64, label %137, label %65

65:                                               ; preds = %61
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %66, i32 noundef 3)
  %68 = icmp eq i32 2, %67
  br i1 %68, label %137, label %69

69:                                               ; preds = %65
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %70, i32 noundef 3)
  %72 = icmp eq i32 11, %71
  br i1 %72, label %137, label %73

73:                                               ; preds = %69, %57
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %74, i32 noundef 0)
  %76 = icmp eq i32 10, %75
  br i1 %76, label %77, label %81

77:                                               ; preds = %73
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %78, i32 noundef 3)
  %80 = icmp eq i32 1, %79
  br i1 %80, label %137, label %81

81:                                               ; preds = %77, %73
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %82, i32 noundef 0)
  %84 = icmp eq i32 11, %83
  br i1 %84, label %85, label %89

85:                                               ; preds = %81
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %86, i32 noundef 3)
  %88 = icmp eq i32 1, %87
  br i1 %88, label %137, label %89

89:                                               ; preds = %85, %81
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %90, i32 noundef 0)
  %92 = icmp eq i32 11, %91
  br i1 %92, label %93, label %97

93:                                               ; preds = %89
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %94, i32 noundef 3)
  %96 = icmp eq i32 8, %95
  br i1 %96, label %137, label %97

97:                                               ; preds = %93, %89
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %98, i32 noundef 0)
  %100 = icmp eq i32 11, %99
  br i1 %100, label %101, label %105

101:                                              ; preds = %97
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %102, i32 noundef 3)
  %104 = icmp eq i32 9, %103
  br i1 %104, label %137, label %105

105:                                              ; preds = %101, %97
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %106, i32 noundef 0)
  %108 = icmp eq i32 1, %107
  br i1 %108, label %109, label %113

109:                                              ; preds = %105
  %110 = load ptr, ptr %10, align 8, !tbaa !5
  %111 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %110, i32 noundef 3)
  %112 = icmp eq i32 10, %111
  br i1 %112, label %137, label %113

113:                                              ; preds = %109, %105
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %114, i32 noundef 0)
  %116 = icmp eq i32 12, %115
  br i1 %116, label %117, label %121

117:                                              ; preds = %113
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %118, i32 noundef 3)
  %120 = icmp eq i32 1, %119
  br i1 %120, label %137, label %121

121:                                              ; preds = %117, %113
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %122, i32 noundef 0)
  %124 = icmp eq i32 1, %123
  br i1 %124, label %125, label %129

125:                                              ; preds = %121
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %126, i32 noundef 3)
  %128 = icmp eq i32 12, %127
  br i1 %128, label %137, label %129

129:                                              ; preds = %125, %121
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %130, i32 noundef 0)
  %132 = icmp eq i32 0, %131
  br i1 %132, label %133, label %138

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

137:                                              ; preds = %133, %125, %117, %109, %101, %93, %85, %77, %69, %65, %61
  br label %147

138:                                              ; preds = %133, %129
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %141 = icmp ult i32 1, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %138
  %143 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %145

144:                                              ; preds = %138
  br label %145

145:                                              ; preds = %144, %142
  %146 = phi i32 [ %143, %142 ], [ 1, %144 ]
  call void @libxsmm_handle_error(ptr noundef %139, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_unary_binary_rv64_microkernel, ptr noundef @.str, i32 noundef 1245, i32 noundef %146)
  store i32 1, ptr %34, align 4
  br label %1258

147:                                              ; preds = %137
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  call void @libxsmm_generator_configure_rv64_vlens(ptr noundef %148, ptr noundef %149)
  %150 = load ptr, ptr %8, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %150, i32 0, i32 1
  store i32 11, ptr %151, align 4, !tbaa !11
  %152 = load ptr, ptr %8, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %152, i32 0, i32 6
  store i32 12, ptr %153, align 4, !tbaa !13
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %154, i32 0, i32 24
  store i32 13, ptr %155, align 4, !tbaa !14
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %156, i32 0, i32 25
  store i32 14, ptr %157, align 4, !tbaa !15
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %158, i32 0, i32 35
  store i32 15, ptr %159, align 4, !tbaa !16
  %160 = load ptr, ptr %8, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %160, i32 0, i32 36
  store i32 16, ptr %161, align 4, !tbaa !17
  %162 = load ptr, ptr %10, 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 !18
  %165 = zext i8 %164 to i32
  %166 = icmp eq i32 %165, 2
  br i1 %166, label %167, label %170

167:                                              ; preds = %147
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %168, i32 0, i32 2
  store i32 17, ptr %169, align 4, !tbaa !21
  br label %328

170:                                              ; preds = %147
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %171, i32 0, i32 10
  %173 = load i16, ptr %172, align 1, !tbaa !22
  %174 = zext i16 %173 to i32
  %175 = icmp eq i32 %174, 63
  br i1 %175, label %176, label %179

176:                                              ; preds = %170
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %177, i32 0, i32 7
  store i32 12, ptr %178, align 4, !tbaa !23
  br label %179

179:                                              ; preds = %176, %170
  %180 = load ptr, ptr %10, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %180, i32 0, i32 10
  %182 = load i16, ptr %181, align 1, !tbaa !22
  %183 = zext i16 %182 to i32
  %184 = icmp eq i32 %183, 5
  br i1 %184, label %203, label %185

185:                                              ; preds = %179
  %186 = load ptr, ptr %10, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %186, i32 0, i32 10
  %188 = load i16, ptr %187, align 1, !tbaa !22
  %189 = zext i16 %188 to i32
  %190 = icmp eq i32 %189, 6
  br i1 %190, label %203, label %191

191:                                              ; preds = %185
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %192, i32 0, i32 10
  %194 = load i16, ptr %193, align 1, !tbaa !22
  %195 = zext i16 %194 to i32
  %196 = icmp eq i32 %195, 34
  br i1 %196, label %203, label %197

197:                                              ; preds = %191
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %198, i32 0, i32 10
  %200 = load i16, ptr %199, align 1, !tbaa !22
  %201 = zext i16 %200 to i32
  %202 = icmp eq i32 %201, 35
  br i1 %202, label %203, label %206

203:                                              ; preds = %197, %191, %185, %179
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %204, i32 0, i32 9
  store i32 12, ptr %205, align 4, !tbaa !24
  br label %206

206:                                              ; preds = %203, %197
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %207, i32 0, i32 10
  %209 = load i16, ptr %208, align 1, !tbaa !22
  %210 = zext i16 %209 to i32
  %211 = icmp eq i32 %210, 36
  br i1 %211, label %218, label %212

212:                                              ; preds = %206
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %213, i32 0, i32 10
  %215 = load i16, ptr %214, align 1, !tbaa !22
  %216 = zext i16 %215 to i32
  %217 = icmp eq i32 %216, 37
  br i1 %217, label %218, label %223

218:                                              ; preds = %212, %206
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %219, i32 0, i32 9
  store i32 12, ptr %220, align 4, !tbaa !24
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %221, i32 0, i32 10
  store i32 13, ptr %222, align 4, !tbaa !25
  br label %223

223:                                              ; preds = %218, %212
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %224, i32 0, i32 10
  %226 = load i16, ptr %225, align 1, !tbaa !22
  %227 = zext i16 %226 to i32
  %228 = icmp eq i32 %227, 34
  br i1 %228, label %235, label %229

229:                                              ; preds = %223
  %230 = load ptr, ptr %10, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %230, i32 0, i32 10
  %232 = load i16, ptr %231, align 1, !tbaa !22
  %233 = zext i16 %232 to i32
  %234 = icmp eq i32 %233, 35
  br i1 %234, label %235, label %238

235:                                              ; preds = %229, %223
  %236 = load ptr, ptr %8, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %236, i32 0, i32 10
  store i32 13, ptr %237, align 4, !tbaa !25
  br label %238

238:                                              ; preds = %235, %229
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %239, i32 0, i32 10
  %241 = load i16, ptr %240, align 1, !tbaa !22
  %242 = zext i16 %241 to i32
  %243 = icmp eq i32 %242, 33
  br i1 %243, label %244, label %247

244:                                              ; preds = %238
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %245, i32 0, i32 11
  store i32 12, ptr %246, align 4, !tbaa !26
  br label %247

247:                                              ; preds = %244, %238
  %248 = load ptr, ptr %10, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %248, i32 0, i32 10
  %250 = load i16, ptr %249, align 1, !tbaa !22
  %251 = zext i16 %250 to i32
  %252 = icmp eq i32 %251, 64
  br i1 %252, label %253, label %258

253:                                              ; preds = %247
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %254, i32 0, i32 11
  store i32 12, ptr %255, align 4, !tbaa !26
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %256, i32 0, i32 19
  store i32 14, ptr %257, align 4, !tbaa !27
  br label %258

258:                                              ; preds = %253, %247
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %259, i32 0, i32 10
  %261 = load i16, ptr %260, align 1, !tbaa !22
  %262 = zext i16 %261 to i32
  %263 = icmp eq i32 %262, 65
  br i1 %263, label %264, label %273

264:                                              ; preds = %258
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %265, i32 0, i32 11
  store i32 12, ptr %266, align 4, !tbaa !26
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %267, i32 0, i32 12
  store i32 13, ptr %268, align 4, !tbaa !28
  %269 = load ptr, ptr %8, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %269, i32 0, i32 19
  store i32 14, ptr %270, align 4, !tbaa !27
  %271 = load ptr, ptr %8, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %271, i32 0, i32 22
  store i32 15, ptr %272, align 4, !tbaa !29
  br label %273

273:                                              ; preds = %264, %258
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %274, i32 0, i32 10
  %276 = load i16, ptr %275, align 1, !tbaa !22
  %277 = zext i16 %276 to i32
  %278 = icmp eq i32 %277, 25
  br i1 %278, label %285, label %279

279:                                              ; preds = %273
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %280, i32 0, i32 10
  %282 = load i16, ptr %281, align 1, !tbaa !22
  %283 = zext i16 %282 to i32
  %284 = icmp eq i32 %283, 26
  br i1 %284, label %285, label %302

285:                                              ; preds = %279, %273
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %286, i32 0, i32 13
  store i32 12, ptr %287, align 4, !tbaa !30
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %288, i32 0, i32 14
  store i32 13, ptr %289, align 4, !tbaa !31
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %290, i32 0, i32 10
  %292 = load i16, ptr %291, align 1, !tbaa !22
  %293 = zext i16 %292 to i32
  %294 = icmp eq i32 %293, 25
  br i1 %294, label %295, label %298

295:                                              ; preds = %285
  %296 = load ptr, ptr %8, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %296, i32 0, i32 15
  store i32 14, ptr %297, align 4, !tbaa !32
  br label %301

298:                                              ; preds = %285
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %299, i32 0, i32 15
  store i32 127, ptr %300, align 4, !tbaa !32
  br label %301

301:                                              ; preds = %298, %295
  br label %309

302:                                              ; preds = %279
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %303, i32 0, i32 13
  store i32 127, ptr %304, align 4, !tbaa !30
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %305, i32 0, i32 14
  store i32 127, ptr %306, align 4, !tbaa !31
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %307, i32 0, i32 15
  store i32 127, ptr %308, align 4, !tbaa !32
  br label %309

309:                                              ; preds = %302, %301
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %310, i32 0, i32 10
  %312 = load i16, ptr %311, align 1, !tbaa !22
  %313 = zext i16 %312 to i32
  %314 = icmp eq i32 %313, 42
  br i1 %314, label %321, label %315

315:                                              ; preds = %309
  %316 = load ptr, ptr %10, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %316, i32 0, i32 10
  %318 = load i16, ptr %317, align 1, !tbaa !22
  %319 = zext i16 %318 to i32
  %320 = icmp eq i32 %319, 43
  br i1 %320, label %321, label %324

321:                                              ; preds = %315, %309
  %322 = load ptr, ptr %8, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %322, i32 0, i32 34
  store i32 12, ptr %323, align 4, !tbaa !33
  br label %327

324:                                              ; preds = %315
  %325 = load ptr, ptr %8, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %325, i32 0, i32 34
  store i32 127, ptr %326, align 4, !tbaa !33
  br label %327

327:                                              ; preds = %324, %321
  br label %328

328:                                              ; preds = %327, %167
  %329 = load ptr, ptr %10, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %329, i32 0, i32 11
  %331 = load i8, ptr %330, align 1, !tbaa !18
  %332 = zext i8 %331 to i32
  %333 = icmp eq i32 %332, 1
  br i1 %333, label %334, label %635

334:                                              ; preds = %328
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %336, i32 0, i32 0
  %338 = load i32, ptr %337, align 4, !tbaa !34
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %339, i32 0, i32 1
  %341 = load i32, ptr %340, align 4, !tbaa !11
  %342 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %335, i32 noundef 12291, i32 noundef %338, i32 noundef %341, i32 noundef %342)
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %344, i32 0, i32 0
  %346 = load i32, ptr %345, align 4, !tbaa !34
  %347 = load ptr, ptr %8, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %347, i32 0, i32 6
  %349 = load i32, ptr %348, align 4, !tbaa !13
  %350 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %343, i32 noundef 12291, i32 noundef %346, i32 noundef %349, i32 noundef %350)
  %351 = load ptr, ptr %10, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %351, i32 0, i32 10
  %353 = load i16, ptr %352, align 1, !tbaa !22
  %354 = zext i16 %353 to i32
  %355 = icmp eq i32 %354, 63
  br i1 %355, label %356, label %366

356:                                              ; preds = %334
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  %358 = load ptr, ptr %8, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %358, i32 0, i32 0
  %360 = load i32, ptr %359, align 4, !tbaa !34
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %361, i32 0, i32 7
  %363 = load i32, ptr %362, align 4, !tbaa !23
  %364 = load i32, ptr %31, align 4, !tbaa !9
  %365 = add nsw i32 %364, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %357, i32 noundef 8195, i32 noundef %360, i32 noundef %363, i32 noundef %365)
  br label %634

366:                                              ; preds = %334
  %367 = load ptr, ptr %10, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %367, i32 0, i32 10
  %369 = load i16, ptr %368, align 1, !tbaa !22
  %370 = zext i16 %369 to i32
  %371 = icmp eq i32 %370, 5
  br i1 %371, label %372, label %382

372:                                              ; preds = %366
  %373 = load ptr, ptr %6, align 8, !tbaa !5
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %374, i32 0, i32 0
  %376 = load i32, ptr %375, align 4, !tbaa !34
  %377 = load ptr, ptr %8, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %377, i32 0, i32 9
  %379 = load i32, ptr %378, align 4, !tbaa !24
  %380 = load i32, ptr %31, align 4, !tbaa !9
  %381 = add nsw i32 %380, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %373, i32 noundef 8195, i32 noundef %376, i32 noundef %379, i32 noundef %381)
  br label %633

382:                                              ; preds = %366
  %383 = load ptr, ptr %10, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %383, i32 0, i32 10
  %385 = load i16, ptr %384, align 1, !tbaa !22
  %386 = zext i16 %385 to i32
  %387 = icmp eq i32 %386, 6
  br i1 %387, label %388, label %398

388:                                              ; preds = %382
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %390, i32 0, i32 0
  %392 = load i32, ptr %391, align 4, !tbaa !34
  %393 = load ptr, ptr %8, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %393, i32 0, i32 9
  %395 = load i32, ptr %394, align 4, !tbaa !24
  %396 = load i32, ptr %30, align 4, !tbaa !9
  %397 = add nsw i32 %396, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %389, i32 noundef 8195, i32 noundef %392, i32 noundef %395, i32 noundef %397)
  br label %632

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

404:                                              ; preds = %398
  %405 = load ptr, ptr %6, align 8, !tbaa !5
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %406, i32 0, i32 0
  %408 = load i32, ptr %407, align 4, !tbaa !34
  %409 = load ptr, ptr %8, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %409, i32 0, i32 10
  %411 = load i32, ptr %410, align 4, !tbaa !25
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %405, i32 noundef 8195, i32 noundef %408, i32 noundef %411, i32 noundef 0)
  br label %631

412:                                              ; preds = %398
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %413, i32 0, i32 10
  %415 = load i16, ptr %414, align 1, !tbaa !22
  %416 = zext i16 %415 to i32
  %417 = icmp eq i32 %416, 37
  br i1 %417, label %418, label %435

418:                                              ; preds = %412
  %419 = load ptr, ptr %6, align 8, !tbaa !5
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %420, i32 0, i32 0
  %422 = load i32, ptr %421, align 4, !tbaa !34
  %423 = load ptr, ptr %8, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %423, i32 0, i32 9
  %425 = load i32, ptr %424, align 4, !tbaa !24
  %426 = load i32, ptr %30, align 4, !tbaa !9
  %427 = add nsw i32 %426, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %419, i32 noundef 8195, i32 noundef %422, i32 noundef %425, i32 noundef %427)
  %428 = load ptr, ptr %6, align 8, !tbaa !5
  %429 = load ptr, ptr %8, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %429, i32 0, i32 0
  %431 = load i32, ptr %430, align 4, !tbaa !34
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %432, i32 0, i32 10
  %434 = load i32, ptr %433, align 4, !tbaa !25
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %428, i32 noundef 8195, i32 noundef %431, i32 noundef %434, i32 noundef 0)
  br label %630

435:                                              ; preds = %412
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %436, i32 0, i32 10
  %438 = load i16, ptr %437, align 1, !tbaa !22
  %439 = zext i16 %438 to i32
  %440 = icmp eq i32 %439, 34
  br i1 %440, label %441, label %458

441:                                              ; preds = %435
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = load ptr, ptr %8, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %443, i32 0, i32 0
  %445 = load i32, ptr %444, align 4, !tbaa !34
  %446 = load ptr, ptr %8, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %446, i32 0, i32 10
  %448 = load i32, ptr %447, align 4, !tbaa !25
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %442, i32 noundef 8195, i32 noundef %445, i32 noundef %448, i32 noundef 0)
  %449 = load ptr, ptr %6, align 8, !tbaa !5
  %450 = load ptr, ptr %8, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %450, i32 0, i32 0
  %452 = load i32, ptr %451, align 4, !tbaa !34
  %453 = load ptr, ptr %8, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %453, i32 0, i32 9
  %455 = load i32, ptr %454, align 4, !tbaa !24
  %456 = load i32, ptr %31, align 4, !tbaa !9
  %457 = add nsw i32 %456, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %449, i32 noundef 8195, i32 noundef %452, i32 noundef %455, i32 noundef %457)
  br label %629

458:                                              ; preds = %435
  %459 = load ptr, ptr %10, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %459, i32 0, i32 10
  %461 = load i16, ptr %460, align 1, !tbaa !22
  %462 = zext i16 %461 to i32
  %463 = icmp eq i32 %462, 35
  br i1 %463, label %464, label %481

464:                                              ; preds = %458
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = load ptr, ptr %8, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %466, i32 0, i32 0
  %468 = load i32, ptr %467, align 4, !tbaa !34
  %469 = load ptr, ptr %8, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %469, i32 0, i32 9
  %471 = load i32, ptr %470, align 4, !tbaa !24
  %472 = load i32, ptr %30, align 4, !tbaa !9
  %473 = add nsw i32 %472, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %465, i32 noundef 8195, i32 noundef %468, i32 noundef %471, i32 noundef %473)
  %474 = load ptr, ptr %6, align 8, !tbaa !5
  %475 = load ptr, ptr %8, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %475, i32 0, i32 0
  %477 = load i32, ptr %476, align 4, !tbaa !34
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %478, i32 0, i32 10
  %480 = load i32, ptr %479, align 4, !tbaa !25
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %474, i32 noundef 8195, i32 noundef %477, i32 noundef %480, i32 noundef 0)
  br label %628

481:                                              ; preds = %458
  %482 = load ptr, ptr %10, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %482, i32 0, i32 10
  %484 = load i16, ptr %483, align 1, !tbaa !22
  %485 = zext i16 %484 to i32
  %486 = icmp eq i32 %485, 33
  br i1 %486, label %487, label %504

487:                                              ; preds = %481
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %489, i32 0, i32 0
  %491 = load i32, ptr %490, align 4, !tbaa !34
  %492 = load ptr, ptr %8, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %492, i32 0, i32 11
  %494 = load i32, ptr %493, align 4, !tbaa !26
  %495 = load i32, ptr %31, align 4, !tbaa !9
  %496 = add nsw i32 %495, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %488, i32 noundef 8195, i32 noundef %491, i32 noundef %494, i32 noundef %496)
  %497 = load ptr, ptr %6, align 8, !tbaa !5
  %498 = load ptr, ptr %8, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %498, i32 0, i32 11
  %500 = load i32, ptr %499, align 4, !tbaa !26
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %501, i32 0, i32 11
  %503 = load i32, ptr %502, align 4, !tbaa !26
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %497, i32 noundef 8195, i32 noundef %500, i32 noundef %503, i32 noundef 0)
  br label %627

504:                                              ; preds = %481
  %505 = load ptr, ptr %10, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %505, i32 0, i32 10
  %507 = load i16, ptr %506, align 1, !tbaa !22
  %508 = zext i16 %507 to i32
  %509 = icmp eq i32 %508, 64
  br i1 %509, label %510, label %520

510:                                              ; preds = %504
  %511 = load ptr, ptr %6, align 8, !tbaa !5
  %512 = load ptr, ptr %8, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %512, i32 0, i32 0
  %514 = load i32, ptr %513, align 4, !tbaa !34
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %515, i32 0, i32 11
  %517 = load i32, ptr %516, align 4, !tbaa !26
  %518 = load i32, ptr %31, align 4, !tbaa !9
  %519 = add nsw i32 %518, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %511, i32 noundef 8195, i32 noundef %514, i32 noundef %517, i32 noundef %519)
  br label %626

520:                                              ; preds = %504
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %521, i32 0, i32 10
  %523 = load i16, ptr %522, align 1, !tbaa !22
  %524 = zext i16 %523 to i32
  %525 = icmp eq i32 %524, 65
  br i1 %525, label %526, label %536

526:                                              ; preds = %520
  %527 = load ptr, ptr %6, align 8, !tbaa !5
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %528, i32 0, i32 0
  %530 = load i32, ptr %529, align 4, !tbaa !34
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %531, i32 0, i32 11
  %533 = load i32, ptr %532, align 4, !tbaa !26
  %534 = load i32, ptr %31, align 4, !tbaa !9
  %535 = add nsw i32 %534, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %527, i32 noundef 8195, i32 noundef %530, i32 noundef %533, i32 noundef %535)
  br label %625

536:                                              ; preds = %520
  %537 = load ptr, ptr %10, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %537, i32 0, i32 10
  %539 = load i16, ptr %538, align 1, !tbaa !22
  %540 = zext i16 %539 to i32
  %541 = icmp eq i32 %540, 25
  br i1 %541, label %542, label %566

542:                                              ; preds = %536
  %543 = load ptr, ptr %6, align 8, !tbaa !5
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %544, i32 0, i32 0
  %546 = load i32, ptr %545, align 4, !tbaa !34
  %547 = load ptr, ptr %8, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %547, i32 0, i32 15
  %549 = load i32, ptr %548, align 4, !tbaa !32
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %543, i32 noundef 8195, i32 noundef %546, i32 noundef %549, i32 noundef 8)
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %551, i32 0, i32 0
  %553 = load i32, ptr %552, align 4, !tbaa !34
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %554, i32 0, i32 14
  %556 = load i32, ptr %555, align 4, !tbaa !31
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %550, i32 noundef 8195, i32 noundef %553, i32 noundef %556, i32 noundef 0)
  %557 = load ptr, ptr %6, align 8, !tbaa !5
  %558 = load ptr, ptr %8, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %558, i32 0, i32 0
  %560 = load i32, ptr %559, align 4, !tbaa !34
  %561 = load ptr, ptr %8, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %561, i32 0, i32 13
  %563 = load i32, ptr %562, align 4, !tbaa !30
  %564 = load i32, ptr %31, align 4, !tbaa !9
  %565 = add nsw i32 %564, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %557, i32 noundef 8195, i32 noundef %560, i32 noundef %563, i32 noundef %565)
  br label %624

566:                                              ; preds = %536
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %567, i32 0, i32 10
  %569 = load i16, ptr %568, align 1, !tbaa !22
  %570 = zext i16 %569 to i32
  %571 = icmp eq i32 %570, 26
  br i1 %571, label %572, label %589

572:                                              ; preds = %566
  %573 = load ptr, ptr %6, align 8, !tbaa !5
  %574 = load ptr, ptr %8, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %574, i32 0, i32 0
  %576 = load i32, ptr %575, align 4, !tbaa !34
  %577 = load ptr, ptr %8, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %577, i32 0, i32 13
  %579 = load i32, ptr %578, align 4, !tbaa !30
  %580 = load i32, ptr %30, align 4, !tbaa !9
  %581 = add nsw i32 %580, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %573, i32 noundef 8195, i32 noundef %576, i32 noundef %579, i32 noundef %581)
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = load ptr, ptr %8, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %583, i32 0, i32 0
  %585 = load i32, ptr %584, align 4, !tbaa !34
  %586 = load ptr, ptr %8, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %586, i32 0, i32 14
  %588 = load i32, ptr %587, align 4, !tbaa !31
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %582, i32 noundef 8195, i32 noundef %585, i32 noundef %588, i32 noundef 0)
  br label %623

589:                                              ; preds = %566
  %590 = load ptr, ptr %10, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %590, i32 0, i32 10
  %592 = load i16, ptr %591, align 1, !tbaa !22
  %593 = zext i16 %592 to i32
  %594 = icmp eq i32 %593, 42
  br i1 %594, label %595, label %605

595:                                              ; preds = %589
  %596 = load ptr, ptr %6, align 8, !tbaa !5
  %597 = load ptr, ptr %8, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %597, i32 0, i32 0
  %599 = load i32, ptr %598, align 4, !tbaa !34
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %600, i32 0, i32 34
  %602 = load i32, ptr %601, align 4, !tbaa !33
  %603 = load i32, ptr %30, align 4, !tbaa !9
  %604 = add nsw i32 %603, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %596, i32 noundef 8195, i32 noundef %599, i32 noundef %602, i32 noundef %604)
  br label %622

605:                                              ; preds = %589
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %606, i32 0, i32 10
  %608 = load i16, ptr %607, align 1, !tbaa !22
  %609 = zext i16 %608 to i32
  %610 = icmp eq i32 %609, 43
  br i1 %610, label %611, label %621

611:                                              ; preds = %605
  %612 = load ptr, ptr %6, align 8, !tbaa !5
  %613 = load ptr, ptr %8, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %613, i32 0, i32 0
  %615 = load i32, ptr %614, align 4, !tbaa !34
  %616 = load ptr, ptr %8, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %616, i32 0, i32 34
  %618 = load i32, ptr %617, align 4, !tbaa !33
  %619 = load i32, ptr %30, align 4, !tbaa !9
  %620 = add nsw i32 %619, 8
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %612, i32 noundef 8195, i32 noundef %615, i32 noundef %618, i32 noundef %620)
  br label %621

621:                                              ; preds = %611, %605
  br label %622

622:                                              ; preds = %621, %595
  br label %623

623:                                              ; preds = %622, %572
  br label %624

624:                                              ; preds = %623, %542
  br label %625

625:                                              ; preds = %624, %526
  br label %626

626:                                              ; preds = %625, %510
  br label %627

627:                                              ; preds = %626, %487
  br label %628

628:                                              ; preds = %627, %464
  br label %629

629:                                              ; preds = %628, %441
  br label %630

630:                                              ; preds = %629, %418
  br label %631

631:                                              ; preds = %630, %404
  br label %632

632:                                              ; preds = %631, %388
  br label %633

633:                                              ; preds = %632, %372
  br label %634

634:                                              ; preds = %633, %356
  br label %716

635:                                              ; preds = %328
  %636 = load ptr, ptr %10, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %636, i32 0, i32 11
  %638 = load i8, ptr %637, align 1, !tbaa !18
  %639 = zext i8 %638 to i32
  %640 = icmp eq i32 %639, 2
  br i1 %640, label %641, label %666

641:                                              ; preds = %635
  %642 = load ptr, ptr %6, align 8, !tbaa !5
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %643, i32 0, i32 0
  %645 = load i32, ptr %644, align 4, !tbaa !34
  %646 = load ptr, ptr %8, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %646, i32 0, i32 1
  %648 = load i32, ptr %647, align 4, !tbaa !11
  %649 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %642, i32 noundef 8195, i32 noundef %645, i32 noundef %648, i32 noundef %649)
  %650 = load ptr, ptr %6, align 8, !tbaa !5
  %651 = load ptr, ptr %8, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %651, i32 0, i32 0
  %653 = load i32, ptr %652, align 4, !tbaa !34
  %654 = load ptr, ptr %8, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %654, i32 0, i32 2
  %656 = load i32, ptr %655, align 4, !tbaa !21
  %657 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %650, i32 noundef 8195, i32 noundef %653, i32 noundef %656, i32 noundef %657)
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = load ptr, ptr %8, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %659, i32 0, i32 0
  %661 = load i32, ptr %660, align 4, !tbaa !34
  %662 = load ptr, ptr %8, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %662, i32 0, i32 6
  %664 = load i32, ptr %663, align 4, !tbaa !13
  %665 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %658, i32 noundef 8195, i32 noundef %661, i32 noundef %664, i32 noundef %665)
  br label %715

666:                                              ; preds = %635
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %667, i32 0, i32 11
  %669 = load i8, ptr %668, align 1, !tbaa !18
  %670 = zext i8 %669 to i32
  %671 = icmp eq i32 %670, 3
  br i1 %671, label %672, label %705

672:                                              ; preds = %666
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = load ptr, ptr %8, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %674, i32 0, i32 0
  %676 = load i32, ptr %675, align 4, !tbaa !34
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %677, i32 0, i32 1
  %679 = load i32, ptr %678, align 4, !tbaa !11
  %680 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %673, i32 noundef 8195, i32 noundef %676, i32 noundef %679, i32 noundef %680)
  %681 = load ptr, ptr %6, align 8, !tbaa !5
  %682 = load ptr, ptr %8, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %682, i32 0, i32 0
  %684 = load i32, ptr %683, align 4, !tbaa !34
  %685 = load ptr, ptr %8, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %685, i32 0, i32 2
  %687 = load i32, ptr %686, align 4, !tbaa !21
  %688 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %681, i32 noundef 8195, i32 noundef %684, i32 noundef %687, i32 noundef %688)
  %689 = load ptr, ptr %6, align 8, !tbaa !5
  %690 = load ptr, ptr %8, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %690, i32 0, i32 0
  %692 = load i32, ptr %691, align 4, !tbaa !34
  %693 = load ptr, ptr %8, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %693, i32 0, i32 3
  %695 = load i32, ptr %694, align 4, !tbaa !35
  %696 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %689, i32 noundef 8195, i32 noundef %692, i32 noundef %695, i32 noundef %696)
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %698, i32 0, i32 0
  %700 = load i32, ptr %699, align 4, !tbaa !34
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %701, i32 0, i32 6
  %703 = load i32, ptr %702, align 4, !tbaa !13
  %704 = load i32, ptr %33, align 4, !tbaa !9
  call void @libxsmm_rv64_instruction_alu_move(ptr noundef %697, i32 noundef 8195, i32 noundef %700, i32 noundef %703, i32 noundef %704)
  br label %714

705:                                              ; preds = %666
  %706 = load ptr, ptr %6, align 8, !tbaa !5
  %707 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %708 = icmp ult i32 1, %707
  br i1 %708, label %709, label %711

709:                                              ; preds = %705
  %710 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %712

711:                                              ; preds = %705
  br label %712

712:                                              ; preds = %711, %709
  %713 = phi i32 [ %710, %709 ], [ 1, %711 ]
  call void @libxsmm_handle_error(ptr noundef %706, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_unary_binary_rv64_microkernel, ptr noundef @.str, i32 noundef 1373, i32 noundef %713)
  br label %714

714:                                              ; preds = %712, %672
  br label %715

715:                                              ; preds = %714, %641
  br label %716

716:                                              ; preds = %715, %634
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = load ptr, ptr %9, align 8, !tbaa !5
  %719 = load ptr, ptr %10, align 8, !tbaa !5
  %720 = load ptr, ptr %8, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %720, i32 0, i32 35
  %722 = load i32, ptr %721, align 4, !tbaa !16
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %723, i32 0, i32 36
  %725 = load i32, ptr %724, align 4, !tbaa !17
  %726 = load i32, ptr %28, align 4, !tbaa !9
  %727 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_configure_rv64_kernel_vregs_masks(ptr noundef %717, ptr noundef %718, ptr noundef %719, i32 noundef %722, i32 noundef %725, i32 noundef %726, i32 noundef %727)
  %728 = load i32, ptr %26, align 4, !tbaa !9
  %729 = load ptr, ptr %9, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %729, i32 0, i32 18
  %731 = load i32, ptr %730, align 4, !tbaa !36
  %732 = sub i32 %728, %731
  store i32 %732, ptr %26, align 4, !tbaa !9
  %733 = load ptr, ptr %6, align 8, !tbaa !5
  %734 = load ptr, ptr %10, align 8, !tbaa !5
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %735, i32 0, i32 0
  %737 = load i32, ptr %736, align 1, !tbaa !38
  %738 = load ptr, ptr %10, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %738, i32 0, i32 1
  %740 = load i32, ptr %739, align 1, !tbaa !39
  %741 = load ptr, ptr %9, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %741, i32 0, i32 120
  %743 = load i32, ptr %742, align 4, !tbaa !40
  %744 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_generator_configure_rv64_M_N_blocking(ptr noundef %733, ptr noundef %734, i32 noundef %737, i32 noundef %740, i32 noundef %743, ptr noundef %12, ptr noundef %16, i32 noundef %744)
  %745 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_configure_rv64_loop_order(ptr noundef %745, ptr noundef %11, ptr noundef %12, ptr noundef %16, ptr noundef %13, ptr noundef %17, ptr noundef %14, ptr noundef %19)
  %746 = load i32, ptr %11, align 4, !tbaa !9
  %747 = load ptr, ptr %9, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %747, i32 0, i32 125
  store i32 %746, ptr %748, align 4, !tbaa !41
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %1250, %716
  %750 = load i32, ptr %24, align 4, !tbaa !9
  %751 = load i32, ptr %14, align 4, !tbaa !9
  %752 = icmp ne i32 %750, %751
  br i1 %752, label %753, label %1251

753:                                              ; preds = %749
  store i32 0, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %953, %753
  %755 = load i32, ptr %25, align 4, !tbaa !9
  %756 = load i32, ptr %19, align 4, !tbaa !9
  %757 = icmp ne i32 %755, %756
  br i1 %757, label %758, label %954

758:                                              ; preds = %754
  %759 = load i32, ptr %24, align 4, !tbaa !9
  %760 = load i32, ptr %13, align 4, !tbaa !9
  %761 = icmp ult i32 %759, %760
  br i1 %761, label %762, label %764

762:                                              ; preds = %758
  %763 = load i32, ptr %13, align 4, !tbaa !9
  br label %768

764:                                              ; preds = %758
  %765 = load i32, ptr %14, align 4, !tbaa !9
  %766 = load i32, ptr %24, align 4, !tbaa !9
  %767 = sub i32 %765, %766
  br label %768

768:                                              ; preds = %764, %762
  %769 = phi i32 [ %763, %762 ], [ %767, %764 ]
  store i32 %769, ptr %15, align 4, !tbaa !9
  %770 = load i32, ptr %25, align 4, !tbaa !9
  %771 = load i32, ptr %17, align 4, !tbaa !9
  %772 = icmp ult i32 %770, %771
  br i1 %772, label %773, label %775

773:                                              ; preds = %768
  %774 = load i32, ptr %17, align 4, !tbaa !9
  br label %779

775:                                              ; preds = %768
  %776 = load i32, ptr %19, align 4, !tbaa !9
  %777 = load i32, ptr %25, align 4, !tbaa !9
  %778 = sub i32 %776, %777
  br label %779

779:                                              ; preds = %775, %773
  %780 = phi i32 [ %774, %773 ], [ %778, %775 ]
  store i32 %780, ptr %18, align 4, !tbaa !9
  %781 = load i32, ptr %11, align 4, !tbaa !9
  %782 = icmp eq i32 %781, 1
  br i1 %782, label %783, label %785

783:                                              ; preds = %779
  %784 = load i32, ptr %15, align 4, !tbaa !9
  br label %787

785:                                              ; preds = %779
  %786 = load i32, ptr %18, align 4, !tbaa !9
  br label %787

787:                                              ; preds = %785, %783
  %788 = phi i32 [ %784, %783 ], [ %786, %785 ]
  store i32 %788, ptr %20, align 4, !tbaa !9
  %789 = load i32, ptr %11, align 4, !tbaa !9
  %790 = icmp eq i32 %789, 0
  br i1 %790, label %791, label %793

791:                                              ; preds = %787
  %792 = load i32, ptr %15, align 4, !tbaa !9
  br label %795

793:                                              ; preds = %787
  %794 = load i32, ptr %18, align 4, !tbaa !9
  br label %795

795:                                              ; preds = %793, %791
  %796 = phi i32 [ %792, %791 ], [ %794, %793 ]
  store i32 %796, ptr %21, align 4, !tbaa !9
  %797 = load ptr, ptr %6, align 8, !tbaa !5
  %798 = load ptr, ptr %7, align 8, !tbaa !5
  %799 = load ptr, ptr %8, align 8, !tbaa !5
  %800 = load ptr, ptr %9, align 8, !tbaa !5
  %801 = load ptr, ptr %10, align 8, !tbaa !5
  %802 = load i32, ptr %21, align 4, !tbaa !9
  %803 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_unary_rv64_binary_2d_microkernel(ptr noundef %797, ptr noundef %798, ptr noundef %799, ptr noundef %800, ptr noundef %801, i32 noundef %802, i32 noundef %803)
  %804 = load i32, ptr %18, align 4, !tbaa !9
  %805 = load i32, ptr %25, align 4, !tbaa !9
  %806 = add i32 %805, %804
  store i32 %806, ptr %25, align 4, !tbaa !9
  %807 = load i32, ptr %25, align 4, !tbaa !9
  %808 = load i32, ptr %19, align 4, !tbaa !9
  %809 = icmp ne i32 %807, %808
  br i1 %809, label %810, label %953

810:                                              ; preds = %795
  store i32 1, ptr %22, align 4, !tbaa !9
  %811 = load i32, ptr %11, align 4, !tbaa !9
  %812 = icmp eq i32 %811, 1
  %813 = zext i1 %812 to i64
  %814 = select i1 %812, i32 0, i32 1
  store i32 %814, ptr %23, align 4, !tbaa !9
  %815 = load ptr, ptr %6, align 8, !tbaa !5
  %816 = load ptr, ptr %8, align 8, !tbaa !5
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = load ptr, ptr %10, align 8, !tbaa !5
  %819 = load ptr, ptr %8, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %819, i32 0, i32 1
  %821 = load i32, ptr %820, align 4, !tbaa !11
  %822 = load i32, ptr %21, align 4, !tbaa !9
  %823 = load i32, ptr %20, align 4, !tbaa !9
  %824 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %815, ptr noundef %816, ptr noundef %817, ptr noundef %818, i32 noundef %821, i32 noundef 51, i32 noundef %822, i32 noundef %823, i32 noundef %824)
  %825 = load ptr, ptr %6, align 8, !tbaa !5
  %826 = load ptr, ptr %8, align 8, !tbaa !5
  %827 = load ptr, ptr %9, align 8, !tbaa !5
  %828 = load ptr, ptr %10, align 8, !tbaa !5
  %829 = load ptr, ptr %8, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %829, i32 0, i32 6
  %831 = load i32, ptr %830, align 4, !tbaa !13
  %832 = load i32, ptr %21, align 4, !tbaa !9
  %833 = load i32, ptr %20, align 4, !tbaa !9
  %834 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %825, ptr noundef %826, ptr noundef %827, ptr noundef %828, i32 noundef %831, i32 noundef 51, i32 noundef %832, i32 noundef %833, i32 noundef %834)
  %835 = load ptr, ptr %10, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %835, i32 0, i32 11
  %837 = load i8, ptr %836, align 1, !tbaa !18
  %838 = zext i8 %837 to i32
  %839 = icmp eq i32 %838, 1
  br i1 %839, label %840, label %857

840:                                              ; preds = %810
  %841 = load ptr, ptr %10, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %841, i32 0, i32 10
  %843 = load i16, ptr %842, align 1, !tbaa !22
  %844 = zext i16 %843 to i32
  %845 = icmp eq i32 %844, 63
  br i1 %845, label %846, label %857

846:                                              ; preds = %840
  %847 = load ptr, ptr %6, align 8, !tbaa !5
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  %849 = load ptr, ptr %9, align 8, !tbaa !5
  %850 = load ptr, ptr %10, align 8, !tbaa !5
  %851 = load ptr, ptr %8, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %851, i32 0, i32 7
  %853 = load i32, ptr %852, align 4, !tbaa !23
  %854 = load i32, ptr %21, align 4, !tbaa !9
  %855 = load i32, ptr %20, align 4, !tbaa !9
  %856 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %847, ptr noundef %848, ptr noundef %849, ptr noundef %850, i32 noundef %853, i32 noundef 51, i32 noundef %854, i32 noundef %855, i32 noundef %856)
  br label %857

857:                                              ; preds = %846, %840, %810
  %858 = load ptr, ptr %10, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %858, i32 0, i32 11
  %860 = load i8, ptr %859, align 1, !tbaa !18
  %861 = zext i8 %860 to i32
  %862 = icmp eq i32 %861, 2
  br i1 %862, label %863, label %874

863:                                              ; preds = %857
  %864 = load ptr, ptr %6, align 8, !tbaa !5
  %865 = load ptr, ptr %8, align 8, !tbaa !5
  %866 = load ptr, ptr %9, align 8, !tbaa !5
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = load ptr, ptr %8, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %868, i32 0, i32 2
  %870 = load i32, ptr %869, align 4, !tbaa !21
  %871 = load i32, ptr %21, align 4, !tbaa !9
  %872 = load i32, ptr %20, align 4, !tbaa !9
  %873 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %864, ptr noundef %865, ptr noundef %866, ptr noundef %867, i32 noundef %870, i32 noundef 51, i32 noundef %871, i32 noundef %872, i32 noundef %873)
  br label %874

874:                                              ; preds = %863, %857
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %875, i32 0, i32 11
  %877 = load i8, ptr %876, align 1, !tbaa !18
  %878 = zext i8 %877 to i32
  %879 = icmp eq i32 %878, 1
  br i1 %879, label %880, label %952

880:                                              ; preds = %874
  %881 = load ptr, ptr %10, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %881, i32 0, i32 10
  %883 = load i16, ptr %882, align 1, !tbaa !22
  %884 = zext i16 %883 to i32
  %885 = icmp eq i32 %884, 5
  br i1 %885, label %916, label %886

886:                                              ; preds = %880
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %887, i32 0, i32 10
  %889 = load i16, ptr %888, align 1, !tbaa !22
  %890 = zext i16 %889 to i32
  %891 = icmp eq i32 %890, 6
  br i1 %891, label %916, label %892

892:                                              ; preds = %886
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %893, i32 0, i32 10
  %895 = load i16, ptr %894, align 1, !tbaa !22
  %896 = zext i16 %895 to i32
  %897 = icmp eq i32 %896, 34
  br i1 %897, label %916, label %898

898:                                              ; preds = %892
  %899 = load ptr, ptr %10, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %899, i32 0, i32 10
  %901 = load i16, ptr %900, align 1, !tbaa !22
  %902 = zext i16 %901 to i32
  %903 = icmp eq i32 %902, 35
  br i1 %903, label %916, label %904

904:                                              ; preds = %898
  %905 = load ptr, ptr %10, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %905, i32 0, i32 10
  %907 = load i16, ptr %906, align 1, !tbaa !22
  %908 = zext i16 %907 to i32
  %909 = icmp eq i32 %908, 36
  br i1 %909, label %916, label %910

910:                                              ; preds = %904
  %911 = load ptr, ptr %10, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %911, i32 0, i32 10
  %913 = load i16, ptr %912, align 1, !tbaa !22
  %914 = zext i16 %913 to i32
  %915 = icmp eq i32 %914, 37
  br i1 %915, label %916, label %927

916:                                              ; preds = %910, %904, %898, %892, %886, %880
  %917 = load ptr, ptr %6, align 8, !tbaa !5
  %918 = load ptr, ptr %8, align 8, !tbaa !5
  %919 = load ptr, ptr %9, align 8, !tbaa !5
  %920 = load ptr, ptr %10, align 8, !tbaa !5
  %921 = load ptr, ptr %8, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %921, i32 0, i32 9
  %923 = load i32, ptr %922, align 4, !tbaa !24
  %924 = load i32, ptr %21, align 4, !tbaa !9
  %925 = load i32, ptr %20, align 4, !tbaa !9
  %926 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %917, ptr noundef %918, ptr noundef %919, ptr noundef %920, i32 noundef %923, i32 noundef 51, i32 noundef %924, i32 noundef %925, i32 noundef %926)
  br label %951

927:                                              ; preds = %910
  %928 = load ptr, ptr %10, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %928, i32 0, i32 10
  %930 = load i16, ptr %929, align 1, !tbaa !22
  %931 = zext i16 %930 to i32
  %932 = icmp eq i32 %931, 25
  br i1 %932, label %939, label %933

933:                                              ; preds = %927
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %934, i32 0, i32 10
  %936 = load i16, ptr %935, align 1, !tbaa !22
  %937 = zext i16 %936 to i32
  %938 = icmp eq i32 %937, 26
  br i1 %938, label %939, label %950

939:                                              ; preds = %933, %927
  %940 = load ptr, ptr %6, align 8, !tbaa !5
  %941 = load ptr, ptr %8, align 8, !tbaa !5
  %942 = load ptr, ptr %9, align 8, !tbaa !5
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = load ptr, ptr %8, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %944, i32 0, i32 13
  %946 = load i32, ptr %945, align 4, !tbaa !30
  %947 = load i32, ptr %21, align 4, !tbaa !9
  %948 = load i32, ptr %20, align 4, !tbaa !9
  %949 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %940, ptr noundef %941, ptr noundef %942, ptr noundef %943, i32 noundef %946, i32 noundef 51, i32 noundef %947, i32 noundef %948, i32 noundef %949)
  br label %950

950:                                              ; preds = %939, %933
  br label %951

951:                                              ; preds = %950, %916
  br label %952

952:                                              ; preds = %951, %874
  br label %953

953:                                              ; preds = %952, %795
  br label %754, !llvm.loop !42

954:                                              ; preds = %754
  %955 = load i32, ptr %22, align 4, !tbaa !9
  %956 = icmp eq i32 %955, 1
  br i1 %956, label %957, label %1100

957:                                              ; preds = %954
  %958 = load i32, ptr %11, align 4, !tbaa !9
  %959 = icmp eq i32 %958, 1
  %960 = zext i1 %959 to i64
  %961 = select i1 %959, i32 0, i32 1
  store i32 %961, ptr %23, align 4, !tbaa !9
  %962 = load ptr, ptr %6, align 8, !tbaa !5
  %963 = load ptr, ptr %8, align 8, !tbaa !5
  %964 = load ptr, ptr %9, align 8, !tbaa !5
  %965 = load ptr, ptr %10, align 8, !tbaa !5
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %966, i32 0, i32 1
  %968 = load i32, ptr %967, align 4, !tbaa !11
  %969 = load i32, ptr %21, align 4, !tbaa !9
  %970 = load i32, ptr %20, align 4, !tbaa !9
  %971 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %962, ptr noundef %963, ptr noundef %964, ptr noundef %965, i32 noundef %968, i32 noundef 1073741875, i32 noundef %969, i32 noundef %970, i32 noundef %971)
  %972 = load ptr, ptr %6, align 8, !tbaa !5
  %973 = load ptr, ptr %8, align 8, !tbaa !5
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = load ptr, ptr %10, align 8, !tbaa !5
  %976 = load ptr, ptr %8, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %976, i32 0, i32 6
  %978 = load i32, ptr %977, align 4, !tbaa !13
  %979 = load i32, ptr %21, align 4, !tbaa !9
  %980 = load i32, ptr %20, align 4, !tbaa !9
  %981 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %972, ptr noundef %973, ptr noundef %974, ptr noundef %975, i32 noundef %978, i32 noundef 1073741875, i32 noundef %979, i32 noundef %980, i32 noundef %981)
  %982 = load ptr, ptr %10, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %982, i32 0, i32 11
  %984 = load i8, ptr %983, align 1, !tbaa !18
  %985 = zext i8 %984 to i32
  %986 = icmp eq i32 %985, 1
  br i1 %986, label %987, label %1004

987:                                              ; preds = %957
  %988 = load ptr, ptr %10, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %988, i32 0, i32 10
  %990 = load i16, ptr %989, align 1, !tbaa !22
  %991 = zext i16 %990 to i32
  %992 = icmp eq i32 %991, 63
  br i1 %992, label %993, label %1004

993:                                              ; preds = %987
  %994 = load ptr, ptr %6, align 8, !tbaa !5
  %995 = load ptr, ptr %8, align 8, !tbaa !5
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = load ptr, ptr %10, align 8, !tbaa !5
  %998 = load ptr, ptr %8, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %998, i32 0, i32 7
  %1000 = load i32, ptr %999, align 4, !tbaa !23
  %1001 = load i32, ptr %21, align 4, !tbaa !9
  %1002 = load i32, ptr %20, align 4, !tbaa !9
  %1003 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %994, ptr noundef %995, ptr noundef %996, ptr noundef %997, i32 noundef %1000, i32 noundef 1073741875, i32 noundef %1001, i32 noundef %1002, i32 noundef %1003)
  br label %1004

1004:                                             ; preds = %993, %987, %957
  %1005 = load ptr, ptr %10, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1005, i32 0, i32 11
  %1007 = load i8, ptr %1006, align 1, !tbaa !18
  %1008 = zext i8 %1007 to i32
  %1009 = icmp eq i32 %1008, 2
  br i1 %1009, label %1010, label %1021

1010:                                             ; preds = %1004
  %1011 = load ptr, ptr %6, align 8, !tbaa !5
  %1012 = load ptr, ptr %8, align 8, !tbaa !5
  %1013 = load ptr, ptr %9, align 8, !tbaa !5
  %1014 = load ptr, ptr %10, align 8, !tbaa !5
  %1015 = load ptr, ptr %8, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1015, i32 0, i32 2
  %1017 = load i32, ptr %1016, align 4, !tbaa !21
  %1018 = load i32, ptr %21, align 4, !tbaa !9
  %1019 = load i32, ptr %20, align 4, !tbaa !9
  %1020 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1011, ptr noundef %1012, ptr noundef %1013, ptr noundef %1014, i32 noundef %1017, i32 noundef 1073741875, i32 noundef %1018, i32 noundef %1019, i32 noundef %1020)
  br label %1021

1021:                                             ; preds = %1010, %1004
  %1022 = load ptr, ptr %10, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1022, i32 0, i32 11
  %1024 = load i8, ptr %1023, align 1, !tbaa !18
  %1025 = zext i8 %1024 to i32
  %1026 = icmp eq i32 %1025, 1
  br i1 %1026, label %1027, label %1099

1027:                                             ; preds = %1021
  %1028 = load ptr, ptr %10, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1028, i32 0, i32 10
  %1030 = load i16, ptr %1029, align 1, !tbaa !22
  %1031 = zext i16 %1030 to i32
  %1032 = icmp eq i32 %1031, 5
  br i1 %1032, label %1063, label %1033

1033:                                             ; preds = %1027
  %1034 = load ptr, ptr %10, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1034, i32 0, i32 10
  %1036 = load i16, ptr %1035, align 1, !tbaa !22
  %1037 = zext i16 %1036 to i32
  %1038 = icmp eq i32 %1037, 6
  br i1 %1038, label %1063, label %1039

1039:                                             ; preds = %1033
  %1040 = load ptr, ptr %10, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1040, i32 0, i32 10
  %1042 = load i16, ptr %1041, align 1, !tbaa !22
  %1043 = zext i16 %1042 to i32
  %1044 = icmp eq i32 %1043, 34
  br i1 %1044, label %1063, label %1045

1045:                                             ; preds = %1039
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1046, i32 0, i32 10
  %1048 = load i16, ptr %1047, align 1, !tbaa !22
  %1049 = zext i16 %1048 to i32
  %1050 = icmp eq i32 %1049, 35
  br i1 %1050, label %1063, label %1051

1051:                                             ; preds = %1045
  %1052 = load ptr, ptr %10, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1052, i32 0, i32 10
  %1054 = load i16, ptr %1053, align 1, !tbaa !22
  %1055 = zext i16 %1054 to i32
  %1056 = icmp eq i32 %1055, 36
  br i1 %1056, label %1063, label %1057

1057:                                             ; preds = %1051
  %1058 = load ptr, ptr %10, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1058, i32 0, i32 10
  %1060 = load i16, ptr %1059, align 1, !tbaa !22
  %1061 = zext i16 %1060 to i32
  %1062 = icmp eq i32 %1061, 37
  br i1 %1062, label %1063, label %1074

1063:                                             ; preds = %1057, %1051, %1045, %1039, %1033, %1027
  %1064 = load ptr, ptr %6, align 8, !tbaa !5
  %1065 = load ptr, ptr %8, align 8, !tbaa !5
  %1066 = load ptr, ptr %9, align 8, !tbaa !5
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  %1068 = load ptr, ptr %8, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1068, i32 0, i32 9
  %1070 = load i32, ptr %1069, align 4, !tbaa !24
  %1071 = load i32, ptr %21, align 4, !tbaa !9
  %1072 = load i32, ptr %20, align 4, !tbaa !9
  %1073 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1064, ptr noundef %1065, ptr noundef %1066, ptr noundef %1067, i32 noundef %1070, i32 noundef 1073741875, i32 noundef %1071, i32 noundef %1072, i32 noundef %1073)
  br label %1098

1074:                                             ; preds = %1057
  %1075 = load ptr, ptr %10, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1075, i32 0, i32 10
  %1077 = load i16, ptr %1076, align 1, !tbaa !22
  %1078 = zext i16 %1077 to i32
  %1079 = icmp eq i32 %1078, 25
  br i1 %1079, label %1086, label %1080

1080:                                             ; preds = %1074
  %1081 = load ptr, ptr %10, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1081, i32 0, i32 10
  %1083 = load i16, ptr %1082, align 1, !tbaa !22
  %1084 = zext i16 %1083 to i32
  %1085 = icmp eq i32 %1084, 26
  br i1 %1085, label %1086, label %1097

1086:                                             ; preds = %1080, %1074
  %1087 = load ptr, ptr %6, align 8, !tbaa !5
  %1088 = load ptr, ptr %8, align 8, !tbaa !5
  %1089 = load ptr, ptr %9, align 8, !tbaa !5
  %1090 = load ptr, ptr %10, align 8, !tbaa !5
  %1091 = load ptr, ptr %8, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1091, i32 0, i32 13
  %1093 = load i32, ptr %1092, align 4, !tbaa !30
  %1094 = load i32, ptr %21, align 4, !tbaa !9
  %1095 = load i32, ptr %20, align 4, !tbaa !9
  %1096 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1087, ptr noundef %1088, ptr noundef %1089, ptr noundef %1090, i32 noundef %1093, i32 noundef 1073741875, i32 noundef %1094, i32 noundef %1095, i32 noundef %1096)
  br label %1097

1097:                                             ; preds = %1086, %1080
  br label %1098

1098:                                             ; preds = %1097, %1063
  br label %1099

1099:                                             ; preds = %1098, %1021
  br label %1100

1100:                                             ; preds = %1099, %954
  %1101 = load i32, ptr %15, align 4, !tbaa !9
  %1102 = load i32, ptr %24, align 4, !tbaa !9
  %1103 = add i32 %1102, %1101
  store i32 %1103, ptr %24, align 4, !tbaa !9
  %1104 = load i32, ptr %24, align 4, !tbaa !9
  %1105 = load i32, ptr %14, align 4, !tbaa !9
  %1106 = icmp ne i32 %1104, %1105
  br i1 %1106, label %1107, label %1250

1107:                                             ; preds = %1100
  %1108 = load i32, ptr %11, align 4, !tbaa !9
  %1109 = icmp eq i32 %1108, 0
  %1110 = zext i1 %1109 to i64
  %1111 = select i1 %1109, i32 0, i32 1
  store i32 %1111, ptr %23, align 4, !tbaa !9
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = load ptr, ptr %8, align 8, !tbaa !5
  %1114 = load ptr, ptr %9, align 8, !tbaa !5
  %1115 = load ptr, ptr %10, align 8, !tbaa !5
  %1116 = load ptr, ptr %8, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1116, i32 0, i32 1
  %1118 = load i32, ptr %1117, align 4, !tbaa !11
  %1119 = load i32, ptr %21, align 4, !tbaa !9
  %1120 = load i32, ptr %20, align 4, !tbaa !9
  %1121 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1112, ptr noundef %1113, ptr noundef %1114, ptr noundef %1115, i32 noundef %1118, i32 noundef 51, i32 noundef %1119, i32 noundef %1120, i32 noundef %1121)
  %1122 = load ptr, ptr %6, align 8, !tbaa !5
  %1123 = load ptr, ptr %8, align 8, !tbaa !5
  %1124 = load ptr, ptr %9, align 8, !tbaa !5
  %1125 = load ptr, ptr %10, align 8, !tbaa !5
  %1126 = load ptr, ptr %8, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1126, i32 0, i32 6
  %1128 = load i32, ptr %1127, align 4, !tbaa !13
  %1129 = load i32, ptr %21, align 4, !tbaa !9
  %1130 = load i32, ptr %20, align 4, !tbaa !9
  %1131 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1122, ptr noundef %1123, ptr noundef %1124, ptr noundef %1125, i32 noundef %1128, i32 noundef 51, i32 noundef %1129, i32 noundef %1130, i32 noundef %1131)
  %1132 = load ptr, ptr %10, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1132, i32 0, i32 11
  %1134 = load i8, ptr %1133, align 1, !tbaa !18
  %1135 = zext i8 %1134 to i32
  %1136 = icmp eq i32 %1135, 1
  br i1 %1136, label %1137, label %1154

1137:                                             ; preds = %1107
  %1138 = load ptr, ptr %10, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1138, i32 0, i32 10
  %1140 = load i16, ptr %1139, align 1, !tbaa !22
  %1141 = zext i16 %1140 to i32
  %1142 = icmp eq i32 %1141, 63
  br i1 %1142, label %1143, label %1154

1143:                                             ; preds = %1137
  %1144 = load ptr, ptr %6, align 8, !tbaa !5
  %1145 = load ptr, ptr %8, align 8, !tbaa !5
  %1146 = load ptr, ptr %9, align 8, !tbaa !5
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = load ptr, ptr %8, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1148, i32 0, i32 7
  %1150 = load i32, ptr %1149, align 4, !tbaa !23
  %1151 = load i32, ptr %21, align 4, !tbaa !9
  %1152 = load i32, ptr %20, align 4, !tbaa !9
  %1153 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1144, ptr noundef %1145, ptr noundef %1146, ptr noundef %1147, i32 noundef %1150, i32 noundef 51, i32 noundef %1151, i32 noundef %1152, i32 noundef %1153)
  br label %1154

1154:                                             ; preds = %1143, %1137, %1107
  %1155 = load ptr, ptr %10, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1155, i32 0, i32 11
  %1157 = load i8, ptr %1156, align 1, !tbaa !18
  %1158 = zext i8 %1157 to i32
  %1159 = icmp eq i32 %1158, 2
  br i1 %1159, label %1160, label %1171

1160:                                             ; preds = %1154
  %1161 = load ptr, ptr %6, align 8, !tbaa !5
  %1162 = load ptr, ptr %8, align 8, !tbaa !5
  %1163 = load ptr, ptr %9, align 8, !tbaa !5
  %1164 = load ptr, ptr %10, align 8, !tbaa !5
  %1165 = load ptr, ptr %8, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1165, i32 0, i32 2
  %1167 = load i32, ptr %1166, align 4, !tbaa !21
  %1168 = load i32, ptr %21, align 4, !tbaa !9
  %1169 = load i32, ptr %20, align 4, !tbaa !9
  %1170 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1161, ptr noundef %1162, ptr noundef %1163, ptr noundef %1164, i32 noundef %1167, i32 noundef 51, i32 noundef %1168, i32 noundef %1169, i32 noundef %1170)
  br label %1171

1171:                                             ; preds = %1160, %1154
  %1172 = load ptr, ptr %10, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1172, i32 0, i32 11
  %1174 = load i8, ptr %1173, align 1, !tbaa !18
  %1175 = zext i8 %1174 to i32
  %1176 = icmp eq i32 %1175, 1
  br i1 %1176, label %1177, label %1249

1177:                                             ; preds = %1171
  %1178 = load ptr, ptr %10, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1178, i32 0, i32 10
  %1180 = load i16, ptr %1179, align 1, !tbaa !22
  %1181 = zext i16 %1180 to i32
  %1182 = icmp eq i32 %1181, 5
  br i1 %1182, label %1213, label %1183

1183:                                             ; preds = %1177
  %1184 = load ptr, ptr %10, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1184, i32 0, i32 10
  %1186 = load i16, ptr %1185, align 1, !tbaa !22
  %1187 = zext i16 %1186 to i32
  %1188 = icmp eq i32 %1187, 6
  br i1 %1188, label %1213, label %1189

1189:                                             ; preds = %1183
  %1190 = load ptr, ptr %10, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1190, i32 0, i32 10
  %1192 = load i16, ptr %1191, align 1, !tbaa !22
  %1193 = zext i16 %1192 to i32
  %1194 = icmp eq i32 %1193, 34
  br i1 %1194, label %1213, label %1195

1195:                                             ; preds = %1189
  %1196 = load ptr, ptr %10, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1196, i32 0, i32 10
  %1198 = load i16, ptr %1197, align 1, !tbaa !22
  %1199 = zext i16 %1198 to i32
  %1200 = icmp eq i32 %1199, 35
  br i1 %1200, label %1213, label %1201

1201:                                             ; preds = %1195
  %1202 = load ptr, ptr %10, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1202, i32 0, i32 10
  %1204 = load i16, ptr %1203, align 1, !tbaa !22
  %1205 = zext i16 %1204 to i32
  %1206 = icmp eq i32 %1205, 36
  br i1 %1206, label %1213, label %1207

1207:                                             ; preds = %1201
  %1208 = load ptr, ptr %10, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1208, i32 0, i32 10
  %1210 = load i16, ptr %1209, align 1, !tbaa !22
  %1211 = zext i16 %1210 to i32
  %1212 = icmp eq i32 %1211, 37
  br i1 %1212, label %1213, label %1224

1213:                                             ; preds = %1207, %1201, %1195, %1189, %1183, %1177
  %1214 = load ptr, ptr %6, align 8, !tbaa !5
  %1215 = load ptr, ptr %8, align 8, !tbaa !5
  %1216 = load ptr, ptr %9, align 8, !tbaa !5
  %1217 = load ptr, ptr %10, align 8, !tbaa !5
  %1218 = load ptr, ptr %8, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1218, i32 0, i32 9
  %1220 = load i32, ptr %1219, align 4, !tbaa !24
  %1221 = load i32, ptr %21, align 4, !tbaa !9
  %1222 = load i32, ptr %20, align 4, !tbaa !9
  %1223 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1214, ptr noundef %1215, ptr noundef %1216, ptr noundef %1217, i32 noundef %1220, i32 noundef 51, i32 noundef %1221, i32 noundef %1222, i32 noundef %1223)
  br label %1248

1224:                                             ; preds = %1207
  %1225 = load ptr, ptr %10, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1225, i32 0, i32 10
  %1227 = load i16, ptr %1226, align 1, !tbaa !22
  %1228 = zext i16 %1227 to i32
  %1229 = icmp eq i32 %1228, 25
  br i1 %1229, label %1236, label %1230

1230:                                             ; preds = %1224
  %1231 = load ptr, ptr %10, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1231, i32 0, i32 10
  %1233 = load i16, ptr %1232, align 1, !tbaa !22
  %1234 = zext i16 %1233 to i32
  %1235 = icmp eq i32 %1234, 26
  br i1 %1235, label %1236, label %1247

1236:                                             ; preds = %1230, %1224
  %1237 = load ptr, ptr %6, align 8, !tbaa !5
  %1238 = load ptr, ptr %8, align 8, !tbaa !5
  %1239 = load ptr, ptr %9, align 8, !tbaa !5
  %1240 = load ptr, ptr %10, align 8, !tbaa !5
  %1241 = load ptr, ptr %8, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1241, i32 0, i32 13
  %1243 = load i32, ptr %1242, align 4, !tbaa !30
  %1244 = load i32, ptr %21, align 4, !tbaa !9
  %1245 = load i32, ptr %20, align 4, !tbaa !9
  %1246 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %1237, ptr noundef %1238, ptr noundef %1239, ptr noundef %1240, i32 noundef %1243, i32 noundef 51, i32 noundef %1244, i32 noundef %1245, i32 noundef %1246)
  br label %1247

1247:                                             ; preds = %1236, %1230
  br label %1248

1248:                                             ; preds = %1247, %1213
  br label %1249

1249:                                             ; preds = %1248, %1171
  br label %1250

1250:                                             ; preds = %1249, %1100
  br label %749, !llvm.loop !44

1251:                                             ; preds = %749
  %1252 = load ptr, ptr %6, align 8, !tbaa !5
  %1253 = load ptr, ptr %9, align 8, !tbaa !5
  %1254 = load ptr, ptr %10, align 8, !tbaa !5
  %1255 = load i32, ptr %27, align 4, !tbaa !9
  %1256 = load i32, ptr %28, align 4, !tbaa !9
  %1257 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_finalize_kernel_vregs_rv64_masks(ptr noundef %1252, ptr noundef %1253, ptr noundef %1254, i32 noundef %1255, i32 noundef %1256, i32 noundef %1257)
  store i32 0, ptr %34, align 4
  br label %1258

1258:                                             ; preds = %1251, %145
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %1259 = load i32, ptr %34, align 4
  switch i32 %1259, label %1261 [
    i32 0, label %1260
    i32 1, label %1260
  ]

1260:                                             ; preds = %1258, %1258
  ret void

1261:                                             ; preds = %1258
  unreachable
}

declare void @libxsmm_rv64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 24}
!14 = !{!12, !10, i64 96}
!15 = !{!12, !10, i64 100}
!16 = !{!12, !10, i64 140}
!17 = !{!12, !10, i64 144}
!18 = !{!19, !7, i64 31}
!19 = !{!"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, !20, i64 27, !20, i64 29, !7, i64 31}
!20 = !{!"short", !7, i64 0}
!21 = !{!12, !10, i64 8}
!22 = !{!19, !20, i64 29}
!23 = !{!12, !10, i64 28}
!24 = !{!12, !10, i64 36}
!25 = !{!12, !10, i64 40}
!26 = !{!12, !10, i64 44}
!27 = !{!12, !10, i64 76}
!28 = !{!12, !10, i64 48}
!29 = !{!12, !10, i64 88}
!30 = !{!12, !10, i64 52}
!31 = !{!12, !10, i64 56}
!32 = !{!12, !10, i64 60}
!33 = !{!12, !10, i64 136}
!34 = !{!12, !10, i64 0}
!35 = !{!12, !10, i64 12}
!36 = !{!37, !10, i64 72}
!37 = !{!"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}
!38 = !{!19, !10, i64 0}
!39 = !{!19, !10, i64 4}
!40 = !{!37, !10, i64 480}
!41 = !{!37, !10, i64 500}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}


; 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 [94 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_unary_binary_rv64_microkernel = external hidden unnamed_addr constant [48 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_vlens(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_M_N_blocking(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_configure_rv64_loop_order(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_configure_rv64_kernel_vregs_masks(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_finalize_kernel_vregs_rv64_masks(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_rv64_binary_2d_microkernel(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_unary_binary_rv64_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #3
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #3
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #3
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #3
  store i32 0, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #3
  store i32 0, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #3
  store i32 0, ptr %12, align 4, !tbaa !5
  %13 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %14 = icmp eq i32 %13, 1
  br i1 %14, label %30, label %15

15:                                               ; preds = %5
  %16 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %17 = icmp eq i32 %16, 9
  br i1 %17, label %30, label %18

18:                                               ; preds = %15
  %19 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %20 = icmp eq i32 %19, 8
  br i1 %20, label %30, label %21

21:                                               ; preds = %18
  %22 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %23 = icmp eq i32 %22, 2
  br i1 %23, label %30, label %24

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

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

30:                                               ; preds = %27, %24, %21, %18, %15, %5
  %31 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %32 = icmp eq i32 %31, 1
  br i1 %32, label %92, label %33

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

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

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

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

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

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

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

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

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

60:                                               ; preds = %57
  %61 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %62 = icmp eq i32 %61, 9
  br i1 %62, label %92, label %63

63:                                               ; preds = %60, %57
  %64 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %65 = icmp eq i32 %64, 1
  br i1 %65, label %66, label %69

66:                                               ; preds = %63
  %67 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %68 = icmp eq i32 %67, 10
  br i1 %68, label %92, label %69

69:                                               ; preds = %66, %63
  %70 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %71 = icmp eq i32 %70, 12
  br i1 %71, label %72, label %75

72:                                               ; preds = %69
  %73 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %74 = icmp eq i32 %73, 1
  br i1 %74, label %92, label %75

75:                                               ; preds = %72, %69
  %76 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %77 = icmp eq i32 %76, 1
  br i1 %77, label %78, label %81

78:                                               ; preds = %75
  %79 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %80 = icmp eq i32 %79, 12
  br i1 %80, label %92, label %81

81:                                               ; preds = %78, %75
  %82 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 0) #3
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %84, label %87

84:                                               ; preds = %81
  %85 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %4, i32 noundef 3) #3
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %92, label %87

87:                                               ; preds = %84, %81
  %88 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %89 = icmp ugt i32 %88, 1
  %90 = load i32, ptr @libxsmm_verbosity, align 4
  %91 = select i1 %89, i32 %90, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_rv64_microkernel, ptr noundef nonnull @.str, i32 noundef 1245, i32 noundef %91) #3
  br label %343

92:                                               ; preds = %30, %33, %36, %42, %48, %54, %60, %66, %72, %78, %84
  tail call void @libxsmm_generator_configure_rv64_vlens(ptr noundef %4, ptr noundef %3)
  %93 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 11, ptr %93, align 4, !tbaa !9
  %94 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 12, ptr %94, align 4, !tbaa !11
  %95 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 13, ptr %95, align 4, !tbaa !12
  %96 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 14, ptr %96, align 4, !tbaa !13
  %97 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 15, ptr %97, align 4, !tbaa !14
  %98 = getelementptr inbounds i8, ptr %2, i64 144
  store i32 16, ptr %98, align 4, !tbaa !15
  %99 = getelementptr inbounds i8, ptr %4, i64 31
  %100 = load i8, ptr %99, align 1, !tbaa !16
  %101 = icmp eq i8 %100, 2
  br i1 %101, label %.thread481, label %108

.thread481:                                       ; preds = %92
  %102 = getelementptr inbounds i8, ptr %2, i64 8
  store i32 17, ptr %102, align 4, !tbaa !19
  %103 = load i32, ptr %2, align 4, !tbaa !20
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %103, i32 noundef 11, i32 noundef 32) #3
  %104 = load i32, ptr %2, align 4, !tbaa !20
  %105 = load i32, ptr %102, align 4, !tbaa !19
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %104, i32 noundef %105, i32 noundef 80) #3
  %106 = load i32, ptr %2, align 4, !tbaa !20
  %107 = load i32, ptr %94, align 4, !tbaa !11
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %106, i32 noundef %107, i32 noundef 128) #3
  br label %230

108:                                              ; preds = %92
  %109 = getelementptr inbounds i8, ptr %4, i64 29
  %110 = load i16, ptr %109, align 1, !tbaa !21
  switch i16 %110, label %113 [
    i16 63, label %.thread474.thread
    i16 5, label %111
    i16 6, label %111
    i16 34, label %111
    i16 35, label %111
  ]

111:                                              ; preds = %108, %108, %108, %108
  %112 = getelementptr inbounds i8, ptr %2, i64 36
  store i32 12, ptr %112, align 4, !tbaa !22
  %.pre515 = and i16 %110, -2
  br label %.thread461

113:                                              ; preds = %108
  %114 = and i16 %110, -2
  %switch = icmp eq i16 %114, 36
  br i1 %switch, label %.thread474.thread.sink.split, label %.thread461

.thread461:                                       ; preds = %111, %113
  %.pre-phi = phi i16 [ %.pre515, %111 ], [ %114, %113 ]
  %switch456 = icmp eq i16 %.pre-phi, 34
  br i1 %switch456, label %.thread474.thread, label %115

115:                                              ; preds = %.thread461
  switch i16 %110, label %119 [
    i16 33, label %.thread474.thread
    i16 64, label %.thread474.thread.sink.split
    i16 65, label %116
  ]

116:                                              ; preds = %115
  %117 = getelementptr inbounds i8, ptr %2, i64 44
  store i32 12, ptr %117, align 4, !tbaa !23
  %118 = getelementptr inbounds i8, ptr %2, i64 48
  store i32 13, ptr %118, align 4, !tbaa !24
  br label %.thread474.thread.sink.split

119:                                              ; preds = %115
  %.off457 = add i16 %110, -25
  %switch458 = icmp ult i16 %.off457, 2
  %120 = getelementptr inbounds i8, ptr %2, i64 52
  %121 = getelementptr inbounds i8, ptr %2, i64 56
  br i1 %switch458, label %122, label %.thread474

122:                                              ; preds = %119
  store i32 12, ptr %120, align 4, !tbaa !25
  store i32 13, ptr %121, align 4, !tbaa !26
  %123 = icmp eq i16 %110, 25
  %124 = getelementptr inbounds i8, ptr %2, i64 60
  br i1 %123, label %125, label %126

125:                                              ; preds = %122
  store i32 14, ptr %124, align 4, !tbaa !27
  br label %.thread478

126:                                              ; preds = %122
  store i32 127, ptr %124, align 4, !tbaa !27
  br label %.thread478

.thread474.thread.sink.split:                     ; preds = %115, %113, %116
  %.sink545 = phi i64 [ 76, %116 ], [ 36, %113 ], [ 44, %115 ]
  %.sink543 = phi i32 [ 14, %116 ], [ 12, %113 ], [ 12, %115 ]
  %.sink533.ph = phi i64 [ 88, %116 ], [ 40, %113 ], [ 76, %115 ]
  %.sink.ph = phi i32 [ 15, %116 ], [ 13, %113 ], [ 14, %115 ]
  %127 = getelementptr inbounds i8, ptr %2, i64 %.sink545
  store i32 %.sink543, ptr %127, align 4, !tbaa !5
  br label %.thread474.thread

.thread474.thread:                                ; preds = %.thread474.thread.sink.split, %115, %.thread461, %108
  %.sink533 = phi i64 [ 28, %108 ], [ 40, %.thread461 ], [ 44, %115 ], [ %.sink533.ph, %.thread474.thread.sink.split ]
  %.sink = phi i32 [ 12, %108 ], [ 13, %.thread461 ], [ 12, %115 ], [ %.sink.ph, %.thread474.thread.sink.split ]
  %128 = getelementptr inbounds i8, ptr %2, i64 %.sink533
  store i32 %.sink, ptr %128, align 4, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %2, i64 52
  store i32 127, ptr %129, align 4, !tbaa !25
  %130 = getelementptr inbounds i8, ptr %2, i64 56
  store i32 127, ptr %130, align 4, !tbaa !26
  %131 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 127, ptr %131, align 4, !tbaa !27
  br label %.thread478

.thread474:                                       ; preds = %119
  store i32 127, ptr %120, align 4, !tbaa !25
  store i32 127, ptr %121, align 4, !tbaa !26
  %132 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 127, ptr %132, align 4, !tbaa !27
  %switch460 = icmp eq i16 %.pre-phi, 42
  br i1 %switch460, label %133, label %.thread478

.thread478:                                       ; preds = %.thread474.thread, %126, %125, %.thread474
  br label %133

133:                                              ; preds = %.thread474, %.thread478
  %.sink534 = phi i32 [ 127, %.thread478 ], [ 12, %.thread474 ]
  %134 = getelementptr inbounds i8, ptr %2, i64 136
  store i32 %.sink534, ptr %134, align 4, !tbaa !28
  switch i8 %100, label %225 [
    i8 1, label %135
    i8 3, label %215
  ]

135:                                              ; preds = %133
  %136 = load i32, ptr %2, align 4, !tbaa !20
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 12291, i32 noundef %136, i32 noundef 11, i32 noundef 32) #3
  %137 = load i32, ptr %2, align 4, !tbaa !20
  %138 = load i32, ptr %94, align 4, !tbaa !11
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 12291, i32 noundef %137, i32 noundef %138, i32 noundef 80) #3
  %139 = load i16, ptr %109, align 1, !tbaa !21
  switch i16 %139, label %230 [
    i16 63, label %140
    i16 5, label %144
    i16 6, label %148
    i16 36, label %152
    i16 37, label %156
    i16 34, label %163
    i16 35, label %170
    i16 33, label %177
    i16 64, label %182
    i16 65, label %186
    i16 25, label %190
    i16 26, label %200
    i16 42, label %207
    i16 43, label %211
  ]

140:                                              ; preds = %135
  %141 = load i32, ptr %2, align 4, !tbaa !20
  %142 = getelementptr inbounds i8, ptr %2, i64 28
  %143 = load i32, ptr %142, align 4, !tbaa !29
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %141, i32 noundef %143, i32 noundef 88) #3
  br label %230

144:                                              ; preds = %135
  %145 = load i32, ptr %2, align 4, !tbaa !20
  %146 = getelementptr inbounds i8, ptr %2, i64 36
  %147 = load i32, ptr %146, align 4, !tbaa !22
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %145, i32 noundef %147, i32 noundef 88) #3
  br label %230

148:                                              ; preds = %135
  %149 = load i32, ptr %2, align 4, !tbaa !20
  %150 = getelementptr inbounds i8, ptr %2, i64 36
  %151 = load i32, ptr %150, align 4, !tbaa !22
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %149, i32 noundef %151, i32 noundef 40) #3
  br label %230

152:                                              ; preds = %135
  %153 = load i32, ptr %2, align 4, !tbaa !20
  %154 = getelementptr inbounds i8, ptr %2, i64 40
  %155 = load i32, ptr %154, align 4, !tbaa !30
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %153, i32 noundef %155, i32 noundef 0) #3
  br label %230

156:                                              ; preds = %135
  %157 = load i32, ptr %2, align 4, !tbaa !20
  %158 = getelementptr inbounds i8, ptr %2, i64 36
  %159 = load i32, ptr %158, align 4, !tbaa !22
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %157, i32 noundef %159, i32 noundef 40) #3
  %160 = load i32, ptr %2, align 4, !tbaa !20
  %161 = getelementptr inbounds i8, ptr %2, i64 40
  %162 = load i32, ptr %161, align 4, !tbaa !30
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %160, i32 noundef %162, i32 noundef 0) #3
  br label %230

163:                                              ; preds = %135
  %164 = load i32, ptr %2, align 4, !tbaa !20
  %165 = getelementptr inbounds i8, ptr %2, i64 40
  %166 = load i32, ptr %165, align 4, !tbaa !30
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %164, i32 noundef %166, i32 noundef 0) #3
  %167 = load i32, ptr %2, align 4, !tbaa !20
  %168 = getelementptr inbounds i8, ptr %2, i64 36
  %169 = load i32, ptr %168, align 4, !tbaa !22
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %167, i32 noundef %169, i32 noundef 88) #3
  br label %230

170:                                              ; preds = %135
  %171 = load i32, ptr %2, align 4, !tbaa !20
  %172 = getelementptr inbounds i8, ptr %2, i64 36
  %173 = load i32, ptr %172, align 4, !tbaa !22
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %171, i32 noundef %173, i32 noundef 40) #3
  %174 = load i32, ptr %2, align 4, !tbaa !20
  %175 = getelementptr inbounds i8, ptr %2, i64 40
  %176 = load i32, ptr %175, align 4, !tbaa !30
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %174, i32 noundef %176, i32 noundef 0) #3
  br label %230

177:                                              ; preds = %135
  %178 = load i32, ptr %2, align 4, !tbaa !20
  %179 = getelementptr inbounds i8, ptr %2, i64 44
  %180 = load i32, ptr %179, align 4, !tbaa !23
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %178, i32 noundef %180, i32 noundef 88) #3
  %181 = load i32, ptr %179, align 4, !tbaa !23
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %181, i32 noundef %181, i32 noundef 0) #3
  br label %230

182:                                              ; preds = %135
  %183 = load i32, ptr %2, align 4, !tbaa !20
  %184 = getelementptr inbounds i8, ptr %2, i64 44
  %185 = load i32, ptr %184, align 4, !tbaa !23
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %183, i32 noundef %185, i32 noundef 88) #3
  br label %230

186:                                              ; preds = %135
  %187 = load i32, ptr %2, align 4, !tbaa !20
  %188 = getelementptr inbounds i8, ptr %2, i64 44
  %189 = load i32, ptr %188, align 4, !tbaa !23
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %187, i32 noundef %189, i32 noundef 88) #3
  br label %230

190:                                              ; preds = %135
  %191 = load i32, ptr %2, align 4, !tbaa !20
  %192 = getelementptr inbounds i8, ptr %2, i64 60
  %193 = load i32, ptr %192, align 4, !tbaa !27
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %191, i32 noundef %193, i32 noundef 8) #3
  %194 = load i32, ptr %2, align 4, !tbaa !20
  %195 = getelementptr inbounds i8, ptr %2, i64 56
  %196 = load i32, ptr %195, align 4, !tbaa !26
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %194, i32 noundef %196, i32 noundef 0) #3
  %197 = load i32, ptr %2, align 4, !tbaa !20
  %198 = getelementptr inbounds i8, ptr %2, i64 52
  %199 = load i32, ptr %198, align 4, !tbaa !25
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %197, i32 noundef %199, i32 noundef 88) #3
  br label %230

200:                                              ; preds = %135
  %201 = load i32, ptr %2, align 4, !tbaa !20
  %202 = getelementptr inbounds i8, ptr %2, i64 52
  %203 = load i32, ptr %202, align 4, !tbaa !25
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %201, i32 noundef %203, i32 noundef 40) #3
  %204 = load i32, ptr %2, align 4, !tbaa !20
  %205 = getelementptr inbounds i8, ptr %2, i64 56
  %206 = load i32, ptr %205, align 4, !tbaa !26
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %204, i32 noundef %206, i32 noundef 0) #3
  br label %230

207:                                              ; preds = %135
  %208 = load i32, ptr %2, align 4, !tbaa !20
  %209 = getelementptr inbounds i8, ptr %2, i64 136
  %210 = load i32, ptr %209, align 4, !tbaa !28
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %208, i32 noundef %210, i32 noundef 40) #3
  br label %230

211:                                              ; preds = %135
  %212 = load i32, ptr %2, align 4, !tbaa !20
  %213 = getelementptr inbounds i8, ptr %2, i64 136
  %214 = load i32, ptr %213, align 4, !tbaa !28
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %212, i32 noundef %214, i32 noundef 40) #3
  br label %230

215:                                              ; preds = %133
  %216 = load i32, ptr %2, align 4, !tbaa !20
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %216, i32 noundef 11, i32 noundef 32) #3
  %217 = load i32, ptr %2, align 4, !tbaa !20
  %218 = getelementptr inbounds i8, ptr %2, i64 8
  %219 = load i32, ptr %218, align 4, !tbaa !19
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %217, i32 noundef %219, i32 noundef 80) #3
  %220 = load i32, ptr %2, align 4, !tbaa !20
  %221 = getelementptr inbounds i8, ptr %2, i64 12
  %222 = load i32, ptr %221, align 4, !tbaa !31
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %220, i32 noundef %222, i32 noundef 128) #3
  %223 = load i32, ptr %2, align 4, !tbaa !20
  %224 = load i32, ptr %94, align 4, !tbaa !11
  tail call void @libxsmm_rv64_instruction_alu_move(ptr noundef %0, i32 noundef 8195, i32 noundef %223, i32 noundef %224, i32 noundef 176) #3
  br label %230

225:                                              ; preds = %133
  %226 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !5
  %227 = icmp ugt i32 %226, 1
  %228 = load i32, ptr @libxsmm_verbosity, align 4
  %229 = select i1 %227, i32 %228, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_rv64_microkernel, ptr noundef nonnull @.str, i32 noundef 1373, i32 noundef %229) #3
  br label %230

230:                                              ; preds = %135, %.thread481, %225, %215, %140, %148, %156, %170, %182, %190, %207, %211, %200, %186, %177, %163, %152, %144
  %231 = load i32, ptr %97, align 4, !tbaa !14
  %232 = load i32, ptr %98, align 4, !tbaa !15
  tail call void @libxsmm_configure_rv64_kernel_vregs_masks(ptr noundef %0, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %231, i32 noundef %232, i32 noundef 127, i32 noundef 127)
  %233 = getelementptr inbounds i8, ptr %3, i64 72
  %234 = load i32, ptr %233, align 4, !tbaa !32
  %235 = sub i32 32, %234
  %236 = load i32, ptr %4, align 1, !tbaa !34
  %237 = getelementptr inbounds i8, ptr %4, i64 4
  %238 = load i32, ptr %237, align 1, !tbaa !35
  %239 = getelementptr inbounds i8, ptr %3, i64 480
  %240 = load i32, ptr %239, align 4, !tbaa !36
  call void @libxsmm_generator_configure_rv64_M_N_blocking(ptr noundef %0, ptr noundef nonnull %4, i32 noundef %236, i32 noundef %238, i32 noundef %240, ptr noundef nonnull %7, ptr noundef nonnull %10, i32 noundef %235)
  call void @libxsmm_generator_configure_rv64_loop_order(ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef nonnull %12)
  %241 = load i32, ptr %6, align 4, !tbaa !5
  %242 = getelementptr inbounds i8, ptr %3, i64 500
  store i32 %241, ptr %242, align 4, !tbaa !37
  %243 = load i32, ptr %9, align 4, !tbaa !5
  %.not502 = icmp eq i32 %243, 0
  br i1 %.not502, label %._crit_edge507, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %230
  %244 = getelementptr inbounds i8, ptr %4, i64 29
  %245 = getelementptr inbounds i8, ptr %2, i64 28
  %246 = getelementptr inbounds i8, ptr %2, i64 8
  %247 = getelementptr inbounds i8, ptr %2, i64 52
  %248 = getelementptr inbounds i8, ptr %2, i64 36
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %341
  %.0506 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1.lcssa523, %341 ]
  %.0433505 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1434.lcssa522, %341 ]
  %.0435504 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1436.lcssa521, %341 ]
  %.0439503 = phi i32 [ 0, %.preheader.lr.ph ], [ %316, %341 ]
  %249 = load i32, ptr %12, align 4
  %.not452496 = icmp eq i32 %249, 0
  br i1 %.not452496, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader, %290
  %250 = phi i32 [ %291, %290 ], [ %249, %.preheader ]
  %.0437498 = phi i32 [ %.1438, %290 ], [ 0, %.preheader ]
  %.0440497 = phi i32 [ %265, %290 ], [ 0, %.preheader ]
  %251 = load i32, ptr %8, align 4
  %252 = icmp ult i32 %.0439503, %251
  %253 = load i32, ptr %9, align 4
  %254 = sub i32 %253, %.0439503
  %255 = select i1 %252, i32 %251, i32 %254
  %256 = load i32, ptr %11, align 4
  %257 = icmp ult i32 %.0440497, %256
  %258 = sub i32 %250, %.0440497
  %259 = select i1 %257, i32 %256, i32 %258
  %260 = load i32, ptr %6, align 4, !tbaa !5
  %261 = icmp eq i32 %260, 1
  %262 = select i1 %261, i32 %255, i32 %259
  %263 = icmp eq i32 %260, 0
  %264 = select i1 %263, i32 %255, i32 %259
  call void @libxsmm_generator_unary_rv64_binary_2d_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %264, i32 noundef %262)
  %265 = add i32 %259, %.0440497
  %266 = load i32, ptr %12, align 4, !tbaa !5
  %.not454 = icmp eq i32 %265, %266
  br i1 %.not454, label %290, label %267

267:                                              ; preds = %.lr.ph
  %268 = load i32, ptr %6, align 4, !tbaa !5
  %269 = icmp ne i32 %268, 1
  %270 = zext i1 %269 to i32
  %271 = load i32, ptr %93, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %271, i32 noundef 51, i32 noundef %264, i32 noundef %262, i32 noundef %270)
  %272 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %272, i32 noundef 51, i32 noundef %264, i32 noundef %262, i32 noundef %270)
  %273 = load i8, ptr %99, align 1, !tbaa !16
  %274 = icmp eq i8 %273, 1
  br i1 %274, label %275, label %thread-pre-split

275:                                              ; preds = %267
  %276 = load i16, ptr %244, align 1, !tbaa !21
  %277 = icmp eq i16 %276, 63
  br i1 %277, label %278, label %.thread

278:                                              ; preds = %275
  %279 = load i32, ptr %245, align 4, !tbaa !29
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %279, i32 noundef 51, i32 noundef %264, i32 noundef %262, i32 noundef %270)
  %.pr.pre = load i8, ptr %99, align 1, !tbaa !16
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %278, %267
  %280 = phi i8 [ %273, %267 ], [ %.pr.pre, %278 ]
  %281 = icmp eq i8 %280, 2
  br i1 %281, label %282, label %284

282:                                              ; preds = %thread-pre-split
  %283 = load i32, ptr %246, align 4, !tbaa !19
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %283, i32 noundef 51, i32 noundef %264, i32 noundef %262, i32 noundef %270)
  %.pre = load i8, ptr %99, align 1, !tbaa !16
  br label %284

284:                                              ; preds = %282, %thread-pre-split
  %285 = phi i8 [ %.pre, %282 ], [ %280, %thread-pre-split ]
  %286 = icmp eq i8 %285, 1
  br i1 %286, label %thread-pre-split516, label %290

thread-pre-split516:                              ; preds = %284
  %.pr = load i16, ptr %244, align 1, !tbaa !21
  br label %.thread

.thread:                                          ; preds = %275, %thread-pre-split516
  %287 = phi i16 [ %.pr, %thread-pre-split516 ], [ %276, %275 ]
  switch i16 %287, label %290 [
    i16 5, label %.sink.split
    i16 6, label %.sink.split
    i16 34, label %.sink.split
    i16 35, label %.sink.split
    i16 36, label %.sink.split
    i16 37, label %.sink.split
    i16 25, label %288
    i16 26, label %288
  ]

288:                                              ; preds = %.thread, %.thread
  br label %.sink.split

.sink.split:                                      ; preds = %.thread, %.thread, %.thread, %.thread, %.thread, %.thread, %288
  %.sink537 = phi ptr [ %247, %288 ], [ %248, %.thread ], [ %248, %.thread ], [ %248, %.thread ], [ %248, %.thread ], [ %248, %.thread ], [ %248, %.thread ]
  %289 = load i32, ptr %.sink537, align 4, !tbaa !5
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %289, i32 noundef 51, i32 noundef %264, i32 noundef %262, i32 noundef %270)
  br label %290

290:                                              ; preds = %.sink.split, %.thread, %284, %.lr.ph
  %.1438 = phi i32 [ 1, %284 ], [ %.0437498, %.lr.ph ], [ 1, %.thread ], [ 1, %.sink.split ]
  %291 = load i32, ptr %12, align 4
  %.not452 = icmp eq i32 %265, %291
  br i1 %.not452, label %._crit_edge, label %.lr.ph, !llvm.loop !38

._crit_edge:                                      ; preds = %290
  %292 = icmp eq i32 %.1438, 1
  br i1 %292, label %293, label %._crit_edge.thread

293:                                              ; preds = %._crit_edge
  %294 = load i32, ptr %6, align 4, !tbaa !5
  %295 = icmp ne i32 %294, 1
  %296 = zext i1 %295 to i32
  %297 = load i32, ptr %93, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %297, i32 noundef 1073741875, i32 noundef %264, i32 noundef %262, i32 noundef %296)
  %298 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %298, i32 noundef 1073741875, i32 noundef %264, i32 noundef %262, i32 noundef %296)
  %299 = load i8, ptr %99, align 1, !tbaa !16
  %300 = icmp eq i8 %299, 1
  br i1 %300, label %301, label %thread-pre-split482

301:                                              ; preds = %293
  %302 = load i16, ptr %244, align 1, !tbaa !21
  %303 = icmp eq i16 %302, 63
  br i1 %303, label %304, label %.thread524

304:                                              ; preds = %301
  %305 = load i32, ptr %245, align 4, !tbaa !29
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %305, i32 noundef 1073741875, i32 noundef %264, i32 noundef %262, i32 noundef %296)
  %.pr483.pre = load i8, ptr %99, align 1, !tbaa !16
  br label %thread-pre-split482

thread-pre-split482:                              ; preds = %304, %293
  %306 = phi i8 [ %299, %293 ], [ %.pr483.pre, %304 ]
  %307 = icmp eq i8 %306, 2
  br i1 %307, label %308, label %310

308:                                              ; preds = %thread-pre-split482
  %309 = load i32, ptr %246, align 4, !tbaa !19
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %309, i32 noundef 1073741875, i32 noundef %264, i32 noundef %262, i32 noundef %296)
  %.pre512 = load i8, ptr %99, align 1, !tbaa !16
  br label %310

310:                                              ; preds = %308, %thread-pre-split482
  %311 = phi i8 [ %.pre512, %308 ], [ %306, %thread-pre-split482 ]
  %312 = icmp eq i8 %311, 1
  br i1 %312, label %thread-pre-split525, label %._crit_edge.thread

thread-pre-split525:                              ; preds = %310
  %.pr526 = load i16, ptr %244, align 1, !tbaa !21
  br label %.thread524

.thread524:                                       ; preds = %301, %thread-pre-split525
  %313 = phi i16 [ %.pr526, %thread-pre-split525 ], [ %302, %301 ]
  switch i16 %313, label %._crit_edge.thread [
    i16 5, label %._crit_edge.thread.sink.split
    i16 6, label %._crit_edge.thread.sink.split
    i16 34, label %._crit_edge.thread.sink.split
    i16 35, label %._crit_edge.thread.sink.split
    i16 36, label %._crit_edge.thread.sink.split
    i16 37, label %._crit_edge.thread.sink.split
    i16 25, label %314
    i16 26, label %314
  ]

314:                                              ; preds = %.thread524, %.thread524
  br label %._crit_edge.thread.sink.split

._crit_edge.thread.sink.split:                    ; preds = %.thread524, %.thread524, %.thread524, %.thread524, %.thread524, %.thread524, %314
  %.sink539 = phi ptr [ %247, %314 ], [ %248, %.thread524 ], [ %248, %.thread524 ], [ %248, %.thread524 ], [ %248, %.thread524 ], [ %248, %.thread524 ], [ %248, %.thread524 ]
  %315 = load i32, ptr %.sink539, align 4, !tbaa !5
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %315, i32 noundef 1073741875, i32 noundef %264, i32 noundef %262, i32 noundef %296)
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %._crit_edge.thread.sink.split, %.preheader, %.thread524, %310, %._crit_edge
  %.1.lcssa523 = phi i32 [ %255, %.thread524 ], [ %255, %310 ], [ %255, %._crit_edge ], [ %.0506, %.preheader ], [ %255, %._crit_edge.thread.sink.split ]
  %.1434.lcssa522 = phi i32 [ %262, %.thread524 ], [ %262, %310 ], [ %262, %._crit_edge ], [ %.0433505, %.preheader ], [ %262, %._crit_edge.thread.sink.split ]
  %.1436.lcssa521 = phi i32 [ %264, %.thread524 ], [ %264, %310 ], [ %264, %._crit_edge ], [ %.0435504, %.preheader ], [ %264, %._crit_edge.thread.sink.split ]
  %316 = add i32 %.1.lcssa523, %.0439503
  %317 = load i32, ptr %9, align 4, !tbaa !5
  %.not453 = icmp eq i32 %316, %317
  br i1 %.not453, label %341, label %318

318:                                              ; preds = %._crit_edge.thread
  %319 = load i32, ptr %6, align 4, !tbaa !5
  %320 = icmp ne i32 %319, 0
  %321 = zext i1 %320 to i32
  %322 = load i32, ptr %93, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %322, i32 noundef 51, i32 noundef %.1436.lcssa521, i32 noundef %.1434.lcssa522, i32 noundef %321)
  %323 = load i32, ptr %94, align 4, !tbaa !11
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %323, i32 noundef 51, i32 noundef %.1436.lcssa521, i32 noundef %.1434.lcssa522, i32 noundef %321)
  %324 = load i8, ptr %99, align 1, !tbaa !16
  %325 = icmp eq i8 %324, 1
  br i1 %325, label %326, label %thread-pre-split484

326:                                              ; preds = %318
  %327 = load i16, ptr %244, align 1, !tbaa !21
  %328 = icmp eq i16 %327, 63
  br i1 %328, label %329, label %.thread527

329:                                              ; preds = %326
  %330 = load i32, ptr %245, align 4, !tbaa !29
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %330, i32 noundef 51, i32 noundef %.1436.lcssa521, i32 noundef %.1434.lcssa522, i32 noundef %321)
  %.pr485.pre = load i8, ptr %99, align 1, !tbaa !16
  br label %thread-pre-split484

thread-pre-split484:                              ; preds = %329, %318
  %331 = phi i8 [ %324, %318 ], [ %.pr485.pre, %329 ]
  %332 = icmp eq i8 %331, 2
  br i1 %332, label %333, label %335

333:                                              ; preds = %thread-pre-split484
  %334 = load i32, ptr %246, align 4, !tbaa !19
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %334, i32 noundef 51, i32 noundef %.1436.lcssa521, i32 noundef %.1434.lcssa522, i32 noundef %321)
  %.pre514 = load i8, ptr %99, align 1, !tbaa !16
  br label %335

335:                                              ; preds = %333, %thread-pre-split484
  %336 = phi i8 [ %.pre514, %333 ], [ %331, %thread-pre-split484 ]
  %337 = icmp eq i8 %336, 1
  br i1 %337, label %thread-pre-split528, label %341

thread-pre-split528:                              ; preds = %335
  %.pr529 = load i16, ptr %244, align 1, !tbaa !21
  br label %.thread527

.thread527:                                       ; preds = %326, %thread-pre-split528
  %338 = phi i16 [ %.pr529, %thread-pre-split528 ], [ %327, %326 ]
  switch i16 %338, label %341 [
    i16 5, label %.sink.split540
    i16 6, label %.sink.split540
    i16 34, label %.sink.split540
    i16 35, label %.sink.split540
    i16 36, label %.sink.split540
    i16 37, label %.sink.split540
    i16 25, label %339
    i16 26, label %339
  ]

339:                                              ; preds = %.thread527, %.thread527
  br label %.sink.split540

.sink.split540:                                   ; preds = %.thread527, %.thread527, %.thread527, %.thread527, %.thread527, %.thread527, %339
  %.sink542 = phi ptr [ %247, %339 ], [ %248, %.thread527 ], [ %248, %.thread527 ], [ %248, %.thread527 ], [ %248, %.thread527 ], [ %248, %.thread527 ], [ %248, %.thread527 ]
  %340 = load i32, ptr %.sink542, align 4, !tbaa !5
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_rv64_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %340, i32 noundef 51, i32 noundef %.1436.lcssa521, i32 noundef %.1434.lcssa522, i32 noundef %321)
  br label %341

341:                                              ; preds = %.sink.split540, %.thread527, %335, %._crit_edge.thread
  %342 = load i32, ptr %9, align 4, !tbaa !5
  %.not = icmp eq i32 %316, %342
  br i1 %.not, label %._crit_edge507, label %.preheader, !llvm.loop !40

._crit_edge507:                                   ; preds = %341, %230
  call void @libxsmm_finalize_kernel_vregs_rv64_masks(ptr noundef %0, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 17, i32 noundef 127, i32 noundef 127)
  br label %343

343:                                              ; preds = %._crit_edge507, %87
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #3
  ret void
}

declare void @libxsmm_rv64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass