; LLVM IR from libxsmm/libxsmm :: samples/equation (equation_simple)

; 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_kernel_info = type { i32, i32, i64, i32 }
%struct.libxsmm_meqn_param = type { ptr, ptr, %struct.libxsmm_matrix_arg }
%struct.libxsmm_matrix_arg = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.libxsmm_matdiff_info = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32 }
%struct.libxsmm_meqn_arg_metadata = type { i32, i32 }
%struct.libxsmm_meqn_op_metadata = type { i32, i32 }
%struct.libxsmm_meqn_arg_shape = type { i32, i32, i32, i32 }
%struct.libxsmm_matrix_arg_attributes = type { i32, i32, i32, i32 }

@is_reference_kernel = external dso_local global i32, align 4
@info = external dso_local global %struct.libxsmm_kernel_info, align 8
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_return_success_code(i32 noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %struct.libxsmm_meqn_param, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %struct.libxsmm_matdiff_info, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %58 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %59 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %60 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %61 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %62 = alloca %struct.libxsmm_meqn_arg_metadata, align 4
  %63 = alloca %struct.libxsmm_meqn_op_metadata, align 4
  %64 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %65 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %66 = alloca %struct.libxsmm_matrix_arg_attributes, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca %struct.libxsmm_meqn_op_metadata, align 4
  %76 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %77 = alloca %struct.libxsmm_meqn_arg_metadata, align 4
  %78 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %79 = alloca %struct.libxsmm_meqn_arg_metadata, align 4
  %80 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %81 = alloca %struct.libxsmm_meqn_arg_metadata, align 4
  %82 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  %83 = alloca %struct.libxsmm_meqn_arg_metadata, align 4
  %84 = alloca %struct.libxsmm_meqn_arg_shape, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  store double 1.000000e-05, ptr %7, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  store double 0.000000e+00, ptr %17, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store double 0.000000e+00, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 192, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #8
  %85 = call { i64, i64 } @libxsmm_create_matrix_arg_attributes(i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %86 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 0
  %87 = extractvalue { i64, i64 } %85, 0
  store i64 %87, ptr %86, align 4
  %88 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 1
  %89 = extractvalue { i64, i64 } %85, 1
  store i64 %89, ptr %88, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  store i32 64, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #8
  store i32 64, ptr %68, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #8
  store i32 64, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #8
  store i32 100, ptr %70, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #8
  store i32 0, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  store i32 1, ptr %72, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #8
  store i32 1, ptr %73, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #8
  store i32 1, ptr %74, align 4, !tbaa !5
  call void @libxsmm_init()
  %90 = load i32, ptr %4, align 4, !tbaa !5
  %91 = icmp sgt i32 %90, 1
  br i1 %91, label %92, label %97

92:                                               ; preds = %2
  %93 = load ptr, ptr %5, align 8, !tbaa !9
  %94 = getelementptr inbounds ptr, ptr %93, i64 1
  %95 = load ptr, ptr %94, align 8, !tbaa !9
  %96 = call i32 @atoi(ptr noundef %95) #9
  store i32 %96, ptr %67, align 4, !tbaa !5
  br label %97

97:                                               ; preds = %92, %2
  %98 = load i32, ptr %4, align 4, !tbaa !5
  %99 = icmp sgt i32 %98, 2
  br i1 %99, label %100, label %105

100:                                              ; preds = %97
  %101 = load ptr, ptr %5, align 8, !tbaa !9
  %102 = getelementptr inbounds ptr, ptr %101, i64 2
  %103 = load ptr, ptr %102, align 8, !tbaa !9
  %104 = call i32 @atoi(ptr noundef %103) #9
  store i32 %104, ptr %68, align 4, !tbaa !5
  br label %105

105:                                              ; preds = %100, %97
  %106 = load i32, ptr %4, align 4, !tbaa !5
  %107 = icmp sgt i32 %106, 3
  br i1 %107, label %108, label %113

108:                                              ; preds = %105
  %109 = load ptr, ptr %5, align 8, !tbaa !9
  %110 = getelementptr inbounds ptr, ptr %109, i64 3
  %111 = load ptr, ptr %110, align 8, !tbaa !9
  %112 = call i32 @atoi(ptr noundef %111) #9
  store i32 %112, ptr %69, align 4, !tbaa !5
  br label %113

113:                                              ; preds = %108, %105
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = icmp sgt i32 %114, 4
  br i1 %115, label %116, label %121

116:                                              ; preds = %113
  %117 = load ptr, ptr %5, align 8, !tbaa !9
  %118 = getelementptr inbounds ptr, ptr %117, i64 4
  %119 = load ptr, ptr %118, align 8, !tbaa !9
  %120 = call i32 @atoi(ptr noundef %119) #9
  store i32 %120, ptr %71, align 4, !tbaa !5
  br label %121

121:                                              ; preds = %116, %113
  %122 = load i32, ptr %4, align 4, !tbaa !5
  %123 = icmp sgt i32 %122, 5
  br i1 %123, label %124, label %129

124:                                              ; preds = %121
  %125 = load ptr, ptr %5, align 8, !tbaa !9
  %126 = getelementptr inbounds ptr, ptr %125, i64 5
  %127 = load ptr, ptr %126, align 8, !tbaa !9
  %128 = call i32 @atoi(ptr noundef %127) #9
  store i32 %128, ptr %70, align 4, !tbaa !5
  br label %129

129:                                              ; preds = %124, %121
  %130 = load i32, ptr %68, align 4, !tbaa !5
  %131 = sext i32 %130 to i64
  %132 = mul i64 4, %131
  %133 = load i32, ptr %69, align 4, !tbaa !5
  %134 = sext i32 %133 to i64
  %135 = mul i64 %132, %134
  %136 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %135, i64 noundef 64)
  store ptr %136, ptr %20, align 8, !tbaa !9
  %137 = load i32, ptr %68, align 4, !tbaa !5
  %138 = sext i32 %137 to i64
  %139 = mul i64 4, %138
  %140 = load i32, ptr %69, align 4, !tbaa !5
  %141 = sext i32 %140 to i64
  %142 = mul i64 %139, %141
  %143 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %142, i64 noundef 64)
  store ptr %143, ptr %21, align 8, !tbaa !9
  %144 = load i32, ptr %68, align 4, !tbaa !5
  %145 = sext i32 %144 to i64
  %146 = mul i64 4, %145
  %147 = load i32, ptr %69, align 4, !tbaa !5
  %148 = sext i32 %147 to i64
  %149 = mul i64 %146, %148
  %150 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %149, i64 noundef 64)
  store ptr %150, ptr %22, align 8, !tbaa !9
  %151 = load i32, ptr %68, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = mul i64 4, %152
  %154 = load i32, ptr %69, align 4, !tbaa !5
  %155 = sext i32 %154 to i64
  %156 = mul i64 %153, %155
  %157 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %156, i64 noundef 64)
  store ptr %157, ptr %23, align 8, !tbaa !9
  %158 = load i32, ptr %68, align 4, !tbaa !5
  %159 = sext i32 %158 to i64
  %160 = mul i64 4, %159
  %161 = load i32, ptr %69, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = mul i64 %160, %162
  %164 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %163, i64 noundef 64)
  store ptr %164, ptr %24, align 8, !tbaa !9
  %165 = load i32, ptr %68, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = mul i64 4, %166
  %168 = load i32, ptr %69, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = mul i64 %167, %169
  %171 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %170, i64 noundef 64)
  store ptr %171, ptr %25, align 8, !tbaa !9
  %172 = load i32, ptr %68, align 4, !tbaa !5
  %173 = sext i32 %172 to i64
  %174 = mul i64 8, %173
  %175 = load i32, ptr %69, align 4, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = mul i64 %174, %176
  %178 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %177, i64 noundef 64)
  store ptr %178, ptr %27, align 8, !tbaa !9
  %179 = load i32, ptr %68, align 4, !tbaa !5
  %180 = sext i32 %179 to i64
  %181 = mul i64 8, %180
  %182 = load i32, ptr %69, align 4, !tbaa !5
  %183 = sext i32 %182 to i64
  %184 = mul i64 %181, %183
  %185 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %184, i64 noundef 64)
  store ptr %185, ptr %28, align 8, !tbaa !9
  %186 = load i32, ptr %68, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = mul i64 8, %187
  %189 = load i32, ptr %69, align 4, !tbaa !5
  %190 = sext i32 %189 to i64
  %191 = mul i64 %188, %190
  %192 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %191, i64 noundef 64)
  store ptr %192, ptr %29, align 8, !tbaa !9
  %193 = load i32, ptr %68, align 4, !tbaa !5
  %194 = sext i32 %193 to i64
  %195 = mul i64 8, %194
  %196 = load i32, ptr %69, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %198 = mul i64 %195, %197
  %199 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %198, i64 noundef 64)
  store ptr %199, ptr %30, align 8, !tbaa !9
  %200 = load i32, ptr %68, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = mul i64 8, %201
  %203 = load i32, ptr %69, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = mul i64 %202, %204
  %206 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %205, i64 noundef 64)
  store ptr %206, ptr %31, align 8, !tbaa !9
  %207 = load i32, ptr %68, align 4, !tbaa !5
  %208 = sext i32 %207 to i64
  %209 = mul i64 8, %208
  %210 = load i32, ptr %69, align 4, !tbaa !5
  %211 = sext i32 %210 to i64
  %212 = mul i64 %209, %211
  %213 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %212, i64 noundef 64)
  store ptr %213, ptr %32, align 8, !tbaa !9
  %214 = load i32, ptr %68, align 4, !tbaa !5
  %215 = sext i32 %214 to i64
  %216 = mul i64 2, %215
  %217 = load i32, ptr %69, align 4, !tbaa !5
  %218 = sext i32 %217 to i64
  %219 = mul i64 %216, %218
  %220 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %219, i64 noundef 64)
  store ptr %220, ptr %33, align 8, !tbaa !9
  %221 = load i32, ptr %68, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %223 = mul i64 2, %222
  %224 = load i32, ptr %69, align 4, !tbaa !5
  %225 = sext i32 %224 to i64
  %226 = mul i64 %223, %225
  %227 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %226, i64 noundef 64)
  store ptr %227, ptr %34, align 8, !tbaa !9
  %228 = load i32, ptr %68, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %230 = mul i64 2, %229
  %231 = load i32, ptr %69, align 4, !tbaa !5
  %232 = sext i32 %231 to i64
  %233 = mul i64 %230, %232
  %234 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %233, i64 noundef 64)
  store ptr %234, ptr %35, align 8, !tbaa !9
  %235 = load i32, ptr %68, align 4, !tbaa !5
  %236 = sext i32 %235 to i64
  %237 = mul i64 2, %236
  %238 = load i32, ptr %69, align 4, !tbaa !5
  %239 = sext i32 %238 to i64
  %240 = mul i64 %237, %239
  %241 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %240, i64 noundef 64)
  store ptr %241, ptr %36, align 8, !tbaa !9
  %242 = load i32, ptr %68, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %244 = mul i64 2, %243
  %245 = load i32, ptr %69, align 4, !tbaa !5
  %246 = sext i32 %245 to i64
  %247 = mul i64 %244, %246
  %248 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %247, i64 noundef 64)
  store ptr %248, ptr %37, align 8, !tbaa !9
  %249 = load i32, ptr %68, align 4, !tbaa !5
  %250 = sext i32 %249 to i64
  %251 = mul i64 2, %250
  %252 = load i32, ptr %69, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %254 = mul i64 %251, %253
  %255 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %254, i64 noundef 64)
  store ptr %255, ptr %38, align 8, !tbaa !9
  %256 = load i32, ptr %68, align 4, !tbaa !5
  %257 = sext i32 %256 to i64
  %258 = mul i64 2, %257
  %259 = load i32, ptr %69, align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %261 = mul i64 %258, %260
  %262 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %261, i64 noundef 64)
  store ptr %262, ptr %39, align 8, !tbaa !9
  %263 = load i32, ptr %68, align 4, !tbaa !5
  %264 = sext i32 %263 to i64
  %265 = mul i64 2, %264
  %266 = load i32, ptr %69, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %268 = mul i64 %265, %267
  %269 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %268, i64 noundef 64)
  store ptr %269, ptr %40, align 8, !tbaa !9
  %270 = load i32, ptr %68, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = mul i64 2, %271
  %273 = load i32, ptr %69, align 4, !tbaa !5
  %274 = sext i32 %273 to i64
  %275 = mul i64 %272, %274
  %276 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %275, i64 noundef 64)
  store ptr %276, ptr %41, align 8, !tbaa !9
  %277 = load i32, ptr %68, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = mul i64 2, %278
  %280 = load i32, ptr %69, align 4, !tbaa !5
  %281 = sext i32 %280 to i64
  %282 = mul i64 %279, %281
  %283 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %282, i64 noundef 64)
  store ptr %283, ptr %42, align 8, !tbaa !9
  %284 = load i32, ptr %68, align 4, !tbaa !5
  %285 = sext i32 %284 to i64
  %286 = mul i64 2, %285
  %287 = load i32, ptr %69, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = mul i64 %286, %288
  %290 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %289, i64 noundef 64)
  store ptr %290, ptr %43, align 8, !tbaa !9
  %291 = load i32, ptr %68, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = mul i64 2, %292
  %294 = load i32, ptr %69, align 4, !tbaa !5
  %295 = sext i32 %294 to i64
  %296 = mul i64 %293, %295
  %297 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %296, i64 noundef 64)
  store ptr %297, ptr %44, align 8, !tbaa !9
  %298 = load i32, ptr %68, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %300 = mul i64 1, %299
  %301 = load i32, ptr %69, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = mul i64 %300, %302
  %304 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %303, i64 noundef 64)
  store ptr %304, ptr %45, align 8, !tbaa !9
  %305 = load i32, ptr %68, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %307 = mul i64 1, %306
  %308 = load i32, ptr %69, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = mul i64 %307, %309
  %311 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %310, i64 noundef 64)
  store ptr %311, ptr %46, align 8, !tbaa !9
  %312 = load i32, ptr %68, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = mul i64 1, %313
  %315 = load i32, ptr %69, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = mul i64 %314, %316
  %318 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %317, i64 noundef 64)
  store ptr %318, ptr %47, align 8, !tbaa !9
  %319 = load i32, ptr %68, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = mul i64 1, %320
  %322 = load i32, ptr %69, align 4, !tbaa !5
  %323 = sext i32 %322 to i64
  %324 = mul i64 %321, %323
  %325 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %324, i64 noundef 64)
  store ptr %325, ptr %48, align 8, !tbaa !9
  %326 = load i32, ptr %68, align 4, !tbaa !5
  %327 = sext i32 %326 to i64
  %328 = mul i64 1, %327
  %329 = load i32, ptr %69, align 4, !tbaa !5
  %330 = sext i32 %329 to i64
  %331 = mul i64 %328, %330
  %332 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %331, i64 noundef 64)
  store ptr %332, ptr %49, align 8, !tbaa !9
  %333 = load i32, ptr %68, align 4, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = mul i64 1, %334
  %336 = load i32, ptr %69, align 4, !tbaa !5
  %337 = sext i32 %336 to i64
  %338 = mul i64 %335, %337
  %339 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %338, i64 noundef 64)
  store ptr %339, ptr %50, align 8, !tbaa !9
  %340 = load i32, ptr %68, align 4, !tbaa !5
  %341 = sext i32 %340 to i64
  %342 = mul i64 1, %341
  %343 = load i32, ptr %69, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %345 = mul i64 %342, %344
  %346 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %345, i64 noundef 64)
  store ptr %346, ptr %51, align 8, !tbaa !9
  %347 = load i32, ptr %68, align 4, !tbaa !5
  %348 = sext i32 %347 to i64
  %349 = mul i64 1, %348
  %350 = load i32, ptr %69, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = mul i64 %349, %351
  %353 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %352, i64 noundef 64)
  store ptr %353, ptr %52, align 8, !tbaa !9
  %354 = load i32, ptr %68, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = mul i64 1, %355
  %357 = load i32, ptr %69, align 4, !tbaa !5
  %358 = sext i32 %357 to i64
  %359 = mul i64 %356, %358
  %360 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %359, i64 noundef 64)
  store ptr %360, ptr %53, align 8, !tbaa !9
  %361 = load i32, ptr %68, align 4, !tbaa !5
  %362 = sext i32 %361 to i64
  %363 = mul i64 1, %362
  %364 = load i32, ptr %69, align 4, !tbaa !5
  %365 = sext i32 %364 to i64
  %366 = mul i64 %363, %365
  %367 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %366, i64 noundef 64)
  store ptr %367, ptr %54, align 8, !tbaa !9
  %368 = load i32, ptr %68, align 4, !tbaa !5
  %369 = sext i32 %368 to i64
  %370 = mul i64 1, %369
  %371 = load i32, ptr %69, align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %373 = mul i64 %370, %372
  %374 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %373, i64 noundef 64)
  store ptr %374, ptr %55, align 8, !tbaa !9
  %375 = load i32, ptr %68, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = mul i64 1, %376
  %378 = load i32, ptr %69, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = mul i64 %377, %379
  %381 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %380, i64 noundef 64)
  store ptr %381, ptr %56, align 8, !tbaa !9
  %382 = load i32, ptr %71, align 4, !tbaa !5
  call void @set_in_out_compute_dt(i32 noundef %382, ptr noundef %72, ptr noundef %73, ptr noundef %74)
  call void @libxsmm_matdiff_clear(ptr noundef %19)
  %383 = load i32, ptr %72, align 4, !tbaa !5
  %384 = icmp eq i32 %383, 2
  br i1 %384, label %388, label %385

385:                                              ; preds = %129
  %386 = load i32, ptr %73, align 4, !tbaa !5
  %387 = icmp eq i32 %386, 2
  br i1 %387, label %388, label %389

388:                                              ; preds = %385, %129
  store double 1.000000e-03, ptr %7, align 8, !tbaa !11
  br label %413

389:                                              ; preds = %385
  %390 = load i32, ptr %72, align 4, !tbaa !5
  %391 = icmp eq i32 %390, 3
  br i1 %391, label %395, label %392

392:                                              ; preds = %389
  %393 = load i32, ptr %73, align 4, !tbaa !5
  %394 = icmp eq i32 %393, 3
  br i1 %394, label %395, label %396

395:                                              ; preds = %392, %389
  store double 1.000000e-03, ptr %7, align 8, !tbaa !11
  br label %412

396:                                              ; preds = %392
  %397 = load i32, ptr %72, align 4, !tbaa !5
  %398 = icmp eq i32 %397, 5
  br i1 %398, label %402, label %399

399:                                              ; preds = %396
  %400 = load i32, ptr %73, align 4, !tbaa !5
  %401 = icmp eq i32 %400, 5
  br i1 %401, label %402, label %403

402:                                              ; preds = %399, %396
  store double 1.000000e-02, ptr %7, align 8, !tbaa !11
  br label %411

403:                                              ; preds = %399
  %404 = load i32, ptr %72, align 4, !tbaa !5
  %405 = icmp eq i32 %404, 4
  br i1 %405, label %409, label %406

406:                                              ; preds = %403
  %407 = load i32, ptr %73, align 4, !tbaa !5
  %408 = icmp eq i32 %407, 4
  br i1 %408, label %409, label %410

409:                                              ; preds = %406, %403
  store double 1.000000e-02, ptr %7, align 8, !tbaa !11
  br label %410

410:                                              ; preds = %409, %406
  br label %411

411:                                              ; preds = %410, %402
  br label %412

412:                                              ; preds = %411, %395
  br label %413

413:                                              ; preds = %412, %388
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %414

414:                                              ; preds = %981, %413
  %415 = load i32, ptr %10, align 4, !tbaa !5
  %416 = load i32, ptr %68, align 4, !tbaa !5
  %417 = icmp slt i32 %415, %416
  br i1 %417, label %418, label %984

418:                                              ; preds = %414
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %419

419:                                              ; preds = %977, %418
  %420 = load i32, ptr %11, align 4, !tbaa !5
  %421 = load i32, ptr %69, align 4, !tbaa !5
  %422 = icmp slt i32 %420, %421
  br i1 %422, label %423, label %980

423:                                              ; preds = %419
  %424 = call double @libxsmm_rng_f64()
  %425 = load ptr, ptr %27, align 8, !tbaa !9
  %426 = load i32, ptr %10, align 4, !tbaa !5
  %427 = load i32, ptr %69, align 4, !tbaa !5
  %428 = mul nsw i32 %426, %427
  %429 = load i32, ptr %11, align 4, !tbaa !5
  %430 = add nsw i32 %428, %429
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %425, i64 %431
  store double %424, ptr %432, align 8, !tbaa !11
  %433 = call double @libxsmm_rng_f64()
  %434 = load ptr, ptr %28, align 8, !tbaa !9
  %435 = load i32, ptr %10, align 4, !tbaa !5
  %436 = load i32, ptr %69, align 4, !tbaa !5
  %437 = mul nsw i32 %435, %436
  %438 = load i32, ptr %11, align 4, !tbaa !5
  %439 = add nsw i32 %437, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %434, i64 %440
  store double %433, ptr %441, align 8, !tbaa !11
  %442 = call double @libxsmm_rng_f64()
  %443 = load ptr, ptr %29, align 8, !tbaa !9
  %444 = load i32, ptr %10, align 4, !tbaa !5
  %445 = load i32, ptr %69, align 4, !tbaa !5
  %446 = mul nsw i32 %444, %445
  %447 = load i32, ptr %11, align 4, !tbaa !5
  %448 = add nsw i32 %446, %447
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %443, i64 %449
  store double %442, ptr %450, align 8, !tbaa !11
  %451 = call double @libxsmm_rng_f64()
  %452 = load ptr, ptr %30, align 8, !tbaa !9
  %453 = load i32, ptr %10, align 4, !tbaa !5
  %454 = load i32, ptr %69, align 4, !tbaa !5
  %455 = mul nsw i32 %453, %454
  %456 = load i32, ptr %11, align 4, !tbaa !5
  %457 = add nsw i32 %455, %456
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %452, i64 %458
  store double %451, ptr %459, align 8, !tbaa !11
  %460 = call double @libxsmm_rng_f64()
  %461 = load ptr, ptr %31, align 8, !tbaa !9
  %462 = load i32, ptr %10, align 4, !tbaa !5
  %463 = load i32, ptr %69, align 4, !tbaa !5
  %464 = mul nsw i32 %462, %463
  %465 = load i32, ptr %11, align 4, !tbaa !5
  %466 = add nsw i32 %464, %465
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %461, i64 %467
  store double %460, ptr %468, align 8, !tbaa !11
  %469 = load ptr, ptr %31, align 8, !tbaa !9
  %470 = load i32, ptr %10, align 4, !tbaa !5
  %471 = load i32, ptr %69, align 4, !tbaa !5
  %472 = mul nsw i32 %470, %471
  %473 = load i32, ptr %11, align 4, !tbaa !5
  %474 = add nsw i32 %472, %473
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %469, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %32, align 8, !tbaa !9
  %479 = load i32, ptr %10, align 4, !tbaa !5
  %480 = load i32, ptr %69, align 4, !tbaa !5
  %481 = mul nsw i32 %479, %480
  %482 = load i32, ptr %11, align 4, !tbaa !5
  %483 = add nsw i32 %481, %482
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %478, i64 %484
  store double %477, ptr %485, align 8, !tbaa !11
  %486 = load ptr, ptr %27, align 8, !tbaa !9
  %487 = load i32, ptr %10, align 4, !tbaa !5
  %488 = load i32, ptr %69, align 4, !tbaa !5
  %489 = mul nsw i32 %487, %488
  %490 = load i32, ptr %11, align 4, !tbaa !5
  %491 = add nsw i32 %489, %490
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds double, ptr %486, i64 %492
  %494 = load double, ptr %493, align 8, !tbaa !11
  %495 = fptrunc double %494 to float
  %496 = load ptr, ptr %20, align 8, !tbaa !9
  %497 = load i32, ptr %10, align 4, !tbaa !5
  %498 = load i32, ptr %69, align 4, !tbaa !5
  %499 = mul nsw i32 %497, %498
  %500 = load i32, ptr %11, align 4, !tbaa !5
  %501 = add nsw i32 %499, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds float, ptr %496, i64 %502
  store float %495, ptr %503, align 4, !tbaa !13
  %504 = load ptr, ptr %28, align 8, !tbaa !9
  %505 = load i32, ptr %10, align 4, !tbaa !5
  %506 = load i32, ptr %69, align 4, !tbaa !5
  %507 = mul nsw i32 %505, %506
  %508 = load i32, ptr %11, align 4, !tbaa !5
  %509 = add nsw i32 %507, %508
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %504, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = fptrunc double %512 to float
  %514 = load ptr, ptr %21, align 8, !tbaa !9
  %515 = load i32, ptr %10, align 4, !tbaa !5
  %516 = load i32, ptr %69, align 4, !tbaa !5
  %517 = mul nsw i32 %515, %516
  %518 = load i32, ptr %11, align 4, !tbaa !5
  %519 = add nsw i32 %517, %518
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds float, ptr %514, i64 %520
  store float %513, ptr %521, align 4, !tbaa !13
  %522 = load ptr, ptr %29, align 8, !tbaa !9
  %523 = load i32, ptr %10, align 4, !tbaa !5
  %524 = load i32, ptr %69, align 4, !tbaa !5
  %525 = mul nsw i32 %523, %524
  %526 = load i32, ptr %11, align 4, !tbaa !5
  %527 = add nsw i32 %525, %526
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %522, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !11
  %531 = fptrunc double %530 to float
  %532 = load ptr, ptr %22, align 8, !tbaa !9
  %533 = load i32, ptr %10, align 4, !tbaa !5
  %534 = load i32, ptr %69, align 4, !tbaa !5
  %535 = mul nsw i32 %533, %534
  %536 = load i32, ptr %11, align 4, !tbaa !5
  %537 = add nsw i32 %535, %536
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %532, i64 %538
  store float %531, ptr %539, align 4, !tbaa !13
  %540 = load ptr, ptr %30, align 8, !tbaa !9
  %541 = load i32, ptr %10, align 4, !tbaa !5
  %542 = load i32, ptr %69, align 4, !tbaa !5
  %543 = mul nsw i32 %541, %542
  %544 = load i32, ptr %11, align 4, !tbaa !5
  %545 = add nsw i32 %543, %544
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %540, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !11
  %549 = fptrunc double %548 to float
  %550 = load ptr, ptr %23, align 8, !tbaa !9
  %551 = load i32, ptr %10, align 4, !tbaa !5
  %552 = load i32, ptr %69, align 4, !tbaa !5
  %553 = mul nsw i32 %551, %552
  %554 = load i32, ptr %11, align 4, !tbaa !5
  %555 = add nsw i32 %553, %554
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds float, ptr %550, i64 %556
  store float %549, ptr %557, align 4, !tbaa !13
  %558 = load ptr, ptr %31, align 8, !tbaa !9
  %559 = load i32, ptr %10, align 4, !tbaa !5
  %560 = load i32, ptr %69, align 4, !tbaa !5
  %561 = mul nsw i32 %559, %560
  %562 = load i32, ptr %11, align 4, !tbaa !5
  %563 = add nsw i32 %561, %562
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %558, i64 %564
  %566 = load double, ptr %565, align 8, !tbaa !11
  %567 = fptrunc double %566 to float
  %568 = load ptr, ptr %24, align 8, !tbaa !9
  %569 = load i32, ptr %10, align 4, !tbaa !5
  %570 = load i32, ptr %69, align 4, !tbaa !5
  %571 = mul nsw i32 %569, %570
  %572 = load i32, ptr %11, align 4, !tbaa !5
  %573 = add nsw i32 %571, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds float, ptr %568, i64 %574
  store float %567, ptr %575, align 4, !tbaa !13
  %576 = load ptr, ptr %24, align 8, !tbaa !9
  %577 = load i32, ptr %10, align 4, !tbaa !5
  %578 = load i32, ptr %69, align 4, !tbaa !5
  %579 = mul nsw i32 %577, %578
  %580 = load i32, ptr %11, align 4, !tbaa !5
  %581 = add nsw i32 %579, %580
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds float, ptr %576, i64 %582
  %584 = load float, ptr %583, align 4, !tbaa !13
  %585 = load ptr, ptr %25, align 8, !tbaa !9
  %586 = load i32, ptr %10, align 4, !tbaa !5
  %587 = load i32, ptr %69, align 4, !tbaa !5
  %588 = mul nsw i32 %586, %587
  %589 = load i32, ptr %11, align 4, !tbaa !5
  %590 = add nsw i32 %588, %589
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds float, ptr %585, i64 %591
  store float %584, ptr %592, align 4, !tbaa !13
  %593 = load ptr, ptr %20, align 8, !tbaa !9
  %594 = load i32, ptr %10, align 4, !tbaa !5
  %595 = load i32, ptr %69, align 4, !tbaa !5
  %596 = mul nsw i32 %594, %595
  %597 = load i32, ptr %11, align 4, !tbaa !5
  %598 = add nsw i32 %596, %597
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds float, ptr %593, i64 %599
  %601 = load ptr, ptr %33, align 8, !tbaa !9
  %602 = load i32, ptr %10, align 4, !tbaa !5
  %603 = load i32, ptr %69, align 4, !tbaa !5
  %604 = mul nsw i32 %602, %603
  %605 = load i32, ptr %11, align 4, !tbaa !5
  %606 = add nsw i32 %604, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i16, ptr %601, i64 %607
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %600, ptr noundef %608, i64 noundef 1)
  %609 = load ptr, ptr %21, align 8, !tbaa !9
  %610 = load i32, ptr %10, align 4, !tbaa !5
  %611 = load i32, ptr %69, align 4, !tbaa !5
  %612 = mul nsw i32 %610, %611
  %613 = load i32, ptr %11, align 4, !tbaa !5
  %614 = add nsw i32 %612, %613
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds float, ptr %609, i64 %615
  %617 = load ptr, ptr %34, align 8, !tbaa !9
  %618 = load i32, ptr %10, align 4, !tbaa !5
  %619 = load i32, ptr %69, align 4, !tbaa !5
  %620 = mul nsw i32 %618, %619
  %621 = load i32, ptr %11, align 4, !tbaa !5
  %622 = add nsw i32 %620, %621
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i16, ptr %617, i64 %623
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %616, ptr noundef %624, i64 noundef 1)
  %625 = load ptr, ptr %22, align 8, !tbaa !9
  %626 = load i32, ptr %10, align 4, !tbaa !5
  %627 = load i32, ptr %69, align 4, !tbaa !5
  %628 = mul nsw i32 %626, %627
  %629 = load i32, ptr %11, align 4, !tbaa !5
  %630 = add nsw i32 %628, %629
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds float, ptr %625, i64 %631
  %633 = load ptr, ptr %35, align 8, !tbaa !9
  %634 = load i32, ptr %10, align 4, !tbaa !5
  %635 = load i32, ptr %69, align 4, !tbaa !5
  %636 = mul nsw i32 %634, %635
  %637 = load i32, ptr %11, align 4, !tbaa !5
  %638 = add nsw i32 %636, %637
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i16, ptr %633, i64 %639
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %632, ptr noundef %640, i64 noundef 1)
  %641 = load ptr, ptr %23, align 8, !tbaa !9
  %642 = load i32, ptr %10, align 4, !tbaa !5
  %643 = load i32, ptr %69, align 4, !tbaa !5
  %644 = mul nsw i32 %642, %643
  %645 = load i32, ptr %11, align 4, !tbaa !5
  %646 = add nsw i32 %644, %645
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds float, ptr %641, i64 %647
  %649 = load ptr, ptr %36, align 8, !tbaa !9
  %650 = load i32, ptr %10, align 4, !tbaa !5
  %651 = load i32, ptr %69, align 4, !tbaa !5
  %652 = mul nsw i32 %650, %651
  %653 = load i32, ptr %11, align 4, !tbaa !5
  %654 = add nsw i32 %652, %653
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds i16, ptr %649, i64 %655
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %648, ptr noundef %656, i64 noundef 1)
  %657 = load ptr, ptr %24, align 8, !tbaa !9
  %658 = load i32, ptr %10, align 4, !tbaa !5
  %659 = load i32, ptr %69, align 4, !tbaa !5
  %660 = mul nsw i32 %658, %659
  %661 = load i32, ptr %11, align 4, !tbaa !5
  %662 = add nsw i32 %660, %661
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds float, ptr %657, i64 %663
  %665 = load ptr, ptr %37, align 8, !tbaa !9
  %666 = load i32, ptr %10, align 4, !tbaa !5
  %667 = load i32, ptr %69, align 4, !tbaa !5
  %668 = mul nsw i32 %666, %667
  %669 = load i32, ptr %11, align 4, !tbaa !5
  %670 = add nsw i32 %668, %669
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds i16, ptr %665, i64 %671
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %664, ptr noundef %672, i64 noundef 1)
  %673 = load ptr, ptr %25, align 8, !tbaa !9
  %674 = load i32, ptr %10, align 4, !tbaa !5
  %675 = load i32, ptr %69, align 4, !tbaa !5
  %676 = mul nsw i32 %674, %675
  %677 = load i32, ptr %11, align 4, !tbaa !5
  %678 = add nsw i32 %676, %677
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds float, ptr %673, i64 %679
  %681 = load ptr, ptr %38, align 8, !tbaa !9
  %682 = load i32, ptr %10, align 4, !tbaa !5
  %683 = load i32, ptr %69, align 4, !tbaa !5
  %684 = mul nsw i32 %682, %683
  %685 = load i32, ptr %11, align 4, !tbaa !5
  %686 = add nsw i32 %684, %685
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds i16, ptr %681, i64 %687
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %680, ptr noundef %688, i64 noundef 1)
  %689 = load ptr, ptr %20, align 8, !tbaa !9
  %690 = load i32, ptr %10, align 4, !tbaa !5
  %691 = load i32, ptr %69, align 4, !tbaa !5
  %692 = mul nsw i32 %690, %691
  %693 = load i32, ptr %11, align 4, !tbaa !5
  %694 = add nsw i32 %692, %693
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds float, ptr %689, i64 %695
  %697 = load ptr, ptr %39, align 8, !tbaa !9
  %698 = load i32, ptr %10, align 4, !tbaa !5
  %699 = load i32, ptr %69, align 4, !tbaa !5
  %700 = mul nsw i32 %698, %699
  %701 = load i32, ptr %11, align 4, !tbaa !5
  %702 = add nsw i32 %700, %701
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i16, ptr %697, i64 %703
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %696, ptr noundef %704, i64 noundef 1)
  %705 = load ptr, ptr %21, align 8, !tbaa !9
  %706 = load i32, ptr %10, align 4, !tbaa !5
  %707 = load i32, ptr %69, align 4, !tbaa !5
  %708 = mul nsw i32 %706, %707
  %709 = load i32, ptr %11, align 4, !tbaa !5
  %710 = add nsw i32 %708, %709
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds float, ptr %705, i64 %711
  %713 = load ptr, ptr %40, align 8, !tbaa !9
  %714 = load i32, ptr %10, align 4, !tbaa !5
  %715 = load i32, ptr %69, align 4, !tbaa !5
  %716 = mul nsw i32 %714, %715
  %717 = load i32, ptr %11, align 4, !tbaa !5
  %718 = add nsw i32 %716, %717
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds i16, ptr %713, i64 %719
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %712, ptr noundef %720, i64 noundef 1)
  %721 = load ptr, ptr %22, align 8, !tbaa !9
  %722 = load i32, ptr %10, align 4, !tbaa !5
  %723 = load i32, ptr %69, align 4, !tbaa !5
  %724 = mul nsw i32 %722, %723
  %725 = load i32, ptr %11, align 4, !tbaa !5
  %726 = add nsw i32 %724, %725
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds float, ptr %721, i64 %727
  %729 = load ptr, ptr %41, align 8, !tbaa !9
  %730 = load i32, ptr %10, align 4, !tbaa !5
  %731 = load i32, ptr %69, align 4, !tbaa !5
  %732 = mul nsw i32 %730, %731
  %733 = load i32, ptr %11, align 4, !tbaa !5
  %734 = add nsw i32 %732, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i16, ptr %729, i64 %735
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %728, ptr noundef %736, i64 noundef 1)
  %737 = load ptr, ptr %23, align 8, !tbaa !9
  %738 = load i32, ptr %10, align 4, !tbaa !5
  %739 = load i32, ptr %69, align 4, !tbaa !5
  %740 = mul nsw i32 %738, %739
  %741 = load i32, ptr %11, align 4, !tbaa !5
  %742 = add nsw i32 %740, %741
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds float, ptr %737, i64 %743
  %745 = load ptr, ptr %42, align 8, !tbaa !9
  %746 = load i32, ptr %10, align 4, !tbaa !5
  %747 = load i32, ptr %69, align 4, !tbaa !5
  %748 = mul nsw i32 %746, %747
  %749 = load i32, ptr %11, align 4, !tbaa !5
  %750 = add nsw i32 %748, %749
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i16, ptr %745, i64 %751
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %744, ptr noundef %752, i64 noundef 1)
  %753 = load ptr, ptr %24, align 8, !tbaa !9
  %754 = load i32, ptr %10, align 4, !tbaa !5
  %755 = load i32, ptr %69, align 4, !tbaa !5
  %756 = mul nsw i32 %754, %755
  %757 = load i32, ptr %11, align 4, !tbaa !5
  %758 = add nsw i32 %756, %757
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds float, ptr %753, i64 %759
  %761 = load ptr, ptr %43, align 8, !tbaa !9
  %762 = load i32, ptr %10, align 4, !tbaa !5
  %763 = load i32, ptr %69, align 4, !tbaa !5
  %764 = mul nsw i32 %762, %763
  %765 = load i32, ptr %11, align 4, !tbaa !5
  %766 = add nsw i32 %764, %765
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds i16, ptr %761, i64 %767
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %760, ptr noundef %768, i64 noundef 1)
  %769 = load ptr, ptr %25, align 8, !tbaa !9
  %770 = load i32, ptr %10, align 4, !tbaa !5
  %771 = load i32, ptr %69, align 4, !tbaa !5
  %772 = mul nsw i32 %770, %771
  %773 = load i32, ptr %11, align 4, !tbaa !5
  %774 = add nsw i32 %772, %773
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds float, ptr %769, i64 %775
  %777 = load ptr, ptr %44, align 8, !tbaa !9
  %778 = load i32, ptr %10, align 4, !tbaa !5
  %779 = load i32, ptr %69, align 4, !tbaa !5
  %780 = mul nsw i32 %778, %779
  %781 = load i32, ptr %11, align 4, !tbaa !5
  %782 = add nsw i32 %780, %781
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds i16, ptr %777, i64 %783
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %776, ptr noundef %784, i64 noundef 1)
  %785 = load ptr, ptr %20, align 8, !tbaa !9
  %786 = load i32, ptr %10, align 4, !tbaa !5
  %787 = load i32, ptr %69, align 4, !tbaa !5
  %788 = mul nsw i32 %786, %787
  %789 = load i32, ptr %11, align 4, !tbaa !5
  %790 = add nsw i32 %788, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds float, ptr %785, i64 %791
  %793 = load ptr, ptr %45, align 8, !tbaa !9
  %794 = load i32, ptr %10, align 4, !tbaa !5
  %795 = load i32, ptr %69, align 4, !tbaa !5
  %796 = mul nsw i32 %794, %795
  %797 = load i32, ptr %11, align 4, !tbaa !5
  %798 = add nsw i32 %796, %797
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds i8, ptr %793, i64 %799
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %792, ptr noundef %800, i64 noundef 1)
  %801 = load ptr, ptr %21, align 8, !tbaa !9
  %802 = load i32, ptr %10, align 4, !tbaa !5
  %803 = load i32, ptr %69, align 4, !tbaa !5
  %804 = mul nsw i32 %802, %803
  %805 = load i32, ptr %11, align 4, !tbaa !5
  %806 = add nsw i32 %804, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds float, ptr %801, i64 %807
  %809 = load ptr, ptr %46, align 8, !tbaa !9
  %810 = load i32, ptr %10, align 4, !tbaa !5
  %811 = load i32, ptr %69, align 4, !tbaa !5
  %812 = mul nsw i32 %810, %811
  %813 = load i32, ptr %11, align 4, !tbaa !5
  %814 = add nsw i32 %812, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds i8, ptr %809, i64 %815
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %808, ptr noundef %816, i64 noundef 1)
  %817 = load ptr, ptr %22, align 8, !tbaa !9
  %818 = load i32, ptr %10, align 4, !tbaa !5
  %819 = load i32, ptr %69, align 4, !tbaa !5
  %820 = mul nsw i32 %818, %819
  %821 = load i32, ptr %11, align 4, !tbaa !5
  %822 = add nsw i32 %820, %821
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds float, ptr %817, i64 %823
  %825 = load ptr, ptr %47, align 8, !tbaa !9
  %826 = load i32, ptr %10, align 4, !tbaa !5
  %827 = load i32, ptr %69, align 4, !tbaa !5
  %828 = mul nsw i32 %826, %827
  %829 = load i32, ptr %11, align 4, !tbaa !5
  %830 = add nsw i32 %828, %829
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds i8, ptr %825, i64 %831
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %824, ptr noundef %832, i64 noundef 1)
  %833 = load ptr, ptr %23, align 8, !tbaa !9
  %834 = load i32, ptr %10, align 4, !tbaa !5
  %835 = load i32, ptr %69, align 4, !tbaa !5
  %836 = mul nsw i32 %834, %835
  %837 = load i32, ptr %11, align 4, !tbaa !5
  %838 = add nsw i32 %836, %837
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds float, ptr %833, i64 %839
  %841 = load ptr, ptr %48, align 8, !tbaa !9
  %842 = load i32, ptr %10, align 4, !tbaa !5
  %843 = load i32, ptr %69, align 4, !tbaa !5
  %844 = mul nsw i32 %842, %843
  %845 = load i32, ptr %11, align 4, !tbaa !5
  %846 = add nsw i32 %844, %845
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i8, ptr %841, i64 %847
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %840, ptr noundef %848, i64 noundef 1)
  %849 = load ptr, ptr %24, align 8, !tbaa !9
  %850 = load i32, ptr %10, align 4, !tbaa !5
  %851 = load i32, ptr %69, align 4, !tbaa !5
  %852 = mul nsw i32 %850, %851
  %853 = load i32, ptr %11, align 4, !tbaa !5
  %854 = add nsw i32 %852, %853
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds float, ptr %849, i64 %855
  %857 = load ptr, ptr %49, align 8, !tbaa !9
  %858 = load i32, ptr %10, align 4, !tbaa !5
  %859 = load i32, ptr %69, align 4, !tbaa !5
  %860 = mul nsw i32 %858, %859
  %861 = load i32, ptr %11, align 4, !tbaa !5
  %862 = add nsw i32 %860, %861
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds i8, ptr %857, i64 %863
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %856, ptr noundef %864, i64 noundef 1)
  %865 = load ptr, ptr %25, align 8, !tbaa !9
  %866 = load i32, ptr %10, align 4, !tbaa !5
  %867 = load i32, ptr %69, align 4, !tbaa !5
  %868 = mul nsw i32 %866, %867
  %869 = load i32, ptr %11, align 4, !tbaa !5
  %870 = add nsw i32 %868, %869
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds float, ptr %865, i64 %871
  %873 = load ptr, ptr %50, align 8, !tbaa !9
  %874 = load i32, ptr %10, align 4, !tbaa !5
  %875 = load i32, ptr %69, align 4, !tbaa !5
  %876 = mul nsw i32 %874, %875
  %877 = load i32, ptr %11, align 4, !tbaa !5
  %878 = add nsw i32 %876, %877
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds i8, ptr %873, i64 %879
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef %872, ptr noundef %880, i64 noundef 1)
  %881 = load ptr, ptr %20, align 8, !tbaa !9
  %882 = load i32, ptr %10, align 4, !tbaa !5
  %883 = load i32, ptr %69, align 4, !tbaa !5
  %884 = mul nsw i32 %882, %883
  %885 = load i32, ptr %11, align 4, !tbaa !5
  %886 = add nsw i32 %884, %885
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds float, ptr %881, i64 %887
  %889 = load ptr, ptr %51, align 8, !tbaa !9
  %890 = load i32, ptr %10, align 4, !tbaa !5
  %891 = load i32, ptr %69, align 4, !tbaa !5
  %892 = mul nsw i32 %890, %891
  %893 = load i32, ptr %11, align 4, !tbaa !5
  %894 = add nsw i32 %892, %893
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds i8, ptr %889, i64 %895
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %888, ptr noundef %896, i64 noundef 1)
  %897 = load ptr, ptr %21, align 8, !tbaa !9
  %898 = load i32, ptr %10, align 4, !tbaa !5
  %899 = load i32, ptr %69, align 4, !tbaa !5
  %900 = mul nsw i32 %898, %899
  %901 = load i32, ptr %11, align 4, !tbaa !5
  %902 = add nsw i32 %900, %901
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds float, ptr %897, i64 %903
  %905 = load ptr, ptr %52, align 8, !tbaa !9
  %906 = load i32, ptr %10, align 4, !tbaa !5
  %907 = load i32, ptr %69, align 4, !tbaa !5
  %908 = mul nsw i32 %906, %907
  %909 = load i32, ptr %11, align 4, !tbaa !5
  %910 = add nsw i32 %908, %909
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds i8, ptr %905, i64 %911
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %904, ptr noundef %912, i64 noundef 1)
  %913 = load ptr, ptr %22, align 8, !tbaa !9
  %914 = load i32, ptr %10, align 4, !tbaa !5
  %915 = load i32, ptr %69, align 4, !tbaa !5
  %916 = mul nsw i32 %914, %915
  %917 = load i32, ptr %11, align 4, !tbaa !5
  %918 = add nsw i32 %916, %917
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds float, ptr %913, i64 %919
  %921 = load ptr, ptr %53, align 8, !tbaa !9
  %922 = load i32, ptr %10, align 4, !tbaa !5
  %923 = load i32, ptr %69, align 4, !tbaa !5
  %924 = mul nsw i32 %922, %923
  %925 = load i32, ptr %11, align 4, !tbaa !5
  %926 = add nsw i32 %924, %925
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds i8, ptr %921, i64 %927
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %920, ptr noundef %928, i64 noundef 1)
  %929 = load ptr, ptr %23, align 8, !tbaa !9
  %930 = load i32, ptr %10, align 4, !tbaa !5
  %931 = load i32, ptr %69, align 4, !tbaa !5
  %932 = mul nsw i32 %930, %931
  %933 = load i32, ptr %11, align 4, !tbaa !5
  %934 = add nsw i32 %932, %933
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds float, ptr %929, i64 %935
  %937 = load ptr, ptr %54, align 8, !tbaa !9
  %938 = load i32, ptr %10, align 4, !tbaa !5
  %939 = load i32, ptr %69, align 4, !tbaa !5
  %940 = mul nsw i32 %938, %939
  %941 = load i32, ptr %11, align 4, !tbaa !5
  %942 = add nsw i32 %940, %941
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i8, ptr %937, i64 %943
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %936, ptr noundef %944, i64 noundef 1)
  %945 = load ptr, ptr %24, align 8, !tbaa !9
  %946 = load i32, ptr %10, align 4, !tbaa !5
  %947 = load i32, ptr %69, align 4, !tbaa !5
  %948 = mul nsw i32 %946, %947
  %949 = load i32, ptr %11, align 4, !tbaa !5
  %950 = add nsw i32 %948, %949
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds float, ptr %945, i64 %951
  %953 = load ptr, ptr %55, align 8, !tbaa !9
  %954 = load i32, ptr %10, align 4, !tbaa !5
  %955 = load i32, ptr %69, align 4, !tbaa !5
  %956 = mul nsw i32 %954, %955
  %957 = load i32, ptr %11, align 4, !tbaa !5
  %958 = add nsw i32 %956, %957
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds i8, ptr %953, i64 %959
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %952, ptr noundef %960, i64 noundef 1)
  %961 = load ptr, ptr %25, align 8, !tbaa !9
  %962 = load i32, ptr %10, align 4, !tbaa !5
  %963 = load i32, ptr %69, align 4, !tbaa !5
  %964 = mul nsw i32 %962, %963
  %965 = load i32, ptr %11, align 4, !tbaa !5
  %966 = add nsw i32 %964, %965
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds float, ptr %961, i64 %967
  %969 = load ptr, ptr %56, align 8, !tbaa !9
  %970 = load i32, ptr %10, align 4, !tbaa !5
  %971 = load i32, ptr %69, align 4, !tbaa !5
  %972 = mul nsw i32 %970, %971
  %973 = load i32, ptr %11, align 4, !tbaa !5
  %974 = add nsw i32 %972, %973
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i8, ptr %969, i64 %975
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef %968, ptr noundef %976, i64 noundef 1)
  br label %977

977:                                              ; preds = %423
  %978 = load i32, ptr %11, align 4, !tbaa !5
  %979 = add nsw i32 %978, 1
  store i32 %979, ptr %11, align 4, !tbaa !5
  br label %419, !llvm.loop !15

980:                                              ; preds = %419
  br label %981

981:                                              ; preds = %980
  %982 = load i32, ptr %10, align 4, !tbaa !5
  %983 = add nsw i32 %982, 1
  store i32 %983, ptr %10, align 4, !tbaa !5
  br label %414, !llvm.loop !17

984:                                              ; preds = %414
  %985 = load ptr, ptr %20, align 8, !tbaa !9
  %986 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %26, i64 0, i64 0
  %987 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %986, i32 0, i32 0
  store ptr %985, ptr %987, align 16, !tbaa !18
  %988 = load ptr, ptr %21, align 8, !tbaa !9
  %989 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %26, i64 0, i64 1
  %990 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %989, i32 0, i32 0
  store ptr %988, ptr %990, align 16, !tbaa !18
  %991 = load ptr, ptr %22, align 8, !tbaa !9
  %992 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %26, i64 0, i64 2
  %993 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %992, i32 0, i32 0
  store ptr %991, ptr %993, align 16, !tbaa !18
  %994 = load ptr, ptr %23, align 8, !tbaa !9
  %995 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %26, i64 0, i64 3
  %996 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %995, i32 0, i32 0
  store ptr %994, ptr %996, align 16, !tbaa !18
  %997 = load ptr, ptr %27, align 8, !tbaa !9
  %998 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %57, i64 0, i64 0
  %999 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %998, i32 0, i32 0
  store ptr %997, ptr %999, align 16, !tbaa !18
  %1000 = load ptr, ptr %28, align 8, !tbaa !9
  %1001 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %57, i64 0, i64 1
  %1002 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1001, i32 0, i32 0
  store ptr %1000, ptr %1002, align 16, !tbaa !18
  %1003 = load ptr, ptr %29, align 8, !tbaa !9
  %1004 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %57, i64 0, i64 2
  %1005 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1004, i32 0, i32 0
  store ptr %1003, ptr %1005, align 16, !tbaa !18
  %1006 = load ptr, ptr %30, align 8, !tbaa !9
  %1007 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %57, i64 0, i64 3
  %1008 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1007, i32 0, i32 0
  store ptr %1006, ptr %1008, align 16, !tbaa !18
  %1009 = load ptr, ptr %33, align 8, !tbaa !9
  %1010 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %58, i64 0, i64 0
  %1011 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1010, i32 0, i32 0
  store ptr %1009, ptr %1011, align 16, !tbaa !18
  %1012 = load ptr, ptr %34, align 8, !tbaa !9
  %1013 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %58, i64 0, i64 1
  %1014 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1013, i32 0, i32 0
  store ptr %1012, ptr %1014, align 16, !tbaa !18
  %1015 = load ptr, ptr %35, align 8, !tbaa !9
  %1016 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %58, i64 0, i64 2
  %1017 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1016, i32 0, i32 0
  store ptr %1015, ptr %1017, align 16, !tbaa !18
  %1018 = load ptr, ptr %36, align 8, !tbaa !9
  %1019 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %58, i64 0, i64 3
  %1020 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1019, i32 0, i32 0
  store ptr %1018, ptr %1020, align 16, !tbaa !18
  %1021 = load ptr, ptr %39, align 8, !tbaa !9
  %1022 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %59, i64 0, i64 0
  %1023 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1022, i32 0, i32 0
  store ptr %1021, ptr %1023, align 16, !tbaa !18
  %1024 = load ptr, ptr %40, align 8, !tbaa !9
  %1025 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %59, i64 0, i64 1
  %1026 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1025, i32 0, i32 0
  store ptr %1024, ptr %1026, align 16, !tbaa !18
  %1027 = load ptr, ptr %41, align 8, !tbaa !9
  %1028 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %59, i64 0, i64 2
  %1029 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1028, i32 0, i32 0
  store ptr %1027, ptr %1029, align 16, !tbaa !18
  %1030 = load ptr, ptr %42, align 8, !tbaa !9
  %1031 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %59, i64 0, i64 3
  %1032 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1031, i32 0, i32 0
  store ptr %1030, ptr %1032, align 16, !tbaa !18
  %1033 = load ptr, ptr %45, align 8, !tbaa !9
  %1034 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %60, i64 0, i64 0
  %1035 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1034, i32 0, i32 0
  store ptr %1033, ptr %1035, align 16, !tbaa !18
  %1036 = load ptr, ptr %46, align 8, !tbaa !9
  %1037 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %60, i64 0, i64 1
  %1038 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1037, i32 0, i32 0
  store ptr %1036, ptr %1038, align 16, !tbaa !18
  %1039 = load ptr, ptr %47, align 8, !tbaa !9
  %1040 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %60, i64 0, i64 2
  %1041 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1040, i32 0, i32 0
  store ptr %1039, ptr %1041, align 16, !tbaa !18
  %1042 = load ptr, ptr %48, align 8, !tbaa !9
  %1043 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %60, i64 0, i64 3
  %1044 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1043, i32 0, i32 0
  store ptr %1042, ptr %1044, align 16, !tbaa !18
  %1045 = load ptr, ptr %51, align 8, !tbaa !9
  %1046 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %61, i64 0, i64 0
  %1047 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1046, i32 0, i32 0
  store ptr %1045, ptr %1047, align 16, !tbaa !18
  %1048 = load ptr, ptr %52, align 8, !tbaa !9
  %1049 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %61, i64 0, i64 1
  %1050 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1049, i32 0, i32 0
  store ptr %1048, ptr %1050, align 16, !tbaa !18
  %1051 = load ptr, ptr %53, align 8, !tbaa !9
  %1052 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %61, i64 0, i64 2
  %1053 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1052, i32 0, i32 0
  store ptr %1051, ptr %1053, align 16, !tbaa !18
  %1054 = load ptr, ptr %54, align 8, !tbaa !9
  %1055 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %61, i64 0, i64 3
  %1056 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1055, i32 0, i32 0
  store ptr %1054, ptr %1056, align 16, !tbaa !18
  %1057 = load i32, ptr %71, align 4, !tbaa !5
  %1058 = icmp eq i32 %1057, 0
  br i1 %1058, label %1059, label %1068

1059:                                             ; preds = %984
  %1060 = load i32, ptr %67, align 4, !tbaa !5
  %1061 = load i32, ptr %68, align 4, !tbaa !5
  %1062 = load i32, ptr %69, align 4, !tbaa !5
  %1063 = load ptr, ptr %20, align 8, !tbaa !9
  %1064 = load ptr, ptr %21, align 8, !tbaa !9
  %1065 = load ptr, ptr %22, align 8, !tbaa !9
  %1066 = load ptr, ptr %23, align 8, !tbaa !9
  %1067 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f32f32(i32 noundef %1060, i32 noundef %1061, i32 noundef %1062, ptr noundef %1063, ptr noundef %1064, ptr noundef %1065, ptr noundef %1066, ptr noundef %1067)
  br label %1237

1068:                                             ; preds = %984
  %1069 = load i32, ptr %71, align 4, !tbaa !5
  %1070 = icmp eq i32 %1069, 1
  br i1 %1070, label %1071, label %1080

1071:                                             ; preds = %1068
  %1072 = load i32, ptr %67, align 4, !tbaa !5
  %1073 = load i32, ptr %68, align 4, !tbaa !5
  %1074 = load i32, ptr %69, align 4, !tbaa !5
  %1075 = load ptr, ptr %33, align 8, !tbaa !9
  %1076 = load ptr, ptr %34, align 8, !tbaa !9
  %1077 = load ptr, ptr %35, align 8, !tbaa !9
  %1078 = load ptr, ptr %36, align 8, !tbaa !9
  %1079 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_bf16bf16(i32 noundef %1072, i32 noundef %1073, i32 noundef %1074, ptr noundef %1075, ptr noundef %1076, ptr noundef %1077, ptr noundef %1078, ptr noundef %1079)
  br label %1236

1080:                                             ; preds = %1068
  %1081 = load i32, ptr %71, align 4, !tbaa !5
  %1082 = icmp eq i32 %1081, 2
  br i1 %1082, label %1083, label %1092

1083:                                             ; preds = %1080
  %1084 = load i32, ptr %67, align 4, !tbaa !5
  %1085 = load i32, ptr %68, align 4, !tbaa !5
  %1086 = load i32, ptr %69, align 4, !tbaa !5
  %1087 = load ptr, ptr %20, align 8, !tbaa !9
  %1088 = load ptr, ptr %21, align 8, !tbaa !9
  %1089 = load ptr, ptr %22, align 8, !tbaa !9
  %1090 = load ptr, ptr %23, align 8, !tbaa !9
  %1091 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_f32bf16(i32 noundef %1084, i32 noundef %1085, i32 noundef %1086, ptr noundef %1087, ptr noundef %1088, ptr noundef %1089, ptr noundef %1090, ptr noundef %1091)
  br label %1235

1092:                                             ; preds = %1080
  %1093 = load i32, ptr %71, align 4, !tbaa !5
  %1094 = icmp eq i32 %1093, 3
  br i1 %1094, label %1095, label %1104

1095:                                             ; preds = %1092
  %1096 = load i32, ptr %67, align 4, !tbaa !5
  %1097 = load i32, ptr %68, align 4, !tbaa !5
  %1098 = load i32, ptr %69, align 4, !tbaa !5
  %1099 = load ptr, ptr %33, align 8, !tbaa !9
  %1100 = load ptr, ptr %34, align 8, !tbaa !9
  %1101 = load ptr, ptr %35, align 8, !tbaa !9
  %1102 = load ptr, ptr %36, align 8, !tbaa !9
  %1103 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf16f32(i32 noundef %1096, i32 noundef %1097, i32 noundef %1098, ptr noundef %1099, ptr noundef %1100, ptr noundef %1101, ptr noundef %1102, ptr noundef %1103)
  br label %1234

1104:                                             ; preds = %1092
  %1105 = load i32, ptr %71, align 4, !tbaa !5
  %1106 = icmp eq i32 %1105, 4
  br i1 %1106, label %1107, label %1116

1107:                                             ; preds = %1104
  %1108 = load i32, ptr %67, align 4, !tbaa !5
  %1109 = load i32, ptr %68, align 4, !tbaa !5
  %1110 = load i32, ptr %69, align 4, !tbaa !5
  %1111 = load ptr, ptr %45, align 8, !tbaa !9
  %1112 = load ptr, ptr %46, align 8, !tbaa !9
  %1113 = load ptr, ptr %47, align 8, !tbaa !9
  %1114 = load ptr, ptr %48, align 8, !tbaa !9
  %1115 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_bf8bf8(i32 noundef %1108, i32 noundef %1109, i32 noundef %1110, ptr noundef %1111, ptr noundef %1112, ptr noundef %1113, ptr noundef %1114, ptr noundef %1115)
  br label %1233

1116:                                             ; preds = %1104
  %1117 = load i32, ptr %71, align 4, !tbaa !5
  %1118 = icmp eq i32 %1117, 5
  br i1 %1118, label %1119, label %1128

1119:                                             ; preds = %1116
  %1120 = load i32, ptr %67, align 4, !tbaa !5
  %1121 = load i32, ptr %68, align 4, !tbaa !5
  %1122 = load i32, ptr %69, align 4, !tbaa !5
  %1123 = load ptr, ptr %20, align 8, !tbaa !9
  %1124 = load ptr, ptr %21, align 8, !tbaa !9
  %1125 = load ptr, ptr %22, align 8, !tbaa !9
  %1126 = load ptr, ptr %23, align 8, !tbaa !9
  %1127 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_f32bf8(i32 noundef %1120, i32 noundef %1121, i32 noundef %1122, ptr noundef %1123, ptr noundef %1124, ptr noundef %1125, ptr noundef %1126, ptr noundef %1127)
  br label %1232

1128:                                             ; preds = %1116
  %1129 = load i32, ptr %71, align 4, !tbaa !5
  %1130 = icmp eq i32 %1129, 6
  br i1 %1130, label %1131, label %1140

1131:                                             ; preds = %1128
  %1132 = load i32, ptr %67, align 4, !tbaa !5
  %1133 = load i32, ptr %68, align 4, !tbaa !5
  %1134 = load i32, ptr %69, align 4, !tbaa !5
  %1135 = load ptr, ptr %45, align 8, !tbaa !9
  %1136 = load ptr, ptr %46, align 8, !tbaa !9
  %1137 = load ptr, ptr %47, align 8, !tbaa !9
  %1138 = load ptr, ptr %48, align 8, !tbaa !9
  %1139 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf8f32(i32 noundef %1132, i32 noundef %1133, i32 noundef %1134, ptr noundef %1135, ptr noundef %1136, ptr noundef %1137, ptr noundef %1138, ptr noundef %1139)
  br label %1231

1140:                                             ; preds = %1128
  %1141 = load i32, ptr %71, align 4, !tbaa !5
  %1142 = icmp eq i32 %1141, 7
  br i1 %1142, label %1143, label %1152

1143:                                             ; preds = %1140
  %1144 = load i32, ptr %67, align 4, !tbaa !5
  %1145 = load i32, ptr %68, align 4, !tbaa !5
  %1146 = load i32, ptr %69, align 4, !tbaa !5
  %1147 = load ptr, ptr %39, align 8, !tbaa !9
  %1148 = load ptr, ptr %40, align 8, !tbaa !9
  %1149 = load ptr, ptr %41, align 8, !tbaa !9
  %1150 = load ptr, ptr %42, align 8, !tbaa !9
  %1151 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f16f16(i32 noundef %1144, i32 noundef %1145, i32 noundef %1146, ptr noundef %1147, ptr noundef %1148, ptr noundef %1149, ptr noundef %1150, ptr noundef %1151)
  br label %1230

1152:                                             ; preds = %1140
  %1153 = load i32, ptr %71, align 4, !tbaa !5
  %1154 = icmp eq i32 %1153, 8
  br i1 %1154, label %1155, label %1164

1155:                                             ; preds = %1152
  %1156 = load i32, ptr %67, align 4, !tbaa !5
  %1157 = load i32, ptr %68, align 4, !tbaa !5
  %1158 = load i32, ptr %69, align 4, !tbaa !5
  %1159 = load ptr, ptr %20, align 8, !tbaa !9
  %1160 = load ptr, ptr %21, align 8, !tbaa !9
  %1161 = load ptr, ptr %22, align 8, !tbaa !9
  %1162 = load ptr, ptr %23, align 8, !tbaa !9
  %1163 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f32f16(i32 noundef %1156, i32 noundef %1157, i32 noundef %1158, ptr noundef %1159, ptr noundef %1160, ptr noundef %1161, ptr noundef %1162, ptr noundef %1163)
  br label %1229

1164:                                             ; preds = %1152
  %1165 = load i32, ptr %71, align 4, !tbaa !5
  %1166 = icmp eq i32 %1165, 9
  br i1 %1166, label %1167, label %1176

1167:                                             ; preds = %1164
  %1168 = load i32, ptr %67, align 4, !tbaa !5
  %1169 = load i32, ptr %68, align 4, !tbaa !5
  %1170 = load i32, ptr %69, align 4, !tbaa !5
  %1171 = load ptr, ptr %39, align 8, !tbaa !9
  %1172 = load ptr, ptr %40, align 8, !tbaa !9
  %1173 = load ptr, ptr %41, align 8, !tbaa !9
  %1174 = load ptr, ptr %42, align 8, !tbaa !9
  %1175 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f16f32(i32 noundef %1168, i32 noundef %1169, i32 noundef %1170, ptr noundef %1171, ptr noundef %1172, ptr noundef %1173, ptr noundef %1174, ptr noundef %1175)
  br label %1228

1176:                                             ; preds = %1164
  %1177 = load i32, ptr %71, align 4, !tbaa !5
  %1178 = icmp eq i32 %1177, 10
  br i1 %1178, label %1179, label %1188

1179:                                             ; preds = %1176
  %1180 = load i32, ptr %67, align 4, !tbaa !5
  %1181 = load i32, ptr %68, align 4, !tbaa !5
  %1182 = load i32, ptr %69, align 4, !tbaa !5
  %1183 = load ptr, ptr %51, align 8, !tbaa !9
  %1184 = load ptr, ptr %52, align 8, !tbaa !9
  %1185 = load ptr, ptr %53, align 8, !tbaa !9
  %1186 = load ptr, ptr %54, align 8, !tbaa !9
  %1187 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_hf8hf8(i32 noundef %1180, i32 noundef %1181, i32 noundef %1182, ptr noundef %1183, ptr noundef %1184, ptr noundef %1185, ptr noundef %1186, ptr noundef %1187)
  br label %1227

1188:                                             ; preds = %1176
  %1189 = load i32, ptr %71, align 4, !tbaa !5
  %1190 = icmp eq i32 %1189, 11
  br i1 %1190, label %1191, label %1200

1191:                                             ; preds = %1188
  %1192 = load i32, ptr %67, align 4, !tbaa !5
  %1193 = load i32, ptr %68, align 4, !tbaa !5
  %1194 = load i32, ptr %69, align 4, !tbaa !5
  %1195 = load ptr, ptr %20, align 8, !tbaa !9
  %1196 = load ptr, ptr %21, align 8, !tbaa !9
  %1197 = load ptr, ptr %22, align 8, !tbaa !9
  %1198 = load ptr, ptr %23, align 8, !tbaa !9
  %1199 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_f32hf8(i32 noundef %1192, i32 noundef %1193, i32 noundef %1194, ptr noundef %1195, ptr noundef %1196, ptr noundef %1197, ptr noundef %1198, ptr noundef %1199)
  br label %1226

1200:                                             ; preds = %1188
  %1201 = load i32, ptr %71, align 4, !tbaa !5
  %1202 = icmp eq i32 %1201, 12
  br i1 %1202, label %1203, label %1212

1203:                                             ; preds = %1200
  %1204 = load i32, ptr %67, align 4, !tbaa !5
  %1205 = load i32, ptr %68, align 4, !tbaa !5
  %1206 = load i32, ptr %69, align 4, !tbaa !5
  %1207 = load ptr, ptr %51, align 8, !tbaa !9
  %1208 = load ptr, ptr %52, align 8, !tbaa !9
  %1209 = load ptr, ptr %53, align 8, !tbaa !9
  %1210 = load ptr, ptr %54, align 8, !tbaa !9
  %1211 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_hf8f32(i32 noundef %1204, i32 noundef %1205, i32 noundef %1206, ptr noundef %1207, ptr noundef %1208, ptr noundef %1209, ptr noundef %1210, ptr noundef %1211)
  br label %1225

1212:                                             ; preds = %1200
  %1213 = load i32, ptr %71, align 4, !tbaa !5
  %1214 = icmp eq i32 %1213, 13
  br i1 %1214, label %1215, label %1224

1215:                                             ; preds = %1212
  %1216 = load i32, ptr %67, align 4, !tbaa !5
  %1217 = load i32, ptr %68, align 4, !tbaa !5
  %1218 = load i32, ptr %69, align 4, !tbaa !5
  %1219 = load ptr, ptr %27, align 8, !tbaa !9
  %1220 = load ptr, ptr %28, align 8, !tbaa !9
  %1221 = load ptr, ptr %29, align 8, !tbaa !9
  %1222 = load ptr, ptr %30, align 8, !tbaa !9
  %1223 = load ptr, ptr %31, align 8, !tbaa !9
  call void @eqn0_f64f64(i32 noundef %1216, i32 noundef %1217, i32 noundef %1218, ptr noundef %1219, ptr noundef %1220, ptr noundef %1221, ptr noundef %1222, ptr noundef %1223)
  br label %1224

1224:                                             ; preds = %1215, %1212
  br label %1225

1225:                                             ; preds = %1224, %1203
  br label %1226

1226:                                             ; preds = %1225, %1191
  br label %1227

1227:                                             ; preds = %1226, %1179
  br label %1228

1228:                                             ; preds = %1227, %1167
  br label %1229

1229:                                             ; preds = %1228, %1155
  br label %1230

1230:                                             ; preds = %1229, %1143
  br label %1231

1231:                                             ; preds = %1230, %1131
  br label %1232

1232:                                             ; preds = %1231, %1119
  br label %1233

1233:                                             ; preds = %1232, %1107
  br label %1234

1234:                                             ; preds = %1233, %1095
  br label %1235

1235:                                             ; preds = %1234, %1083
  br label %1236

1236:                                             ; preds = %1235, %1071
  br label %1237

1237:                                             ; preds = %1236, %1059
  %1238 = call i32 @libxsmm_meqn_create()
  store i32 %1238, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %1239 = load i32, ptr %8, align 4, !tbaa !5
  %1240 = call i64 @libxsmm_create_meqn_op_metadata(i32 noundef %1239, i32 noundef -1)
  store i64 %1240, ptr %75, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %63, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  %1241 = load i32, ptr %74, align 4, !tbaa !5
  %1242 = load i64, ptr %63, align 4
  %1243 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %1242, i32 noundef 2, i32 noundef %1241, i32 noundef 0)
  %1244 = load i32, ptr %74, align 4, !tbaa !5
  %1245 = load i64, ptr %63, align 4
  %1246 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %1245, i32 noundef 1, i32 noundef %1244, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #8
  %1247 = load i32, ptr %67, align 4, !tbaa !5
  %1248 = load i32, ptr %68, align 4, !tbaa !5
  %1249 = load i32, ptr %69, align 4, !tbaa !5
  %1250 = load i32, ptr %72, align 4, !tbaa !5
  %1251 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %1247, i32 noundef %1248, i32 noundef %1249, i32 noundef %1250)
  %1252 = getelementptr inbounds { i64, i64 }, ptr %76, i32 0, i32 0
  %1253 = extractvalue { i64, i64 } %1251, 0
  store i64 %1253, ptr %1252, align 4
  %1254 = getelementptr inbounds { i64, i64 }, ptr %76, i32 0, i32 1
  %1255 = extractvalue { i64, i64 } %1251, 1
  store i64 %1255, ptr %1254, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %76, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %1256 = load i32, ptr %8, align 4, !tbaa !5
  %1257 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %1256, i32 noundef 0)
  store i64 %1257, ptr %77, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %77, i64 8, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  %1258 = load i64, ptr %62, align 4
  %1259 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 0
  %1260 = load i64, ptr %1259, align 4
  %1261 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 1
  %1262 = load i64, ptr %1261, align 4
  %1263 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 0
  %1264 = load i64, ptr %1263, align 4
  %1265 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 1
  %1266 = load i64, ptr %1265, align 4
  %1267 = call i32 @libxsmm_meqn_push_back_arg(i64 %1258, i64 %1260, i64 %1262, i64 %1264, i64 %1266)
  %1268 = load i32, ptr %74, align 4, !tbaa !5
  %1269 = load i64, ptr %63, align 4
  %1270 = call i32 @libxsmm_meqn_push_back_unary_op(i64 %1269, i32 noundef 14, i32 noundef %1268, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #8
  %1271 = load i32, ptr %67, align 4, !tbaa !5
  %1272 = load i32, ptr %68, align 4, !tbaa !5
  %1273 = load i32, ptr %69, align 4, !tbaa !5
  %1274 = load i32, ptr %72, align 4, !tbaa !5
  %1275 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %1271, i32 noundef %1272, i32 noundef %1273, i32 noundef %1274)
  %1276 = getelementptr inbounds { i64, i64 }, ptr %78, i32 0, i32 0
  %1277 = extractvalue { i64, i64 } %1275, 0
  store i64 %1277, ptr %1276, align 4
  %1278 = getelementptr inbounds { i64, i64 }, ptr %78, i32 0, i32 1
  %1279 = extractvalue { i64, i64 } %1275, 1
  store i64 %1279, ptr %1278, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %78, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %1280 = load i32, ptr %8, align 4, !tbaa !5
  %1281 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %1280, i32 noundef 1)
  store i64 %1281, ptr %79, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %79, i64 8, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  %1282 = load i64, ptr %62, align 4
  %1283 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 0
  %1284 = load i64, ptr %1283, align 4
  %1285 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 1
  %1286 = load i64, ptr %1285, align 4
  %1287 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 0
  %1288 = load i64, ptr %1287, align 4
  %1289 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 1
  %1290 = load i64, ptr %1289, align 4
  %1291 = call i32 @libxsmm_meqn_push_back_arg(i64 %1282, i64 %1284, i64 %1286, i64 %1288, i64 %1290)
  %1292 = load i32, ptr %74, align 4, !tbaa !5
  %1293 = load i64, ptr %63, align 4
  %1294 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %1293, i32 noundef 1, i32 noundef %1292, i32 noundef 0)
  %1295 = load i32, ptr %74, align 4, !tbaa !5
  %1296 = load i64, ptr %63, align 4
  %1297 = call i32 @libxsmm_meqn_push_back_unary_op(i64 %1296, i32 noundef 3, i32 noundef %1295, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  %1298 = load i32, ptr %67, align 4, !tbaa !5
  %1299 = load i32, ptr %68, align 4, !tbaa !5
  %1300 = load i32, ptr %69, align 4, !tbaa !5
  %1301 = load i32, ptr %72, align 4, !tbaa !5
  %1302 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %1298, i32 noundef %1299, i32 noundef %1300, i32 noundef %1301)
  %1303 = getelementptr inbounds { i64, i64 }, ptr %80, i32 0, i32 0
  %1304 = extractvalue { i64, i64 } %1302, 0
  store i64 %1304, ptr %1303, align 4
  %1305 = getelementptr inbounds { i64, i64 }, ptr %80, i32 0, i32 1
  %1306 = extractvalue { i64, i64 } %1302, 1
  store i64 %1306, ptr %1305, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %80, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %1307 = load i32, ptr %8, align 4, !tbaa !5
  %1308 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %1307, i32 noundef 2)
  store i64 %1308, ptr %81, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %81, i64 8, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  %1309 = load i64, ptr %62, align 4
  %1310 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 0
  %1311 = load i64, ptr %1310, align 4
  %1312 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 1
  %1313 = load i64, ptr %1312, align 4
  %1314 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 0
  %1315 = load i64, ptr %1314, align 4
  %1316 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 1
  %1317 = load i64, ptr %1316, align 4
  %1318 = call i32 @libxsmm_meqn_push_back_arg(i64 %1309, i64 %1311, i64 %1313, i64 %1315, i64 %1317)
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #8
  %1319 = load i32, ptr %67, align 4, !tbaa !5
  %1320 = load i32, ptr %68, align 4, !tbaa !5
  %1321 = load i32, ptr %69, align 4, !tbaa !5
  %1322 = load i32, ptr %72, align 4, !tbaa !5
  %1323 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %1319, i32 noundef %1320, i32 noundef %1321, i32 noundef %1322)
  %1324 = getelementptr inbounds { i64, i64 }, ptr %82, i32 0, i32 0
  %1325 = extractvalue { i64, i64 } %1323, 0
  store i64 %1325, ptr %1324, align 4
  %1326 = getelementptr inbounds { i64, i64 }, ptr %82, i32 0, i32 1
  %1327 = extractvalue { i64, i64 } %1323, 1
  store i64 %1327, ptr %1326, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %82, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %1328 = load i32, ptr %8, align 4, !tbaa !5
  %1329 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %1328, i32 noundef 3)
  store i64 %1329, ptr %83, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  %1330 = load i64, ptr %62, align 4
  %1331 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 0
  %1332 = load i64, ptr %1331, align 4
  %1333 = getelementptr inbounds { i64, i64 }, ptr %64, i32 0, i32 1
  %1334 = load i64, ptr %1333, align 4
  %1335 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 0
  %1336 = load i64, ptr %1335, align 4
  %1337 = getelementptr inbounds { i64, i64 }, ptr %66, i32 0, i32 1
  %1338 = load i64, ptr %1337, align 4
  %1339 = call i32 @libxsmm_meqn_push_back_arg(i64 %1330, i64 %1332, i64 %1334, i64 %1336, i64 %1338)
  %1340 = load i32, ptr %8, align 4, !tbaa !5
  call void @libxsmm_meqn_tree_print(i32 noundef %1340)
  %1341 = load i32, ptr %8, align 4, !tbaa !5
  call void @libxsmm_meqn_rpn_print(i32 noundef %1341)
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #8
  %1342 = load i32, ptr %67, align 4, !tbaa !5
  %1343 = load i32, ptr %68, align 4, !tbaa !5
  %1344 = load i32, ptr %69, align 4, !tbaa !5
  %1345 = load i32, ptr %73, align 4, !tbaa !5
  %1346 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %1342, i32 noundef %1343, i32 noundef %1344, i32 noundef %1345)
  %1347 = getelementptr inbounds { i64, i64 }, ptr %84, i32 0, i32 0
  %1348 = extractvalue { i64, i64 } %1346, 0
  store i64 %1348, ptr %1347, align 4
  %1349 = getelementptr inbounds { i64, i64 }, ptr %84, i32 0, i32 1
  %1350 = extractvalue { i64, i64 } %1346, 1
  store i64 %1350, ptr %1349, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %84, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #8
  %1351 = load i32, ptr %8, align 4, !tbaa !5
  %1352 = getelementptr inbounds { i64, i64 }, ptr %65, i32 0, i32 0
  %1353 = load i64, ptr %1352, align 4
  %1354 = getelementptr inbounds { i64, i64 }, ptr %65, i32 0, i32 1
  %1355 = load i64, ptr %1354, align 4
  %1356 = call ptr @libxsmm_dispatch_meqn(i32 noundef %1351, i64 %1353, i64 %1355)
  store ptr %1356, ptr %9, align 8, !tbaa !9
  %1357 = load ptr, ptr %9, align 8, !tbaa !9
  %1358 = call i32 @libxsmm_get_kernel_info(ptr noundef %1357, ptr noundef @info)
  %1359 = load i32, ptr getelementptr inbounds (%struct.libxsmm_kernel_info, ptr @info, i32 0, i32 3), align 8, !tbaa !22
  store i32 %1359, ptr @is_reference_kernel, align 4, !tbaa !5
  %1360 = load ptr, ptr %9, align 8, !tbaa !9
  %1361 = icmp eq ptr %1360, null
  br i1 %1361, label %1362, label %1365

1362:                                             ; preds = %1237
  %1363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1363, ptr noundef @.str) #8
  call void @exit(i32 noundef -1) #10
  unreachable

1365:                                             ; preds = %1237
  %1366 = load i32, ptr %72, align 4, !tbaa !5
  %1367 = icmp eq i32 %1366, 1
  br i1 %1367, label %1368, label %1371

1368:                                             ; preds = %1365
  %1369 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %26, i64 0, i64 0
  %1370 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1369, ptr %1370, align 8, !tbaa !25
  br label %1406

1371:                                             ; preds = %1365
  %1372 = load i32, ptr %72, align 4, !tbaa !5
  %1373 = icmp eq i32 %1372, 2
  br i1 %1373, label %1374, label %1377

1374:                                             ; preds = %1371
  %1375 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %58, i64 0, i64 0
  %1376 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1375, ptr %1376, align 8, !tbaa !25
  br label %1405

1377:                                             ; preds = %1371
  %1378 = load i32, ptr %72, align 4, !tbaa !5
  %1379 = icmp eq i32 %1378, 3
  br i1 %1379, label %1380, label %1383

1380:                                             ; preds = %1377
  %1381 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %59, i64 0, i64 0
  %1382 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1381, ptr %1382, align 8, !tbaa !25
  br label %1404

1383:                                             ; preds = %1377
  %1384 = load i32, ptr %72, align 4, !tbaa !5
  %1385 = icmp eq i32 %1384, 4
  br i1 %1385, label %1386, label %1389

1386:                                             ; preds = %1383
  %1387 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %60, i64 0, i64 0
  %1388 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1387, ptr %1388, align 8, !tbaa !25
  br label %1403

1389:                                             ; preds = %1383
  %1390 = load i32, ptr %72, align 4, !tbaa !5
  %1391 = icmp eq i32 %1390, 5
  br i1 %1391, label %1392, label %1395

1392:                                             ; preds = %1389
  %1393 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %61, i64 0, i64 0
  %1394 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1393, ptr %1394, align 8, !tbaa !25
  br label %1402

1395:                                             ; preds = %1389
  %1396 = load i32, ptr %72, align 4, !tbaa !5
  %1397 = icmp eq i32 %1396, 0
  br i1 %1397, label %1398, label %1401

1398:                                             ; preds = %1395
  %1399 = getelementptr inbounds [4 x %struct.libxsmm_matrix_arg], ptr %57, i64 0, i64 0
  %1400 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 1
  store ptr %1399, ptr %1400, align 8, !tbaa !25
  br label %1401

1401:                                             ; preds = %1398, %1395
  br label %1402

1402:                                             ; preds = %1401, %1392
  br label %1403

1403:                                             ; preds = %1402, %1386
  br label %1404

1404:                                             ; preds = %1403, %1380
  br label %1405

1405:                                             ; preds = %1404, %1374
  br label %1406

1406:                                             ; preds = %1405, %1368
  %1407 = load i32, ptr %73, align 4, !tbaa !5
  %1408 = icmp eq i32 %1407, 1
  br i1 %1408, label %1409, label %1413

1409:                                             ; preds = %1406
  %1410 = load ptr, ptr %25, align 8, !tbaa !9
  %1411 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1412 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1411, i32 0, i32 0
  store ptr %1410, ptr %1412, align 8, !tbaa !27
  br label %1453

1413:                                             ; preds = %1406
  %1414 = load i32, ptr %73, align 4, !tbaa !5
  %1415 = icmp eq i32 %1414, 2
  br i1 %1415, label %1416, label %1420

1416:                                             ; preds = %1413
  %1417 = load ptr, ptr %38, align 8, !tbaa !9
  %1418 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1419 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1418, i32 0, i32 0
  store ptr %1417, ptr %1419, align 8, !tbaa !27
  br label %1452

1420:                                             ; preds = %1413
  %1421 = load i32, ptr %73, align 4, !tbaa !5
  %1422 = icmp eq i32 %1421, 3
  br i1 %1422, label %1423, label %1427

1423:                                             ; preds = %1420
  %1424 = load ptr, ptr %44, align 8, !tbaa !9
  %1425 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1426 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1425, i32 0, i32 0
  store ptr %1424, ptr %1426, align 8, !tbaa !27
  br label %1451

1427:                                             ; preds = %1420
  %1428 = load i32, ptr %73, align 4, !tbaa !5
  %1429 = icmp eq i32 %1428, 4
  br i1 %1429, label %1430, label %1434

1430:                                             ; preds = %1427
  %1431 = load ptr, ptr %50, align 8, !tbaa !9
  %1432 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1433 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1432, i32 0, i32 0
  store ptr %1431, ptr %1433, align 8, !tbaa !27
  br label %1450

1434:                                             ; preds = %1427
  %1435 = load i32, ptr %73, align 4, !tbaa !5
  %1436 = icmp eq i32 %1435, 5
  br i1 %1436, label %1437, label %1441

1437:                                             ; preds = %1434
  %1438 = load ptr, ptr %56, align 8, !tbaa !9
  %1439 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1440 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1439, i32 0, i32 0
  store ptr %1438, ptr %1440, align 8, !tbaa !27
  br label %1449

1441:                                             ; preds = %1434
  %1442 = load i32, ptr %73, align 4, !tbaa !5
  %1443 = icmp eq i32 %1442, 0
  br i1 %1443, label %1444, label %1448

1444:                                             ; preds = %1441
  %1445 = load ptr, ptr %32, align 8, !tbaa !9
  %1446 = getelementptr inbounds %struct.libxsmm_meqn_param, ptr %14, i32 0, i32 2
  %1447 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %1446, i32 0, i32 0
  store ptr %1445, ptr %1447, align 8, !tbaa !27
  br label %1448

1448:                                             ; preds = %1444, %1441
  br label %1449

1449:                                             ; preds = %1448, %1437
  br label %1450

1450:                                             ; preds = %1449, %1430
  br label %1451

1451:                                             ; preds = %1450, %1423
  br label %1452

1452:                                             ; preds = %1451, %1416
  br label %1453

1453:                                             ; preds = %1452, %1409
  %1454 = load ptr, ptr %9, align 8, !tbaa !9
  call void %1454(ptr noundef %14)
  store i32 0, ptr %12, align 4, !tbaa !5
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %1455

1455:                                             ; preds = %1762, %1453
  %1456 = load i32, ptr %10, align 4, !tbaa !5
  %1457 = load i32, ptr %68, align 4, !tbaa !5
  %1458 = icmp slt i32 %1456, %1457
  br i1 %1458, label %1459, label %1765

1459:                                             ; preds = %1455
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %1460

1460:                                             ; preds = %1758, %1459
  %1461 = load i32, ptr %11, align 4, !tbaa !5
  %1462 = load i32, ptr %69, align 4, !tbaa !5
  %1463 = icmp slt i32 %1461, %1462
  br i1 %1463, label %1464, label %1761

1464:                                             ; preds = %1460
  %1465 = load i32, ptr %73, align 4, !tbaa !5
  %1466 = icmp eq i32 %1465, 1
  br i1 %1466, label %1467, label %1490

1467:                                             ; preds = %1464
  %1468 = load ptr, ptr %24, align 8, !tbaa !9
  %1469 = load i32, ptr %10, align 4, !tbaa !5
  %1470 = load i32, ptr %69, align 4, !tbaa !5
  %1471 = mul nsw i32 %1469, %1470
  %1472 = load i32, ptr %11, align 4, !tbaa !5
  %1473 = add nsw i32 %1471, %1472
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds float, ptr %1468, i64 %1474
  %1476 = load float, ptr %1475, align 4, !tbaa !13
  %1477 = load ptr, ptr %25, align 8, !tbaa !9
  %1478 = load i32, ptr %10, align 4, !tbaa !5
  %1479 = load i32, ptr %69, align 4, !tbaa !5
  %1480 = mul nsw i32 %1478, %1479
  %1481 = load i32, ptr %11, align 4, !tbaa !5
  %1482 = add nsw i32 %1480, %1481
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds float, ptr %1477, i64 %1483
  %1485 = load float, ptr %1484, align 4, !tbaa !13
  %1486 = call i32 @unequal_fp32_vals(float noundef %1476, float noundef %1485)
  %1487 = icmp ne i32 %1486, 0
  br i1 %1487, label %1488, label %1489

1488:                                             ; preds = %1467
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1489

1489:                                             ; preds = %1488, %1467
  br label %1757

1490:                                             ; preds = %1464
  %1491 = load i32, ptr %73, align 4, !tbaa !5
  %1492 = icmp eq i32 %1491, 0
  br i1 %1492, label %1493, label %1516

1493:                                             ; preds = %1490
  %1494 = load ptr, ptr %31, align 8, !tbaa !9
  %1495 = load i32, ptr %10, align 4, !tbaa !5
  %1496 = load i32, ptr %69, align 4, !tbaa !5
  %1497 = mul nsw i32 %1495, %1496
  %1498 = load i32, ptr %11, align 4, !tbaa !5
  %1499 = add nsw i32 %1497, %1498
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds double, ptr %1494, i64 %1500
  %1502 = load double, ptr %1501, align 8, !tbaa !11
  %1503 = load ptr, ptr %32, align 8, !tbaa !9
  %1504 = load i32, ptr %10, align 4, !tbaa !5
  %1505 = load i32, ptr %69, align 4, !tbaa !5
  %1506 = mul nsw i32 %1504, %1505
  %1507 = load i32, ptr %11, align 4, !tbaa !5
  %1508 = add nsw i32 %1506, %1507
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds double, ptr %1503, i64 %1509
  %1511 = load double, ptr %1510, align 8, !tbaa !11
  %1512 = call i32 @unequal_fp64_vals(double noundef %1502, double noundef %1511)
  %1513 = icmp ne i32 %1512, 0
  br i1 %1513, label %1514, label %1515

1514:                                             ; preds = %1493
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1515

1515:                                             ; preds = %1514, %1493
  br label %1756

1516:                                             ; preds = %1490
  %1517 = load i32, ptr %73, align 4, !tbaa !5
  %1518 = icmp eq i32 %1517, 2
  br i1 %1518, label %1519, label %1578

1519:                                             ; preds = %1516
  %1520 = load ptr, ptr %37, align 8, !tbaa !9
  %1521 = load i32, ptr %10, align 4, !tbaa !5
  %1522 = load i32, ptr %69, align 4, !tbaa !5
  %1523 = mul nsw i32 %1521, %1522
  %1524 = load i32, ptr %11, align 4, !tbaa !5
  %1525 = add nsw i32 %1523, %1524
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds i16, ptr %1520, i64 %1526
  %1528 = load i16, ptr %1527, align 2, !tbaa !28
  %1529 = call float @upconvert_bf16(i16 noundef zeroext %1528)
  %1530 = load ptr, ptr %24, align 8, !tbaa !9
  %1531 = load i32, ptr %10, align 4, !tbaa !5
  %1532 = load i32, ptr %69, align 4, !tbaa !5
  %1533 = mul nsw i32 %1531, %1532
  %1534 = load i32, ptr %11, align 4, !tbaa !5
  %1535 = add nsw i32 %1533, %1534
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds float, ptr %1530, i64 %1536
  store float %1529, ptr %1537, align 4, !tbaa !13
  %1538 = load ptr, ptr %38, align 8, !tbaa !9
  %1539 = load i32, ptr %10, align 4, !tbaa !5
  %1540 = load i32, ptr %69, align 4, !tbaa !5
  %1541 = mul nsw i32 %1539, %1540
  %1542 = load i32, ptr %11, align 4, !tbaa !5
  %1543 = add nsw i32 %1541, %1542
  %1544 = sext i32 %1543 to i64
  %1545 = getelementptr inbounds i16, ptr %1538, i64 %1544
  %1546 = load i16, ptr %1545, align 2, !tbaa !28
  %1547 = call float @upconvert_bf16(i16 noundef zeroext %1546)
  %1548 = load ptr, ptr %25, align 8, !tbaa !9
  %1549 = load i32, ptr %10, align 4, !tbaa !5
  %1550 = load i32, ptr %69, align 4, !tbaa !5
  %1551 = mul nsw i32 %1549, %1550
  %1552 = load i32, ptr %11, align 4, !tbaa !5
  %1553 = add nsw i32 %1551, %1552
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds float, ptr %1548, i64 %1554
  store float %1547, ptr %1555, align 4, !tbaa !13
  %1556 = load ptr, ptr %37, align 8, !tbaa !9
  %1557 = load i32, ptr %10, align 4, !tbaa !5
  %1558 = load i32, ptr %69, align 4, !tbaa !5
  %1559 = mul nsw i32 %1557, %1558
  %1560 = load i32, ptr %11, align 4, !tbaa !5
  %1561 = add nsw i32 %1559, %1560
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds i16, ptr %1556, i64 %1562
  %1564 = load i16, ptr %1563, align 2, !tbaa !28
  %1565 = load ptr, ptr %38, align 8, !tbaa !9
  %1566 = load i32, ptr %10, align 4, !tbaa !5
  %1567 = load i32, ptr %69, align 4, !tbaa !5
  %1568 = mul nsw i32 %1566, %1567
  %1569 = load i32, ptr %11, align 4, !tbaa !5
  %1570 = add nsw i32 %1568, %1569
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds i16, ptr %1565, i64 %1571
  %1573 = load i16, ptr %1572, align 2, !tbaa !28
  %1574 = call i32 @unequal_bf16_vals(i16 noundef zeroext %1564, i16 noundef zeroext %1573)
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1576, label %1577

1576:                                             ; preds = %1519
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1577

1577:                                             ; preds = %1576, %1519
  br label %1755

1578:                                             ; preds = %1516
  %1579 = load i32, ptr %73, align 4, !tbaa !5
  %1580 = icmp eq i32 %1579, 3
  br i1 %1580, label %1581, label %1636

1581:                                             ; preds = %1578
  %1582 = load ptr, ptr %43, align 8, !tbaa !9
  %1583 = load i32, ptr %10, align 4, !tbaa !5
  %1584 = load i32, ptr %69, align 4, !tbaa !5
  %1585 = mul nsw i32 %1583, %1584
  %1586 = load i32, ptr %11, align 4, !tbaa !5
  %1587 = add nsw i32 %1585, %1586
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds i16, ptr %1582, i64 %1588
  %1590 = load ptr, ptr %24, align 8, !tbaa !9
  %1591 = load i32, ptr %10, align 4, !tbaa !5
  %1592 = load i32, ptr %69, align 4, !tbaa !5
  %1593 = mul nsw i32 %1591, %1592
  %1594 = load i32, ptr %11, align 4, !tbaa !5
  %1595 = add nsw i32 %1593, %1594
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds float, ptr %1590, i64 %1596
  call void @libxsmm_convert_f16_f32(ptr noundef %1589, ptr noundef %1597, i64 noundef 1)
  %1598 = load ptr, ptr %44, align 8, !tbaa !9
  %1599 = load i32, ptr %10, align 4, !tbaa !5
  %1600 = load i32, ptr %69, align 4, !tbaa !5
  %1601 = mul nsw i32 %1599, %1600
  %1602 = load i32, ptr %11, align 4, !tbaa !5
  %1603 = add nsw i32 %1601, %1602
  %1604 = sext i32 %1603 to i64
  %1605 = getelementptr inbounds i16, ptr %1598, i64 %1604
  %1606 = load ptr, ptr %25, align 8, !tbaa !9
  %1607 = load i32, ptr %10, align 4, !tbaa !5
  %1608 = load i32, ptr %69, align 4, !tbaa !5
  %1609 = mul nsw i32 %1607, %1608
  %1610 = load i32, ptr %11, align 4, !tbaa !5
  %1611 = add nsw i32 %1609, %1610
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds float, ptr %1606, i64 %1612
  call void @libxsmm_convert_f16_f32(ptr noundef %1605, ptr noundef %1613, i64 noundef 1)
  %1614 = load ptr, ptr %43, align 8, !tbaa !9
  %1615 = load i32, ptr %10, align 4, !tbaa !5
  %1616 = load i32, ptr %69, align 4, !tbaa !5
  %1617 = mul nsw i32 %1615, %1616
  %1618 = load i32, ptr %11, align 4, !tbaa !5
  %1619 = add nsw i32 %1617, %1618
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds i16, ptr %1614, i64 %1620
  %1622 = load i16, ptr %1621, align 2, !tbaa !28
  %1623 = load ptr, ptr %44, align 8, !tbaa !9
  %1624 = load i32, ptr %10, align 4, !tbaa !5
  %1625 = load i32, ptr %69, align 4, !tbaa !5
  %1626 = mul nsw i32 %1624, %1625
  %1627 = load i32, ptr %11, align 4, !tbaa !5
  %1628 = add nsw i32 %1626, %1627
  %1629 = sext i32 %1628 to i64
  %1630 = getelementptr inbounds i16, ptr %1623, i64 %1629
  %1631 = load i16, ptr %1630, align 2, !tbaa !28
  %1632 = call i32 @unequal_f16_vals(i16 noundef zeroext %1622, i16 noundef zeroext %1631)
  %1633 = icmp ne i32 %1632, 0
  br i1 %1633, label %1634, label %1635

1634:                                             ; preds = %1581
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1635

1635:                                             ; preds = %1634, %1581
  br label %1754

1636:                                             ; preds = %1578
  %1637 = load i32, ptr %73, align 4, !tbaa !5
  %1638 = icmp eq i32 %1637, 4
  br i1 %1638, label %1639, label %1694

1639:                                             ; preds = %1636
  %1640 = load ptr, ptr %49, align 8, !tbaa !9
  %1641 = load i32, ptr %10, align 4, !tbaa !5
  %1642 = load i32, ptr %69, align 4, !tbaa !5
  %1643 = mul nsw i32 %1641, %1642
  %1644 = load i32, ptr %11, align 4, !tbaa !5
  %1645 = add nsw i32 %1643, %1644
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds i8, ptr %1640, i64 %1646
  %1648 = load ptr, ptr %24, align 8, !tbaa !9
  %1649 = load i32, ptr %10, align 4, !tbaa !5
  %1650 = load i32, ptr %69, align 4, !tbaa !5
  %1651 = mul nsw i32 %1649, %1650
  %1652 = load i32, ptr %11, align 4, !tbaa !5
  %1653 = add nsw i32 %1651, %1652
  %1654 = sext i32 %1653 to i64
  %1655 = getelementptr inbounds float, ptr %1648, i64 %1654
  call void @libxsmm_convert_bf8_f32(ptr noundef %1647, ptr noundef %1655, i64 noundef 1)
  %1656 = load ptr, ptr %50, align 8, !tbaa !9
  %1657 = load i32, ptr %10, align 4, !tbaa !5
  %1658 = load i32, ptr %69, align 4, !tbaa !5
  %1659 = mul nsw i32 %1657, %1658
  %1660 = load i32, ptr %11, align 4, !tbaa !5
  %1661 = add nsw i32 %1659, %1660
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds i8, ptr %1656, i64 %1662
  %1664 = load ptr, ptr %25, align 8, !tbaa !9
  %1665 = load i32, ptr %10, align 4, !tbaa !5
  %1666 = load i32, ptr %69, align 4, !tbaa !5
  %1667 = mul nsw i32 %1665, %1666
  %1668 = load i32, ptr %11, align 4, !tbaa !5
  %1669 = add nsw i32 %1667, %1668
  %1670 = sext i32 %1669 to i64
  %1671 = getelementptr inbounds float, ptr %1664, i64 %1670
  call void @libxsmm_convert_bf8_f32(ptr noundef %1663, ptr noundef %1671, i64 noundef 1)
  %1672 = load ptr, ptr %49, align 8, !tbaa !9
  %1673 = load i32, ptr %10, align 4, !tbaa !5
  %1674 = load i32, ptr %69, align 4, !tbaa !5
  %1675 = mul nsw i32 %1673, %1674
  %1676 = load i32, ptr %11, align 4, !tbaa !5
  %1677 = add nsw i32 %1675, %1676
  %1678 = sext i32 %1677 to i64
  %1679 = getelementptr inbounds i8, ptr %1672, i64 %1678
  %1680 = load i8, ptr %1679, align 1, !tbaa !30
  %1681 = load ptr, ptr %50, align 8, !tbaa !9
  %1682 = load i32, ptr %10, align 4, !tbaa !5
  %1683 = load i32, ptr %69, align 4, !tbaa !5
  %1684 = mul nsw i32 %1682, %1683
  %1685 = load i32, ptr %11, align 4, !tbaa !5
  %1686 = add nsw i32 %1684, %1685
  %1687 = sext i32 %1686 to i64
  %1688 = getelementptr inbounds i8, ptr %1681, i64 %1687
  %1689 = load i8, ptr %1688, align 1, !tbaa !30
  %1690 = call i32 @unequal_bf8_vals(i8 noundef zeroext %1680, i8 noundef zeroext %1689)
  %1691 = icmp ne i32 %1690, 0
  br i1 %1691, label %1692, label %1693

1692:                                             ; preds = %1639
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1693

1693:                                             ; preds = %1692, %1639
  br label %1753

1694:                                             ; preds = %1636
  %1695 = load i32, ptr %73, align 4, !tbaa !5
  %1696 = icmp eq i32 %1695, 5
  br i1 %1696, label %1697, label %1752

1697:                                             ; preds = %1694
  %1698 = load ptr, ptr %55, align 8, !tbaa !9
  %1699 = load i32, ptr %10, align 4, !tbaa !5
  %1700 = load i32, ptr %69, align 4, !tbaa !5
  %1701 = mul nsw i32 %1699, %1700
  %1702 = load i32, ptr %11, align 4, !tbaa !5
  %1703 = add nsw i32 %1701, %1702
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds i8, ptr %1698, i64 %1704
  %1706 = load ptr, ptr %24, align 8, !tbaa !9
  %1707 = load i32, ptr %10, align 4, !tbaa !5
  %1708 = load i32, ptr %69, align 4, !tbaa !5
  %1709 = mul nsw i32 %1707, %1708
  %1710 = load i32, ptr %11, align 4, !tbaa !5
  %1711 = add nsw i32 %1709, %1710
  %1712 = sext i32 %1711 to i64
  %1713 = getelementptr inbounds float, ptr %1706, i64 %1712
  call void @libxsmm_convert_hf8_f32(ptr noundef %1705, ptr noundef %1713, i64 noundef 1)
  %1714 = load ptr, ptr %56, align 8, !tbaa !9
  %1715 = load i32, ptr %10, align 4, !tbaa !5
  %1716 = load i32, ptr %69, align 4, !tbaa !5
  %1717 = mul nsw i32 %1715, %1716
  %1718 = load i32, ptr %11, align 4, !tbaa !5
  %1719 = add nsw i32 %1717, %1718
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds i8, ptr %1714, i64 %1720
  %1722 = load ptr, ptr %25, align 8, !tbaa !9
  %1723 = load i32, ptr %10, align 4, !tbaa !5
  %1724 = load i32, ptr %69, align 4, !tbaa !5
  %1725 = mul nsw i32 %1723, %1724
  %1726 = load i32, ptr %11, align 4, !tbaa !5
  %1727 = add nsw i32 %1725, %1726
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds float, ptr %1722, i64 %1728
  call void @libxsmm_convert_hf8_f32(ptr noundef %1721, ptr noundef %1729, i64 noundef 1)
  %1730 = load ptr, ptr %55, align 8, !tbaa !9
  %1731 = load i32, ptr %10, align 4, !tbaa !5
  %1732 = load i32, ptr %69, align 4, !tbaa !5
  %1733 = mul nsw i32 %1731, %1732
  %1734 = load i32, ptr %11, align 4, !tbaa !5
  %1735 = add nsw i32 %1733, %1734
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds i8, ptr %1730, i64 %1736
  %1738 = load i8, ptr %1737, align 1, !tbaa !30
  %1739 = load ptr, ptr %56, align 8, !tbaa !9
  %1740 = load i32, ptr %10, align 4, !tbaa !5
  %1741 = load i32, ptr %69, align 4, !tbaa !5
  %1742 = mul nsw i32 %1740, %1741
  %1743 = load i32, ptr %11, align 4, !tbaa !5
  %1744 = add nsw i32 %1742, %1743
  %1745 = sext i32 %1744 to i64
  %1746 = getelementptr inbounds i8, ptr %1739, i64 %1745
  %1747 = load i8, ptr %1746, align 1, !tbaa !30
  %1748 = call i32 @unequal_hf8_vals(i8 noundef zeroext %1738, i8 noundef zeroext %1747)
  %1749 = icmp ne i32 %1748, 0
  br i1 %1749, label %1750, label %1751

1750:                                             ; preds = %1697
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1751

1751:                                             ; preds = %1750, %1697
  br label %1752

1752:                                             ; preds = %1751, %1694
  br label %1753

1753:                                             ; preds = %1752, %1693
  br label %1754

1754:                                             ; preds = %1753, %1635
  br label %1755

1755:                                             ; preds = %1754, %1577
  br label %1756

1756:                                             ; preds = %1755, %1515
  br label %1757

1757:                                             ; preds = %1756, %1489
  br label %1758

1758:                                             ; preds = %1757
  %1759 = load i32, ptr %11, align 4, !tbaa !5
  %1760 = add nsw i32 %1759, 1
  store i32 %1760, ptr %11, align 4, !tbaa !5
  br label %1460, !llvm.loop !31

1761:                                             ; preds = %1460
  br label %1762

1762:                                             ; preds = %1761
  %1763 = load i32, ptr %10, align 4, !tbaa !5
  %1764 = add nsw i32 %1763, 1
  store i32 %1764, ptr %10, align 4, !tbaa !5
  br label %1455, !llvm.loop !32

1765:                                             ; preds = %1455
  %1766 = load i32, ptr %71, align 4, !tbaa !5
  call void @print_dt_info(i32 noundef %1766)
  %1767 = load i32, ptr %12, align 4, !tbaa !5
  %1768 = icmp eq i32 %1767, 0
  br i1 %1768, label %1769, label %1770

1769:                                             ; preds = %1765
  br label %1771

1770:                                             ; preds = %1765
  br label %1771

1771:                                             ; preds = %1770, %1769
  %1772 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %1773 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  %1774 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %1775 = load i32, ptr %71, align 4, !tbaa !5
  %1776 = icmp eq i32 %1775, 13
  br i1 %1776, label %1777, label %1784

1777:                                             ; preds = %1771
  %1778 = load i32, ptr %69, align 4, !tbaa !5
  %1779 = load i32, ptr %68, align 4, !tbaa !5
  %1780 = mul nsw i32 %1778, %1779
  %1781 = load ptr, ptr %31, align 8, !tbaa !9
  %1782 = load ptr, ptr %32, align 8, !tbaa !9
  %1783 = call i32 @libxsmm_matdiff(ptr noundef %19, i32 noundef 0, i32 noundef %1780, i32 noundef 1, ptr noundef %1781, ptr noundef %1782, ptr noundef null, ptr noundef null)
  br label %1791

1784:                                             ; preds = %1771
  %1785 = load i32, ptr %69, align 4, !tbaa !5
  %1786 = load i32, ptr %68, align 4, !tbaa !5
  %1787 = mul nsw i32 %1785, %1786
  %1788 = load ptr, ptr %24, align 8, !tbaa !9
  %1789 = load ptr, ptr %25, align 8, !tbaa !9
  %1790 = call i32 @libxsmm_matdiff(ptr noundef %19, i32 noundef 1, i32 noundef %1787, i32 noundef 1, ptr noundef %1788, ptr noundef %1789, ptr noundef null, ptr noundef null)
  br label %1791

1791:                                             ; preds = %1784, %1777
  %1792 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 10
  %1793 = load double, ptr %1792, align 8, !tbaa !33
  %1794 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %1793)
  %1795 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 15
  %1796 = load double, ptr %1795, align 8, !tbaa !35
  %1797 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, double noundef %1796)
  %1798 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 7
  %1799 = load double, ptr %1798, align 8, !tbaa !36
  %1800 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, double noundef %1799)
  %1801 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 8
  %1802 = load double, ptr %1801, align 8, !tbaa !37
  %1803 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, double noundef %1802)
  %1804 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 5
  %1805 = load double, ptr %1804, align 8, !tbaa !38
  %1806 = call i32 (ptr, ...) @printf(ptr noundef @.str.7, double noundef %1805)
  %1807 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 6
  %1808 = load double, ptr %1807, align 8, !tbaa !39
  %1809 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, double noundef %1808)
  %1810 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 4
  %1811 = load double, ptr %1810, align 8, !tbaa !40
  %1812 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, double noundef %1811)
  %1813 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %19, i32 0, i32 4
  %1814 = load double, ptr %1813, align 8, !tbaa !40
  %1815 = load double, ptr %7, align 8, !tbaa !11
  %1816 = fcmp ogt double %1814, %1815
  br i1 %1816, label %1817, label %1818

1817:                                             ; preds = %1791
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %1818

1818:                                             ; preds = %1817, %1791
  %1819 = load i32, ptr %70, align 4, !tbaa !5
  %1820 = icmp sgt i32 %1819, 0
  br i1 %1820, label %1821, label %2226

1821:                                             ; preds = %1818
  %1822 = load i32, ptr %71, align 4, !tbaa !5
  %1823 = icmp eq i32 %1822, 0
  br i1 %1823, label %1824, label %1833

1824:                                             ; preds = %1821
  %1825 = load i32, ptr %67, align 4, !tbaa !5
  %1826 = load i32, ptr %68, align 4, !tbaa !5
  %1827 = load i32, ptr %69, align 4, !tbaa !5
  %1828 = load ptr, ptr %20, align 8, !tbaa !9
  %1829 = load ptr, ptr %21, align 8, !tbaa !9
  %1830 = load ptr, ptr %22, align 8, !tbaa !9
  %1831 = load ptr, ptr %23, align 8, !tbaa !9
  %1832 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f32f32(i32 noundef %1825, i32 noundef %1826, i32 noundef %1827, ptr noundef %1828, ptr noundef %1829, ptr noundef %1830, ptr noundef %1831, ptr noundef %1832)
  br label %2002

1833:                                             ; preds = %1821
  %1834 = load i32, ptr %71, align 4, !tbaa !5
  %1835 = icmp eq i32 %1834, 1
  br i1 %1835, label %1836, label %1845

1836:                                             ; preds = %1833
  %1837 = load i32, ptr %67, align 4, !tbaa !5
  %1838 = load i32, ptr %68, align 4, !tbaa !5
  %1839 = load i32, ptr %69, align 4, !tbaa !5
  %1840 = load ptr, ptr %33, align 8, !tbaa !9
  %1841 = load ptr, ptr %34, align 8, !tbaa !9
  %1842 = load ptr, ptr %35, align 8, !tbaa !9
  %1843 = load ptr, ptr %36, align 8, !tbaa !9
  %1844 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_bf16bf16(i32 noundef %1837, i32 noundef %1838, i32 noundef %1839, ptr noundef %1840, ptr noundef %1841, ptr noundef %1842, ptr noundef %1843, ptr noundef %1844)
  br label %2001

1845:                                             ; preds = %1833
  %1846 = load i32, ptr %71, align 4, !tbaa !5
  %1847 = icmp eq i32 %1846, 2
  br i1 %1847, label %1848, label %1857

1848:                                             ; preds = %1845
  %1849 = load i32, ptr %67, align 4, !tbaa !5
  %1850 = load i32, ptr %68, align 4, !tbaa !5
  %1851 = load i32, ptr %69, align 4, !tbaa !5
  %1852 = load ptr, ptr %20, align 8, !tbaa !9
  %1853 = load ptr, ptr %21, align 8, !tbaa !9
  %1854 = load ptr, ptr %22, align 8, !tbaa !9
  %1855 = load ptr, ptr %23, align 8, !tbaa !9
  %1856 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_f32bf16(i32 noundef %1849, i32 noundef %1850, i32 noundef %1851, ptr noundef %1852, ptr noundef %1853, ptr noundef %1854, ptr noundef %1855, ptr noundef %1856)
  br label %2000

1857:                                             ; preds = %1845
  %1858 = load i32, ptr %71, align 4, !tbaa !5
  %1859 = icmp eq i32 %1858, 3
  br i1 %1859, label %1860, label %1869

1860:                                             ; preds = %1857
  %1861 = load i32, ptr %67, align 4, !tbaa !5
  %1862 = load i32, ptr %68, align 4, !tbaa !5
  %1863 = load i32, ptr %69, align 4, !tbaa !5
  %1864 = load ptr, ptr %33, align 8, !tbaa !9
  %1865 = load ptr, ptr %34, align 8, !tbaa !9
  %1866 = load ptr, ptr %35, align 8, !tbaa !9
  %1867 = load ptr, ptr %36, align 8, !tbaa !9
  %1868 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf16f32(i32 noundef %1861, i32 noundef %1862, i32 noundef %1863, ptr noundef %1864, ptr noundef %1865, ptr noundef %1866, ptr noundef %1867, ptr noundef %1868)
  br label %1999

1869:                                             ; preds = %1857
  %1870 = load i32, ptr %71, align 4, !tbaa !5
  %1871 = icmp eq i32 %1870, 4
  br i1 %1871, label %1872, label %1881

1872:                                             ; preds = %1869
  %1873 = load i32, ptr %67, align 4, !tbaa !5
  %1874 = load i32, ptr %68, align 4, !tbaa !5
  %1875 = load i32, ptr %69, align 4, !tbaa !5
  %1876 = load ptr, ptr %45, align 8, !tbaa !9
  %1877 = load ptr, ptr %46, align 8, !tbaa !9
  %1878 = load ptr, ptr %47, align 8, !tbaa !9
  %1879 = load ptr, ptr %48, align 8, !tbaa !9
  %1880 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_bf8bf8(i32 noundef %1873, i32 noundef %1874, i32 noundef %1875, ptr noundef %1876, ptr noundef %1877, ptr noundef %1878, ptr noundef %1879, ptr noundef %1880)
  br label %1998

1881:                                             ; preds = %1869
  %1882 = load i32, ptr %71, align 4, !tbaa !5
  %1883 = icmp eq i32 %1882, 5
  br i1 %1883, label %1884, label %1893

1884:                                             ; preds = %1881
  %1885 = load i32, ptr %67, align 4, !tbaa !5
  %1886 = load i32, ptr %68, align 4, !tbaa !5
  %1887 = load i32, ptr %69, align 4, !tbaa !5
  %1888 = load ptr, ptr %20, align 8, !tbaa !9
  %1889 = load ptr, ptr %21, align 8, !tbaa !9
  %1890 = load ptr, ptr %22, align 8, !tbaa !9
  %1891 = load ptr, ptr %23, align 8, !tbaa !9
  %1892 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_f32bf8(i32 noundef %1885, i32 noundef %1886, i32 noundef %1887, ptr noundef %1888, ptr noundef %1889, ptr noundef %1890, ptr noundef %1891, ptr noundef %1892)
  br label %1997

1893:                                             ; preds = %1881
  %1894 = load i32, ptr %71, align 4, !tbaa !5
  %1895 = icmp eq i32 %1894, 6
  br i1 %1895, label %1896, label %1905

1896:                                             ; preds = %1893
  %1897 = load i32, ptr %67, align 4, !tbaa !5
  %1898 = load i32, ptr %68, align 4, !tbaa !5
  %1899 = load i32, ptr %69, align 4, !tbaa !5
  %1900 = load ptr, ptr %45, align 8, !tbaa !9
  %1901 = load ptr, ptr %46, align 8, !tbaa !9
  %1902 = load ptr, ptr %47, align 8, !tbaa !9
  %1903 = load ptr, ptr %48, align 8, !tbaa !9
  %1904 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf8f32(i32 noundef %1897, i32 noundef %1898, i32 noundef %1899, ptr noundef %1900, ptr noundef %1901, ptr noundef %1902, ptr noundef %1903, ptr noundef %1904)
  br label %1996

1905:                                             ; preds = %1893
  %1906 = load i32, ptr %71, align 4, !tbaa !5
  %1907 = icmp eq i32 %1906, 7
  br i1 %1907, label %1908, label %1917

1908:                                             ; preds = %1905
  %1909 = load i32, ptr %67, align 4, !tbaa !5
  %1910 = load i32, ptr %68, align 4, !tbaa !5
  %1911 = load i32, ptr %69, align 4, !tbaa !5
  %1912 = load ptr, ptr %39, align 8, !tbaa !9
  %1913 = load ptr, ptr %40, align 8, !tbaa !9
  %1914 = load ptr, ptr %41, align 8, !tbaa !9
  %1915 = load ptr, ptr %42, align 8, !tbaa !9
  %1916 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f16f16(i32 noundef %1909, i32 noundef %1910, i32 noundef %1911, ptr noundef %1912, ptr noundef %1913, ptr noundef %1914, ptr noundef %1915, ptr noundef %1916)
  br label %1995

1917:                                             ; preds = %1905
  %1918 = load i32, ptr %71, align 4, !tbaa !5
  %1919 = icmp eq i32 %1918, 8
  br i1 %1919, label %1920, label %1929

1920:                                             ; preds = %1917
  %1921 = load i32, ptr %67, align 4, !tbaa !5
  %1922 = load i32, ptr %68, align 4, !tbaa !5
  %1923 = load i32, ptr %69, align 4, !tbaa !5
  %1924 = load ptr, ptr %20, align 8, !tbaa !9
  %1925 = load ptr, ptr %21, align 8, !tbaa !9
  %1926 = load ptr, ptr %22, align 8, !tbaa !9
  %1927 = load ptr, ptr %23, align 8, !tbaa !9
  %1928 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f32f16(i32 noundef %1921, i32 noundef %1922, i32 noundef %1923, ptr noundef %1924, ptr noundef %1925, ptr noundef %1926, ptr noundef %1927, ptr noundef %1928)
  br label %1994

1929:                                             ; preds = %1917
  %1930 = load i32, ptr %71, align 4, !tbaa !5
  %1931 = icmp eq i32 %1930, 9
  br i1 %1931, label %1932, label %1941

1932:                                             ; preds = %1929
  %1933 = load i32, ptr %67, align 4, !tbaa !5
  %1934 = load i32, ptr %68, align 4, !tbaa !5
  %1935 = load i32, ptr %69, align 4, !tbaa !5
  %1936 = load ptr, ptr %39, align 8, !tbaa !9
  %1937 = load ptr, ptr %40, align 8, !tbaa !9
  %1938 = load ptr, ptr %41, align 8, !tbaa !9
  %1939 = load ptr, ptr %42, align 8, !tbaa !9
  %1940 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f16f32(i32 noundef %1933, i32 noundef %1934, i32 noundef %1935, ptr noundef %1936, ptr noundef %1937, ptr noundef %1938, ptr noundef %1939, ptr noundef %1940)
  br label %1993

1941:                                             ; preds = %1929
  %1942 = load i32, ptr %71, align 4, !tbaa !5
  %1943 = icmp eq i32 %1942, 10
  br i1 %1943, label %1944, label %1953

1944:                                             ; preds = %1941
  %1945 = load i32, ptr %67, align 4, !tbaa !5
  %1946 = load i32, ptr %68, align 4, !tbaa !5
  %1947 = load i32, ptr %69, align 4, !tbaa !5
  %1948 = load ptr, ptr %51, align 8, !tbaa !9
  %1949 = load ptr, ptr %52, align 8, !tbaa !9
  %1950 = load ptr, ptr %53, align 8, !tbaa !9
  %1951 = load ptr, ptr %54, align 8, !tbaa !9
  %1952 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_hf8hf8(i32 noundef %1945, i32 noundef %1946, i32 noundef %1947, ptr noundef %1948, ptr noundef %1949, ptr noundef %1950, ptr noundef %1951, ptr noundef %1952)
  br label %1992

1953:                                             ; preds = %1941
  %1954 = load i32, ptr %71, align 4, !tbaa !5
  %1955 = icmp eq i32 %1954, 11
  br i1 %1955, label %1956, label %1965

1956:                                             ; preds = %1953
  %1957 = load i32, ptr %67, align 4, !tbaa !5
  %1958 = load i32, ptr %68, align 4, !tbaa !5
  %1959 = load i32, ptr %69, align 4, !tbaa !5
  %1960 = load ptr, ptr %20, align 8, !tbaa !9
  %1961 = load ptr, ptr %21, align 8, !tbaa !9
  %1962 = load ptr, ptr %22, align 8, !tbaa !9
  %1963 = load ptr, ptr %23, align 8, !tbaa !9
  %1964 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_f32hf8(i32 noundef %1957, i32 noundef %1958, i32 noundef %1959, ptr noundef %1960, ptr noundef %1961, ptr noundef %1962, ptr noundef %1963, ptr noundef %1964)
  br label %1991

1965:                                             ; preds = %1953
  %1966 = load i32, ptr %71, align 4, !tbaa !5
  %1967 = icmp eq i32 %1966, 12
  br i1 %1967, label %1968, label %1977

1968:                                             ; preds = %1965
  %1969 = load i32, ptr %67, align 4, !tbaa !5
  %1970 = load i32, ptr %68, align 4, !tbaa !5
  %1971 = load i32, ptr %69, align 4, !tbaa !5
  %1972 = load ptr, ptr %51, align 8, !tbaa !9
  %1973 = load ptr, ptr %52, align 8, !tbaa !9
  %1974 = load ptr, ptr %53, align 8, !tbaa !9
  %1975 = load ptr, ptr %54, align 8, !tbaa !9
  %1976 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_hf8f32(i32 noundef %1969, i32 noundef %1970, i32 noundef %1971, ptr noundef %1972, ptr noundef %1973, ptr noundef %1974, ptr noundef %1975, ptr noundef %1976)
  br label %1990

1977:                                             ; preds = %1965
  %1978 = load i32, ptr %71, align 4, !tbaa !5
  %1979 = icmp eq i32 %1978, 13
  br i1 %1979, label %1980, label %1989

1980:                                             ; preds = %1977
  %1981 = load i32, ptr %67, align 4, !tbaa !5
  %1982 = load i32, ptr %68, align 4, !tbaa !5
  %1983 = load i32, ptr %69, align 4, !tbaa !5
  %1984 = load ptr, ptr %27, align 8, !tbaa !9
  %1985 = load ptr, ptr %28, align 8, !tbaa !9
  %1986 = load ptr, ptr %29, align 8, !tbaa !9
  %1987 = load ptr, ptr %30, align 8, !tbaa !9
  %1988 = load ptr, ptr %31, align 8, !tbaa !9
  call void @eqn0_f64f64(i32 noundef %1981, i32 noundef %1982, i32 noundef %1983, ptr noundef %1984, ptr noundef %1985, ptr noundef %1986, ptr noundef %1987, ptr noundef %1988)
  br label %1989

1989:                                             ; preds = %1980, %1977
  br label %1990

1990:                                             ; preds = %1989, %1968
  br label %1991

1991:                                             ; preds = %1990, %1956
  br label %1992

1992:                                             ; preds = %1991, %1944
  br label %1993

1993:                                             ; preds = %1992, %1932
  br label %1994

1994:                                             ; preds = %1993, %1920
  br label %1995

1995:                                             ; preds = %1994, %1908
  br label %1996

1996:                                             ; preds = %1995, %1896
  br label %1997

1997:                                             ; preds = %1996, %1884
  br label %1998

1998:                                             ; preds = %1997, %1872
  br label %1999

1999:                                             ; preds = %1998, %1860
  br label %2000

2000:                                             ; preds = %1999, %1848
  br label %2001

2001:                                             ; preds = %2000, %1836
  br label %2002

2002:                                             ; preds = %2001, %1824
  %2003 = call i64 @libxsmm_timer_tick()
  store i64 %2003, ptr %15, align 8, !tbaa !41
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %2004

2004:                                             ; preds = %2190, %2002
  %2005 = load i32, ptr %13, align 4, !tbaa !5
  %2006 = load i32, ptr %70, align 4, !tbaa !5
  %2007 = icmp slt i32 %2005, %2006
  br i1 %2007, label %2008, label %2193

2008:                                             ; preds = %2004
  %2009 = load i32, ptr %71, align 4, !tbaa !5
  %2010 = icmp eq i32 %2009, 0
  br i1 %2010, label %2011, label %2020

2011:                                             ; preds = %2008
  %2012 = load i32, ptr %67, align 4, !tbaa !5
  %2013 = load i32, ptr %68, align 4, !tbaa !5
  %2014 = load i32, ptr %69, align 4, !tbaa !5
  %2015 = load ptr, ptr %20, align 8, !tbaa !9
  %2016 = load ptr, ptr %21, align 8, !tbaa !9
  %2017 = load ptr, ptr %22, align 8, !tbaa !9
  %2018 = load ptr, ptr %23, align 8, !tbaa !9
  %2019 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f32f32(i32 noundef %2012, i32 noundef %2013, i32 noundef %2014, ptr noundef %2015, ptr noundef %2016, ptr noundef %2017, ptr noundef %2018, ptr noundef %2019)
  br label %2189

2020:                                             ; preds = %2008
  %2021 = load i32, ptr %71, align 4, !tbaa !5
  %2022 = icmp eq i32 %2021, 1
  br i1 %2022, label %2023, label %2032

2023:                                             ; preds = %2020
  %2024 = load i32, ptr %67, align 4, !tbaa !5
  %2025 = load i32, ptr %68, align 4, !tbaa !5
  %2026 = load i32, ptr %69, align 4, !tbaa !5
  %2027 = load ptr, ptr %33, align 8, !tbaa !9
  %2028 = load ptr, ptr %34, align 8, !tbaa !9
  %2029 = load ptr, ptr %35, align 8, !tbaa !9
  %2030 = load ptr, ptr %36, align 8, !tbaa !9
  %2031 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_bf16bf16(i32 noundef %2024, i32 noundef %2025, i32 noundef %2026, ptr noundef %2027, ptr noundef %2028, ptr noundef %2029, ptr noundef %2030, ptr noundef %2031)
  br label %2188

2032:                                             ; preds = %2020
  %2033 = load i32, ptr %71, align 4, !tbaa !5
  %2034 = icmp eq i32 %2033, 2
  br i1 %2034, label %2035, label %2044

2035:                                             ; preds = %2032
  %2036 = load i32, ptr %67, align 4, !tbaa !5
  %2037 = load i32, ptr %68, align 4, !tbaa !5
  %2038 = load i32, ptr %69, align 4, !tbaa !5
  %2039 = load ptr, ptr %20, align 8, !tbaa !9
  %2040 = load ptr, ptr %21, align 8, !tbaa !9
  %2041 = load ptr, ptr %22, align 8, !tbaa !9
  %2042 = load ptr, ptr %23, align 8, !tbaa !9
  %2043 = load ptr, ptr %37, align 8, !tbaa !9
  call void @eqn0_f32bf16(i32 noundef %2036, i32 noundef %2037, i32 noundef %2038, ptr noundef %2039, ptr noundef %2040, ptr noundef %2041, ptr noundef %2042, ptr noundef %2043)
  br label %2187

2044:                                             ; preds = %2032
  %2045 = load i32, ptr %71, align 4, !tbaa !5
  %2046 = icmp eq i32 %2045, 3
  br i1 %2046, label %2047, label %2056

2047:                                             ; preds = %2044
  %2048 = load i32, ptr %67, align 4, !tbaa !5
  %2049 = load i32, ptr %68, align 4, !tbaa !5
  %2050 = load i32, ptr %69, align 4, !tbaa !5
  %2051 = load ptr, ptr %33, align 8, !tbaa !9
  %2052 = load ptr, ptr %34, align 8, !tbaa !9
  %2053 = load ptr, ptr %35, align 8, !tbaa !9
  %2054 = load ptr, ptr %36, align 8, !tbaa !9
  %2055 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf16f32(i32 noundef %2048, i32 noundef %2049, i32 noundef %2050, ptr noundef %2051, ptr noundef %2052, ptr noundef %2053, ptr noundef %2054, ptr noundef %2055)
  br label %2186

2056:                                             ; preds = %2044
  %2057 = load i32, ptr %71, align 4, !tbaa !5
  %2058 = icmp eq i32 %2057, 4
  br i1 %2058, label %2059, label %2068

2059:                                             ; preds = %2056
  %2060 = load i32, ptr %67, align 4, !tbaa !5
  %2061 = load i32, ptr %68, align 4, !tbaa !5
  %2062 = load i32, ptr %69, align 4, !tbaa !5
  %2063 = load ptr, ptr %45, align 8, !tbaa !9
  %2064 = load ptr, ptr %46, align 8, !tbaa !9
  %2065 = load ptr, ptr %47, align 8, !tbaa !9
  %2066 = load ptr, ptr %48, align 8, !tbaa !9
  %2067 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_bf8bf8(i32 noundef %2060, i32 noundef %2061, i32 noundef %2062, ptr noundef %2063, ptr noundef %2064, ptr noundef %2065, ptr noundef %2066, ptr noundef %2067)
  br label %2185

2068:                                             ; preds = %2056
  %2069 = load i32, ptr %71, align 4, !tbaa !5
  %2070 = icmp eq i32 %2069, 5
  br i1 %2070, label %2071, label %2080

2071:                                             ; preds = %2068
  %2072 = load i32, ptr %67, align 4, !tbaa !5
  %2073 = load i32, ptr %68, align 4, !tbaa !5
  %2074 = load i32, ptr %69, align 4, !tbaa !5
  %2075 = load ptr, ptr %20, align 8, !tbaa !9
  %2076 = load ptr, ptr %21, align 8, !tbaa !9
  %2077 = load ptr, ptr %22, align 8, !tbaa !9
  %2078 = load ptr, ptr %23, align 8, !tbaa !9
  %2079 = load ptr, ptr %49, align 8, !tbaa !9
  call void @eqn0_f32bf8(i32 noundef %2072, i32 noundef %2073, i32 noundef %2074, ptr noundef %2075, ptr noundef %2076, ptr noundef %2077, ptr noundef %2078, ptr noundef %2079)
  br label %2184

2080:                                             ; preds = %2068
  %2081 = load i32, ptr %71, align 4, !tbaa !5
  %2082 = icmp eq i32 %2081, 6
  br i1 %2082, label %2083, label %2092

2083:                                             ; preds = %2080
  %2084 = load i32, ptr %67, align 4, !tbaa !5
  %2085 = load i32, ptr %68, align 4, !tbaa !5
  %2086 = load i32, ptr %69, align 4, !tbaa !5
  %2087 = load ptr, ptr %45, align 8, !tbaa !9
  %2088 = load ptr, ptr %46, align 8, !tbaa !9
  %2089 = load ptr, ptr %47, align 8, !tbaa !9
  %2090 = load ptr, ptr %48, align 8, !tbaa !9
  %2091 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_bf8f32(i32 noundef %2084, i32 noundef %2085, i32 noundef %2086, ptr noundef %2087, ptr noundef %2088, ptr noundef %2089, ptr noundef %2090, ptr noundef %2091)
  br label %2183

2092:                                             ; preds = %2080
  %2093 = load i32, ptr %71, align 4, !tbaa !5
  %2094 = icmp eq i32 %2093, 7
  br i1 %2094, label %2095, label %2104

2095:                                             ; preds = %2092
  %2096 = load i32, ptr %67, align 4, !tbaa !5
  %2097 = load i32, ptr %68, align 4, !tbaa !5
  %2098 = load i32, ptr %69, align 4, !tbaa !5
  %2099 = load ptr, ptr %39, align 8, !tbaa !9
  %2100 = load ptr, ptr %40, align 8, !tbaa !9
  %2101 = load ptr, ptr %41, align 8, !tbaa !9
  %2102 = load ptr, ptr %42, align 8, !tbaa !9
  %2103 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f16f16(i32 noundef %2096, i32 noundef %2097, i32 noundef %2098, ptr noundef %2099, ptr noundef %2100, ptr noundef %2101, ptr noundef %2102, ptr noundef %2103)
  br label %2182

2104:                                             ; preds = %2092
  %2105 = load i32, ptr %71, align 4, !tbaa !5
  %2106 = icmp eq i32 %2105, 8
  br i1 %2106, label %2107, label %2116

2107:                                             ; preds = %2104
  %2108 = load i32, ptr %67, align 4, !tbaa !5
  %2109 = load i32, ptr %68, align 4, !tbaa !5
  %2110 = load i32, ptr %69, align 4, !tbaa !5
  %2111 = load ptr, ptr %20, align 8, !tbaa !9
  %2112 = load ptr, ptr %21, align 8, !tbaa !9
  %2113 = load ptr, ptr %22, align 8, !tbaa !9
  %2114 = load ptr, ptr %23, align 8, !tbaa !9
  %2115 = load ptr, ptr %43, align 8, !tbaa !9
  call void @eqn0_f32f16(i32 noundef %2108, i32 noundef %2109, i32 noundef %2110, ptr noundef %2111, ptr noundef %2112, ptr noundef %2113, ptr noundef %2114, ptr noundef %2115)
  br label %2181

2116:                                             ; preds = %2104
  %2117 = load i32, ptr %71, align 4, !tbaa !5
  %2118 = icmp eq i32 %2117, 9
  br i1 %2118, label %2119, label %2128

2119:                                             ; preds = %2116
  %2120 = load i32, ptr %67, align 4, !tbaa !5
  %2121 = load i32, ptr %68, align 4, !tbaa !5
  %2122 = load i32, ptr %69, align 4, !tbaa !5
  %2123 = load ptr, ptr %39, align 8, !tbaa !9
  %2124 = load ptr, ptr %40, align 8, !tbaa !9
  %2125 = load ptr, ptr %41, align 8, !tbaa !9
  %2126 = load ptr, ptr %42, align 8, !tbaa !9
  %2127 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_f16f32(i32 noundef %2120, i32 noundef %2121, i32 noundef %2122, ptr noundef %2123, ptr noundef %2124, ptr noundef %2125, ptr noundef %2126, ptr noundef %2127)
  br label %2180

2128:                                             ; preds = %2116
  %2129 = load i32, ptr %71, align 4, !tbaa !5
  %2130 = icmp eq i32 %2129, 10
  br i1 %2130, label %2131, label %2140

2131:                                             ; preds = %2128
  %2132 = load i32, ptr %67, align 4, !tbaa !5
  %2133 = load i32, ptr %68, align 4, !tbaa !5
  %2134 = load i32, ptr %69, align 4, !tbaa !5
  %2135 = load ptr, ptr %51, align 8, !tbaa !9
  %2136 = load ptr, ptr %52, align 8, !tbaa !9
  %2137 = load ptr, ptr %53, align 8, !tbaa !9
  %2138 = load ptr, ptr %54, align 8, !tbaa !9
  %2139 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_hf8hf8(i32 noundef %2132, i32 noundef %2133, i32 noundef %2134, ptr noundef %2135, ptr noundef %2136, ptr noundef %2137, ptr noundef %2138, ptr noundef %2139)
  br label %2179

2140:                                             ; preds = %2128
  %2141 = load i32, ptr %71, align 4, !tbaa !5
  %2142 = icmp eq i32 %2141, 11
  br i1 %2142, label %2143, label %2152

2143:                                             ; preds = %2140
  %2144 = load i32, ptr %67, align 4, !tbaa !5
  %2145 = load i32, ptr %68, align 4, !tbaa !5
  %2146 = load i32, ptr %69, align 4, !tbaa !5
  %2147 = load ptr, ptr %20, align 8, !tbaa !9
  %2148 = load ptr, ptr %21, align 8, !tbaa !9
  %2149 = load ptr, ptr %22, align 8, !tbaa !9
  %2150 = load ptr, ptr %23, align 8, !tbaa !9
  %2151 = load ptr, ptr %55, align 8, !tbaa !9
  call void @eqn0_f32hf8(i32 noundef %2144, i32 noundef %2145, i32 noundef %2146, ptr noundef %2147, ptr noundef %2148, ptr noundef %2149, ptr noundef %2150, ptr noundef %2151)
  br label %2178

2152:                                             ; preds = %2140
  %2153 = load i32, ptr %71, align 4, !tbaa !5
  %2154 = icmp eq i32 %2153, 12
  br i1 %2154, label %2155, label %2164

2155:                                             ; preds = %2152
  %2156 = load i32, ptr %67, align 4, !tbaa !5
  %2157 = load i32, ptr %68, align 4, !tbaa !5
  %2158 = load i32, ptr %69, align 4, !tbaa !5
  %2159 = load ptr, ptr %51, align 8, !tbaa !9
  %2160 = load ptr, ptr %52, align 8, !tbaa !9
  %2161 = load ptr, ptr %53, align 8, !tbaa !9
  %2162 = load ptr, ptr %54, align 8, !tbaa !9
  %2163 = load ptr, ptr %24, align 8, !tbaa !9
  call void @eqn0_hf8f32(i32 noundef %2156, i32 noundef %2157, i32 noundef %2158, ptr noundef %2159, ptr noundef %2160, ptr noundef %2161, ptr noundef %2162, ptr noundef %2163)
  br label %2177

2164:                                             ; preds = %2152
  %2165 = load i32, ptr %71, align 4, !tbaa !5
  %2166 = icmp eq i32 %2165, 13
  br i1 %2166, label %2167, label %2176

2167:                                             ; preds = %2164
  %2168 = load i32, ptr %67, align 4, !tbaa !5
  %2169 = load i32, ptr %68, align 4, !tbaa !5
  %2170 = load i32, ptr %69, align 4, !tbaa !5
  %2171 = load ptr, ptr %27, align 8, !tbaa !9
  %2172 = load ptr, ptr %28, align 8, !tbaa !9
  %2173 = load ptr, ptr %29, align 8, !tbaa !9
  %2174 = load ptr, ptr %30, align 8, !tbaa !9
  %2175 = load ptr, ptr %31, align 8, !tbaa !9
  call void @eqn0_f64f64(i32 noundef %2168, i32 noundef %2169, i32 noundef %2170, ptr noundef %2171, ptr noundef %2172, ptr noundef %2173, ptr noundef %2174, ptr noundef %2175)
  br label %2176

2176:                                             ; preds = %2167, %2164
  br label %2177

2177:                                             ; preds = %2176, %2155
  br label %2178

2178:                                             ; preds = %2177, %2143
  br label %2179

2179:                                             ; preds = %2178, %2131
  br label %2180

2180:                                             ; preds = %2179, %2119
  br label %2181

2181:                                             ; preds = %2180, %2107
  br label %2182

2182:                                             ; preds = %2181, %2095
  br label %2183

2183:                                             ; preds = %2182, %2083
  br label %2184

2184:                                             ; preds = %2183, %2071
  br label %2185

2185:                                             ; preds = %2184, %2059
  br label %2186

2186:                                             ; preds = %2185, %2047
  br label %2187

2187:                                             ; preds = %2186, %2035
  br label %2188

2188:                                             ; preds = %2187, %2023
  br label %2189

2189:                                             ; preds = %2188, %2011
  br label %2190

2190:                                             ; preds = %2189
  %2191 = load i32, ptr %13, align 4, !tbaa !5
  %2192 = add nsw i32 %2191, 1
  store i32 %2192, ptr %13, align 4, !tbaa !5
  br label %2004, !llvm.loop !43

2193:                                             ; preds = %2004
  %2194 = call i64 @libxsmm_timer_tick()
  store i64 %2194, ptr %16, align 8, !tbaa !41
  %2195 = load i64, ptr %15, align 8, !tbaa !41
  %2196 = load i64, ptr %16, align 8, !tbaa !41
  %2197 = call double @libxsmm_timer_duration(i64 noundef %2195, i64 noundef %2196)
  store double %2197, ptr %17, align 8, !tbaa !11
  %2198 = load double, ptr %17, align 8, !tbaa !11
  %2199 = call i32 (ptr, ...) @printf(ptr noundef @.str.10, double noundef %2198)
  %2200 = load ptr, ptr %9, align 8, !tbaa !9
  call void %2200(ptr noundef %14)
  %2201 = call i64 @libxsmm_timer_tick()
  store i64 %2201, ptr %15, align 8, !tbaa !41
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %2202

2202:                                             ; preds = %2208, %2193
  %2203 = load i32, ptr %13, align 4, !tbaa !5
  %2204 = load i32, ptr %70, align 4, !tbaa !5
  %2205 = icmp slt i32 %2203, %2204
  br i1 %2205, label %2206, label %2211

2206:                                             ; preds = %2202
  %2207 = load ptr, ptr %9, align 8, !tbaa !9
  call void %2207(ptr noundef %14)
  br label %2208

2208:                                             ; preds = %2206
  %2209 = load i32, ptr %13, align 4, !tbaa !5
  %2210 = add nsw i32 %2209, 1
  store i32 %2210, ptr %13, align 4, !tbaa !5
  br label %2202, !llvm.loop !44

2211:                                             ; preds = %2202
  %2212 = call i64 @libxsmm_timer_tick()
  store i64 %2212, ptr %16, align 8, !tbaa !41
  %2213 = load i64, ptr %15, align 8, !tbaa !41
  %2214 = load i64, ptr %16, align 8, !tbaa !41
  %2215 = call double @libxsmm_timer_duration(i64 noundef %2213, i64 noundef %2214)
  store double %2215, ptr %18, align 8, !tbaa !11
  %2216 = load double, ptr %18, align 8, !tbaa !11
  %2217 = call i32 (ptr, ...) @printf(ptr noundef @.str.11, double noundef %2216)
  %2218 = load double, ptr %18, align 8, !tbaa !11
  %2219 = fcmp olt double 0.000000e+00, %2218
  br i1 %2219, label %2220, label %2225

2220:                                             ; preds = %2211
  %2221 = load double, ptr %17, align 8, !tbaa !11
  %2222 = load double, ptr %18, align 8, !tbaa !11
  %2223 = fdiv double %2221, %2222
  %2224 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, double noundef %2223)
  br label %2225

2225:                                             ; preds = %2220, %2211
  br label %2226

2226:                                             ; preds = %2225, %1818
  %2227 = load ptr, ptr %20, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2227)
  %2228 = load ptr, ptr %21, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2228)
  %2229 = load ptr, ptr %22, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2229)
  %2230 = load ptr, ptr %23, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2230)
  %2231 = load ptr, ptr %24, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2231)
  %2232 = load ptr, ptr %25, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2232)
  %2233 = load ptr, ptr %33, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2233)
  %2234 = load ptr, ptr %34, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2234)
  %2235 = load ptr, ptr %35, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2235)
  %2236 = load ptr, ptr %36, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2236)
  %2237 = load ptr, ptr %37, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2237)
  %2238 = load ptr, ptr %38, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2238)
  %2239 = load ptr, ptr %39, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2239)
  %2240 = load ptr, ptr %40, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2240)
  %2241 = load ptr, ptr %41, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2241)
  %2242 = load ptr, ptr %42, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2242)
  %2243 = load ptr, ptr %43, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2243)
  %2244 = load ptr, ptr %44, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2244)
  %2245 = load ptr, ptr %45, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2245)
  %2246 = load ptr, ptr %46, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2246)
  %2247 = load ptr, ptr %47, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2247)
  %2248 = load ptr, ptr %48, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2248)
  %2249 = load ptr, ptr %49, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2249)
  %2250 = load ptr, ptr %50, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2250)
  %2251 = load ptr, ptr %51, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2251)
  %2252 = load ptr, ptr %52, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2252)
  %2253 = load ptr, ptr %53, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2253)
  %2254 = load ptr, ptr %54, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2254)
  %2255 = load ptr, ptr %55, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2255)
  %2256 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %2256)
  %2257 = load i32, ptr %6, align 4, !tbaa !5
  %2258 = icmp eq i32 %2257, 0
  br i1 %2258, label %2259, label %2262

2259:                                             ; preds = %2226
  %2260 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %2261 = call i32 @libxsmm_return_success_code(i32 noundef %2260)
  br label %2264

2262:                                             ; preds = %2226
  %2263 = load i32, ptr %6, align 4, !tbaa !5
  br label %2264

2264:                                             ; preds = %2262, %2259
  %2265 = phi i32 [ %2261, %2259 ], [ %2263, %2262 ]
  store i32 %2265, ptr %6, align 4, !tbaa !5
  %2266 = load i32, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  ret i32 %2266
}

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

declare { i64, i64 } @libxsmm_create_matrix_arg_attributes(i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_init() #2

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #3

declare noalias ptr @libxsmm_aligned_malloc(i64 noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @set_in_out_compute_dt(i32 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @libxsmm_matdiff_clear(ptr noundef) #2

declare double @libxsmm_rng_f64() #2

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) #2

declare void @libxsmm_rne_convert_fp32_f16(ptr noundef, ptr noundef, i64 noundef) #2

declare void @libxsmm_rne_convert_fp32_bf8(ptr noundef, ptr noundef, i64 noundef) #2

declare void @libxsmm_rne_convert_fp32_hf8(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf16bf16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32bf16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf16f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf8bf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32bf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf8f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f16f16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32f16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f16f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_hf8hf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32hf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_hf8f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f64f64(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @libxsmm_meqn_create() #2

declare i64 @libxsmm_create_meqn_op_metadata(i32 noundef, i32 noundef) #2

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

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

declare i32 @libxsmm_meqn_push_back_binary_op(i64, i32 noundef, i32 noundef, i32 noundef) #2

declare { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare i64 @libxsmm_create_meqn_arg_metadata(i32 noundef, i32 noundef) #2

declare i32 @libxsmm_meqn_push_back_arg(i64, i64, i64, i64, i64) #2

declare i32 @libxsmm_meqn_push_back_unary_op(i64, i32 noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_meqn_tree_print(i32 noundef) #2

declare void @libxsmm_meqn_rpn_print(i32 noundef) #2

declare ptr @libxsmm_dispatch_meqn(i32 noundef, i64, i64) #2

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #6

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_fp32_vals(float noundef, float noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_fp64_vals(double noundef, double noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @upconvert_bf16(i16 noundef zeroext) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_bf16_vals(i16 noundef zeroext, i16 noundef zeroext) #4

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_f16_vals(i16 noundef zeroext, i16 noundef zeroext) #4

declare void @libxsmm_convert_bf8_f32(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_bf8_vals(i8 noundef zeroext, i8 noundef zeroext) #4

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_hf8_vals(i8 noundef zeroext, i8 noundef zeroext) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @print_dt_info(i32 noundef) #4

declare i32 @printf(ptr noundef, ...) #2

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

declare i64 @libxsmm_timer_tick() #2

declare double @libxsmm_timer_duration(i64 noundef, i64 noundef) #2

declare void @libxsmm_free(ptr 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 = { inlinehint nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !10, i64 0}
!19 = !{!"libxsmm_matrix_arg", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!20 = !{i64 0, i64 4, !5, i64 4, i64 4, !5}
!21 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 12, i64 4, !5}
!22 = !{!23, !6, i64 16}
!23 = !{!"libxsmm_kernel_info", !6, i64 0, !6, i64 4, !24, i64 8, !6, i64 16}
!24 = !{!"long", !7, i64 0}
!25 = !{!26, !10, i64 8}
!26 = !{!"libxsmm_meqn_param", !10, i64 0, !10, i64 8, !19, i64 16}
!27 = !{!26, !10, i64 16}
!28 = !{!29, !29, i64 0}
!29 = !{!"short", !7, i64 0}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = !{!34, !12, i64 80}
!34 = !{!"libxsmm_matdiff_info", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188}
!35 = !{!34, !12, i64 120}
!36 = !{!34, !12, i64 56}
!37 = !{!34, !12, i64 64}
!38 = !{!34, !12, i64 40}
!39 = !{!34, !12, i64 48}
!40 = !{!34, !12, i64 32}
!41 = !{!42, !42, i64 0}
!42 = !{!"long long", !7, i64 0}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}


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

%struct.libxsmm_kernel_info = type { i32, i32, i64, i32 }
%struct.libxsmm_meqn_param = type { ptr, ptr, %struct.libxsmm_matrix_arg }
%struct.libxsmm_matrix_arg = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.libxsmm_matdiff_info = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32 }

@is_reference_kernel = external dso_local local_unnamed_addr global i32, align 4
@info = external dso_local global %struct.libxsmm_kernel_info, align 8
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_return_success_code(i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca %struct.libxsmm_meqn_param, align 8
  %4 = alloca %struct.libxsmm_matdiff_info, align 8
  %5 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %6 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %7 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %8 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %9 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %10 = alloca [4 x %struct.libxsmm_matrix_arg], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %10) #8
  %14 = tail call { i64, i64 } @libxsmm_create_matrix_arg_attributes(i32 noundef 0, i32 noundef 0, i32 noundef 0, i32 noundef 0) #8
  %15 = extractvalue { i64, i64 } %14, 0
  %16 = extractvalue { i64, i64 } %14, 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 1, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  store i32 1, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  store i32 1, ptr %13, align 4, !tbaa !5
  tail call void @libxsmm_init() #8
  %17 = icmp sgt i32 %0, 1
  br i1 %17, label %18, label %.thread1054

18:                                               ; preds = %2
  %19 = getelementptr inbounds i8, ptr %1, i64 8
  %20 = load ptr, ptr %19, align 8, !tbaa !9
  %21 = tail call i32 @atoi(ptr nocapture noundef %20) #9
  %.not = icmp eq i32 %0, 2
  br i1 %.not, label %.thread1054, label %22

22:                                               ; preds = %18
  %23 = getelementptr inbounds i8, ptr %1, i64 16
  %24 = load ptr, ptr %23, align 8, !tbaa !9
  %25 = tail call i32 @atoi(ptr nocapture noundef %24) #9
  %26 = icmp ugt i32 %0, 3
  br i1 %26, label %27, label %.thread1054

27:                                               ; preds = %22
  %28 = getelementptr inbounds i8, ptr %1, i64 24
  %29 = load ptr, ptr %28, align 8, !tbaa !9
  %30 = tail call i32 @atoi(ptr nocapture noundef %29) #9
  %.not1063 = icmp eq i32 %0, 4
  br i1 %.not1063, label %.thread1054, label %31

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %1, i64 32
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = tail call i32 @atoi(ptr nocapture noundef %33) #9
  %35 = icmp ugt i32 %0, 5
  br i1 %35, label %36, label %.thread1054

36:                                               ; preds = %31
  %37 = getelementptr inbounds i8, ptr %1, i64 40
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  %39 = tail call i32 @atoi(ptr nocapture noundef %38) #9
  br label %.thread1054

.thread1054:                                      ; preds = %2, %18, %22, %27, %36, %31
  %.010251062 = phi i32 [ %34, %36 ], [ %34, %31 ], [ 0, %27 ], [ 0, %22 ], [ 0, %18 ], [ 0, %2 ]
  %.01022104410501061 = phi i32 [ %25, %36 ], [ %25, %31 ], [ %25, %27 ], [ %25, %22 ], [ 64, %18 ], [ 64, %2 ]
  %.010211039104310511060 = phi i32 [ %21, %36 ], [ %21, %31 ], [ %21, %27 ], [ %21, %22 ], [ %21, %18 ], [ 64, %2 ]
  %.0102310521059 = phi i32 [ %30, %36 ], [ %30, %31 ], [ %30, %27 ], [ 64, %22 ], [ 64, %18 ], [ 64, %2 ]
  %.01024 = phi i32 [ %39, %36 ], [ 100, %31 ], [ 100, %27 ], [ 100, %22 ], [ 100, %18 ], [ 100, %2 ]
  %40 = sext i32 %.01022104410501061 to i64
  %41 = shl nsw i64 %40, 2
  %42 = sext i32 %.0102310521059 to i64
  %43 = mul i64 %41, %42
  %44 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %45 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %46 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %47 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %48 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %49 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %43, i64 noundef 64) #8
  %50 = shl nsw i64 %40, 3
  %51 = mul i64 %50, %42
  %52 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %53 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %54 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %55 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %56 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %57 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %51, i64 noundef 64) #8
  %58 = shl nsw i64 %40, 1
  %59 = mul i64 %58, %42
  %60 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %61 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %62 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %63 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %64 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %65 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %66 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %67 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %68 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %69 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %70 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %71 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %59, i64 noundef 64) #8
  %72 = mul nsw i64 %42, %40
  %73 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %74 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %75 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %76 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %77 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %78 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %79 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %80 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %81 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %82 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %83 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  %84 = tail call noalias ptr @libxsmm_aligned_malloc(i64 noundef %72, i64 noundef 64) #8
  call void @set_in_out_compute_dt(i32 noundef %.010251062, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13)
  call void @libxsmm_matdiff_clear(ptr noundef nonnull %4) #8
  %85 = load i32, ptr %11, align 4, !tbaa !5
  %86 = icmp eq i32 %85, 2
  %87 = load i32, ptr %12, align 4
  %88 = icmp eq i32 %87, 2
  %or.cond = select i1 %86, i1 true, i1 %88
  br i1 %or.cond, label %99, label %89

89:                                               ; preds = %.thread1054
  %90 = icmp eq i32 %85, 3
  %91 = icmp eq i32 %87, 3
  %or.cond3 = select i1 %90, i1 true, i1 %91
  br i1 %or.cond3, label %99, label %92

92:                                               ; preds = %89
  %93 = icmp eq i32 %85, 5
  %94 = icmp eq i32 %87, 5
  %or.cond5 = select i1 %93, i1 true, i1 %94
  br i1 %or.cond5, label %99, label %95

95:                                               ; preds = %92
  %96 = icmp eq i32 %85, 4
  %97 = icmp eq i32 %87, 4
  %or.cond7 = select i1 %96, i1 true, i1 %97
  br i1 %or.cond7, label %98, label %99

98:                                               ; preds = %95
  br label %99

99:                                               ; preds = %92, %89, %.thread1054, %98, %95
  %.01015 = phi double [ 1.000000e-02, %98 ], [ 1.000000e-05, %95 ], [ 1.000000e-03, %.thread1054 ], [ 1.000000e-03, %89 ], [ 1.000000e-02, %92 ]
  %100 = icmp sgt i32 %.01022104410501061, 0
  %101 = icmp sgt i32 %.0102310521059, 0
  %or.cond1102 = and i1 %100, %101
  br i1 %or.cond1102, label %.preheader1064.us.preheader, label %._crit_edge1067

.preheader1064.us.preheader:                      ; preds = %99
  %102 = zext nneg i32 %.0102310521059 to i64
  %wide.trip.count1084 = zext nneg i32 %.01022104410501061 to i64
  br label %.preheader1064.us

.preheader1064.us:                                ; preds = %.preheader1064.us.preheader, %._crit_edge.us
  %indvars.iv1081 = phi i64 [ 0, %.preheader1064.us.preheader ], [ %indvars.iv.next1082, %._crit_edge.us ]
  %103 = mul nuw nsw i64 %indvars.iv1081, %102
  br label %104

104:                                              ; preds = %.preheader1064.us, %104
  %indvars.iv = phi i64 [ 0, %.preheader1064.us ], [ %indvars.iv.next, %104 ]
  %105 = call double @libxsmm_rng_f64() #8
  %106 = add nuw nsw i64 %indvars.iv, %103
  %107 = getelementptr inbounds double, ptr %52, i64 %106
  store double %105, ptr %107, align 8, !tbaa !11
  %108 = call double @libxsmm_rng_f64() #8
  %109 = getelementptr inbounds double, ptr %53, i64 %106
  store double %108, ptr %109, align 8, !tbaa !11
  %110 = call double @libxsmm_rng_f64() #8
  %111 = getelementptr inbounds double, ptr %54, i64 %106
  store double %110, ptr %111, align 8, !tbaa !11
  %112 = call double @libxsmm_rng_f64() #8
  %113 = getelementptr inbounds double, ptr %55, i64 %106
  store double %112, ptr %113, align 8, !tbaa !11
  %114 = call double @libxsmm_rng_f64() #8
  %115 = getelementptr inbounds double, ptr %56, i64 %106
  store double %114, ptr %115, align 8, !tbaa !11
  %116 = getelementptr inbounds double, ptr %57, i64 %106
  store double %114, ptr %116, align 8, !tbaa !11
  %117 = load double, ptr %107, align 8, !tbaa !11
  %118 = fptrunc double %117 to float
  %119 = getelementptr inbounds float, ptr %44, i64 %106
  store float %118, ptr %119, align 4, !tbaa !13
  %120 = load double, ptr %109, align 8, !tbaa !11
  %121 = fptrunc double %120 to float
  %122 = getelementptr inbounds float, ptr %45, i64 %106
  store float %121, ptr %122, align 4, !tbaa !13
  %123 = load double, ptr %111, align 8, !tbaa !11
  %124 = fptrunc double %123 to float
  %125 = getelementptr inbounds float, ptr %46, i64 %106
  store float %124, ptr %125, align 4, !tbaa !13
  %126 = load double, ptr %113, align 8, !tbaa !11
  %127 = fptrunc double %126 to float
  %128 = getelementptr inbounds float, ptr %47, i64 %106
  store float %127, ptr %128, align 4, !tbaa !13
  %129 = fptrunc double %114 to float
  %130 = getelementptr inbounds float, ptr %48, i64 %106
  store float %129, ptr %130, align 4, !tbaa !13
  %131 = getelementptr inbounds float, ptr %49, i64 %106
  store float %129, ptr %131, align 4, !tbaa !13
  %132 = getelementptr inbounds i16, ptr %60, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %119, ptr noundef %132, i64 noundef 1) #8
  %133 = getelementptr inbounds i16, ptr %61, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %122, ptr noundef %133, i64 noundef 1) #8
  %134 = getelementptr inbounds i16, ptr %62, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %125, ptr noundef %134, i64 noundef 1) #8
  %135 = getelementptr inbounds i16, ptr %63, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %128, ptr noundef %135, i64 noundef 1) #8
  %136 = getelementptr inbounds i16, ptr %64, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %130, ptr noundef %136, i64 noundef 1) #8
  %137 = getelementptr inbounds i16, ptr %65, i64 %106
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %131, ptr noundef %137, i64 noundef 1) #8
  %138 = getelementptr inbounds i16, ptr %66, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %119, ptr noundef %138, i64 noundef 1) #8
  %139 = getelementptr inbounds i16, ptr %67, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %122, ptr noundef %139, i64 noundef 1) #8
  %140 = getelementptr inbounds i16, ptr %68, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %125, ptr noundef %140, i64 noundef 1) #8
  %141 = getelementptr inbounds i16, ptr %69, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %128, ptr noundef %141, i64 noundef 1) #8
  %142 = getelementptr inbounds i16, ptr %70, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %130, ptr noundef %142, i64 noundef 1) #8
  %143 = getelementptr inbounds i16, ptr %71, i64 %106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %131, ptr noundef %143, i64 noundef 1) #8
  %144 = getelementptr inbounds i8, ptr %73, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %119, ptr noundef %144, i64 noundef 1) #8
  %145 = getelementptr inbounds i8, ptr %74, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %122, ptr noundef %145, i64 noundef 1) #8
  %146 = getelementptr inbounds i8, ptr %75, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %125, ptr noundef %146, i64 noundef 1) #8
  %147 = getelementptr inbounds i8, ptr %76, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %128, ptr noundef %147, i64 noundef 1) #8
  %148 = getelementptr inbounds i8, ptr %77, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %130, ptr noundef %148, i64 noundef 1) #8
  %149 = getelementptr inbounds i8, ptr %78, i64 %106
  call void @libxsmm_rne_convert_fp32_bf8(ptr noundef nonnull %131, ptr noundef %149, i64 noundef 1) #8
  %150 = getelementptr inbounds i8, ptr %79, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %119, ptr noundef %150, i64 noundef 1) #8
  %151 = getelementptr inbounds i8, ptr %80, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %122, ptr noundef %151, i64 noundef 1) #8
  %152 = getelementptr inbounds i8, ptr %81, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %125, ptr noundef %152, i64 noundef 1) #8
  %153 = getelementptr inbounds i8, ptr %82, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %128, ptr noundef %153, i64 noundef 1) #8
  %154 = getelementptr inbounds i8, ptr %83, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %130, ptr noundef %154, i64 noundef 1) #8
  %155 = getelementptr inbounds i8, ptr %84, i64 %106
  call void @libxsmm_rne_convert_fp32_hf8(ptr noundef nonnull %131, ptr noundef %155, i64 noundef 1) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %102
  br i1 %exitcond.not, label %._crit_edge.us, label %104, !llvm.loop !15

._crit_edge.us:                                   ; preds = %104
  %indvars.iv.next1082 = add nuw nsw i64 %indvars.iv1081, 1
  %exitcond1085.not = icmp eq i64 %indvars.iv.next1082, %wide.trip.count1084
  br i1 %exitcond1085.not, label %._crit_edge1067, label %.preheader1064.us, !llvm.loop !17

._crit_edge1067:                                  ; preds = %._crit_edge.us, %99
  store ptr %44, ptr %5, align 16, !tbaa !18
  %156 = getelementptr inbounds i8, ptr %5, i64 48
  store ptr %45, ptr %156, align 16, !tbaa !18
  %157 = getelementptr inbounds i8, ptr %5, i64 96
  store ptr %46, ptr %157, align 16, !tbaa !18
  %158 = getelementptr inbounds i8, ptr %5, i64 144
  store ptr %47, ptr %158, align 16, !tbaa !18
  store ptr %52, ptr %6, align 16, !tbaa !18
  %159 = getelementptr inbounds i8, ptr %6, i64 48
  store ptr %53, ptr %159, align 16, !tbaa !18
  %160 = getelementptr inbounds i8, ptr %6, i64 96
  store ptr %54, ptr %160, align 16, !tbaa !18
  %161 = getelementptr inbounds i8, ptr %6, i64 144
  store ptr %55, ptr %161, align 16, !tbaa !18
  store ptr %60, ptr %7, align 16, !tbaa !18
  %162 = getelementptr inbounds i8, ptr %7, i64 48
  store ptr %61, ptr %162, align 16, !tbaa !18
  %163 = getelementptr inbounds i8, ptr %7, i64 96
  store ptr %62, ptr %163, align 16, !tbaa !18
  %164 = getelementptr inbounds i8, ptr %7, i64 144
  store ptr %63, ptr %164, align 16, !tbaa !18
  store ptr %66, ptr %8, align 16, !tbaa !18
  %165 = getelementptr inbounds i8, ptr %8, i64 48
  store ptr %67, ptr %165, align 16, !tbaa !18
  %166 = getelementptr inbounds i8, ptr %8, i64 96
  store ptr %68, ptr %166, align 16, !tbaa !18
  %167 = getelementptr inbounds i8, ptr %8, i64 144
  store ptr %69, ptr %167, align 16, !tbaa !18
  store ptr %73, ptr %9, align 16, !tbaa !18
  %168 = getelementptr inbounds i8, ptr %9, i64 48
  store ptr %74, ptr %168, align 16, !tbaa !18
  %169 = getelementptr inbounds i8, ptr %9, i64 96
  store ptr %75, ptr %169, align 16, !tbaa !18
  %170 = getelementptr inbounds i8, ptr %9, i64 144
  store ptr %76, ptr %170, align 16, !tbaa !18
  store ptr %79, ptr %10, align 16, !tbaa !18
  %171 = getelementptr inbounds i8, ptr %10, i64 48
  store ptr %80, ptr %171, align 16, !tbaa !18
  %172 = getelementptr inbounds i8, ptr %10, i64 96
  store ptr %81, ptr %172, align 16, !tbaa !18
  %173 = getelementptr inbounds i8, ptr %10, i64 144
  store ptr %82, ptr %173, align 16, !tbaa !18
  %174 = icmp eq i32 %.010251062, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %._crit_edge1067
  call void @eqn0_f32f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48)
  br label %190

176:                                              ; preds = %._crit_edge1067
  switch i32 %.010251062, label %190 [
    i32 1, label %177
    i32 2, label %178
    i32 3, label %179
    i32 4, label %180
    i32 5, label %181
    i32 6, label %182
    i32 7, label %183
    i32 8, label %184
    i32 9, label %185
    i32 10, label %186
    i32 11, label %187
    i32 12, label %188
    i32 13, label %189
  ]

177:                                              ; preds = %176
  call void @eqn0_bf16bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %64)
  br label %190

178:                                              ; preds = %176
  call void @eqn0_f32bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %64)
  br label %190

179:                                              ; preds = %176
  call void @eqn0_bf16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %48)
  br label %190

180:                                              ; preds = %176
  call void @eqn0_bf8bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %77)
  br label %190

181:                                              ; preds = %176
  call void @eqn0_f32bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %77)
  br label %190

182:                                              ; preds = %176
  call void @eqn0_bf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %48)
  br label %190

183:                                              ; preds = %176
  call void @eqn0_f16f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70)
  br label %190

184:                                              ; preds = %176
  call void @eqn0_f32f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %70)
  br label %190

185:                                              ; preds = %176
  call void @eqn0_f16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %48)
  br label %190

186:                                              ; preds = %176
  call void @eqn0_hf8hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83)
  br label %190

187:                                              ; preds = %176
  call void @eqn0_f32hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %83)
  br label %190

188:                                              ; preds = %176
  call void @eqn0_hf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %48)
  br label %190

189:                                              ; preds = %176
  call void @eqn0_f64f64(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %52, ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56)
  br label %190

190:                                              ; preds = %176, %177, %179, %181, %183, %185, %187, %189, %188, %186, %184, %182, %180, %178, %175
  %191 = call i32 @libxsmm_meqn_create() #8
  %192 = call i64 @libxsmm_create_meqn_op_metadata(i32 noundef %191, i32 noundef -1) #8
  %193 = load i32, ptr %13, align 4, !tbaa !5
  %194 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %192, i32 noundef 2, i32 noundef %193, i32 noundef 0) #8
  %195 = load i32, ptr %13, align 4, !tbaa !5
  %196 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %192, i32 noundef 1, i32 noundef %195, i32 noundef 0) #8
  %197 = load i32, ptr %11, align 4, !tbaa !5
  %198 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, i32 noundef %197) #8
  %199 = extractvalue { i64, i64 } %198, 0
  %200 = extractvalue { i64, i64 } %198, 1
  %201 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %191, i32 noundef 0) #8
  %202 = call i32 @libxsmm_meqn_push_back_arg(i64 %201, i64 %199, i64 %200, i64 %15, i64 %16) #8
  %203 = load i32, ptr %13, align 4, !tbaa !5
  %204 = call i32 @libxsmm_meqn_push_back_unary_op(i64 %192, i32 noundef 14, i32 noundef %203, i32 noundef 0) #8
  %205 = load i32, ptr %11, align 4, !tbaa !5
  %206 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, i32 noundef %205) #8
  %207 = extractvalue { i64, i64 } %206, 0
  %208 = extractvalue { i64, i64 } %206, 1
  %209 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %191, i32 noundef 1) #8
  %210 = call i32 @libxsmm_meqn_push_back_arg(i64 %209, i64 %207, i64 %208, i64 %15, i64 %16) #8
  %211 = load i32, ptr %13, align 4, !tbaa !5
  %212 = call i32 @libxsmm_meqn_push_back_binary_op(i64 %192, i32 noundef 1, i32 noundef %211, i32 noundef 0) #8
  %213 = load i32, ptr %13, align 4, !tbaa !5
  %214 = call i32 @libxsmm_meqn_push_back_unary_op(i64 %192, i32 noundef 3, i32 noundef %213, i32 noundef 0) #8
  %215 = load i32, ptr %11, align 4, !tbaa !5
  %216 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, i32 noundef %215) #8
  %217 = extractvalue { i64, i64 } %216, 0
  %218 = extractvalue { i64, i64 } %216, 1
  %219 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %191, i32 noundef 2) #8
  %220 = call i32 @libxsmm_meqn_push_back_arg(i64 %219, i64 %217, i64 %218, i64 %15, i64 %16) #8
  %221 = load i32, ptr %11, align 4, !tbaa !5
  %222 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, i32 noundef %221) #8
  %223 = extractvalue { i64, i64 } %222, 0
  %224 = extractvalue { i64, i64 } %222, 1
  %225 = call i64 @libxsmm_create_meqn_arg_metadata(i32 noundef %191, i32 noundef 3) #8
  %226 = call i32 @libxsmm_meqn_push_back_arg(i64 %225, i64 %223, i64 %224, i64 %15, i64 %16) #8
  call void @libxsmm_meqn_tree_print(i32 noundef %191) #8
  call void @libxsmm_meqn_rpn_print(i32 noundef %191) #8
  %227 = load i32, ptr %12, align 4, !tbaa !5
  %228 = call { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, i32 noundef %227) #8
  %229 = extractvalue { i64, i64 } %228, 0
  %230 = extractvalue { i64, i64 } %228, 1
  %231 = call ptr @libxsmm_dispatch_meqn(i32 noundef %191, i64 %229, i64 %230) #8
  %232 = call i32 @libxsmm_get_kernel_info(ptr noundef %231, ptr noundef nonnull @info) #8
  %233 = load i32, ptr getelementptr inbounds (i8, ptr @info, i64 16), align 8, !tbaa !20
  store i32 %233, ptr @is_reference_kernel, align 4, !tbaa !5
  %234 = icmp eq ptr %231, null
  br i1 %234, label %235, label %238

235:                                              ; preds = %190
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef nonnull @.str) #10
  call void @exit(i32 noundef -1) #11
  unreachable

238:                                              ; preds = %190
  %239 = load i32, ptr %11, align 4, !tbaa !5
  switch i32 %239, label %246 [
    i32 1, label %.sink.split
    i32 2, label %240
    i32 3, label %241
    i32 4, label %242
    i32 5, label %243
    i32 0, label %244
  ]

240:                                              ; preds = %238
  br label %.sink.split

241:                                              ; preds = %238
  br label %.sink.split

242:                                              ; preds = %238
  br label %.sink.split

243:                                              ; preds = %238
  br label %.sink.split

244:                                              ; preds = %238
  br label %.sink.split

.sink.split:                                      ; preds = %238, %241, %243, %244, %242, %240
  %.sink = phi ptr [ %7, %240 ], [ %9, %242 ], [ %6, %244 ], [ %10, %243 ], [ %8, %241 ], [ %5, %238 ]
  %245 = getelementptr inbounds i8, ptr %3, i64 8
  store ptr %.sink, ptr %245, align 8, !tbaa !23
  br label %246

246:                                              ; preds = %.sink.split, %238
  %247 = load i32, ptr %12, align 4, !tbaa !5
  switch i32 %247, label %254 [
    i32 1, label %.sink.split1104
    i32 2, label %248
    i32 3, label %249
    i32 4, label %250
    i32 5, label %251
    i32 0, label %252
  ]

248:                                              ; preds = %246
  br label %.sink.split1104

249:                                              ; preds = %246
  br label %.sink.split1104

250:                                              ; preds = %246
  br label %.sink.split1104

251:                                              ; preds = %246
  br label %.sink.split1104

252:                                              ; preds = %246
  br label %.sink.split1104

.sink.split1104:                                  ; preds = %246, %249, %251, %252, %250, %248
  %.sink1105 = phi ptr [ %65, %248 ], [ %78, %250 ], [ %57, %252 ], [ %84, %251 ], [ %71, %249 ], [ %49, %246 ]
  %253 = getelementptr inbounds i8, ptr %3, i64 16
  store ptr %.sink1105, ptr %253, align 8, !tbaa !25
  br label %254

254:                                              ; preds = %.sink.split1104, %246
  call void %231(ptr noundef nonnull %3) #8
  %255 = icmp sgt i32 %.0102310521059, 0
  %or.cond1107 = and i1 %100, %255
  br i1 %or.cond1107, label %.preheader.us.preheader, label %._crit_edge1070

.preheader.us.preheader:                          ; preds = %254
  %256 = zext nneg i32 %.0102310521059 to i64
  %wide.trip.count1094 = zext nneg i32 %.01022104410501061 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us1071
  %indvars.iv1091 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next1092, %._crit_edge.us1071 ]
  %257 = mul nuw nsw i64 %indvars.iv1091, %256
  br label %258

258:                                              ; preds = %.preheader.us, %314
  %indvars.iv1086 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next1087, %314 ]
  %259 = load i32, ptr %12, align 4, !tbaa !5
  switch i32 %259, label %314 [
    i32 1, label %307
    i32 0, label %300
    i32 2, label %287
    i32 3, label %278
    i32 4, label %269
    i32 5, label %260
  ]

260:                                              ; preds = %258
  %261 = add nuw nsw i64 %indvars.iv1086, %257
  %262 = getelementptr inbounds i8, ptr %83, i64 %261
  %263 = getelementptr inbounds float, ptr %48, i64 %261
  call void @libxsmm_convert_hf8_f32(ptr noundef %262, ptr noundef %263, i64 noundef 1) #8
  %264 = getelementptr inbounds i8, ptr %84, i64 %261
  %265 = getelementptr inbounds float, ptr %49, i64 %261
  call void @libxsmm_convert_hf8_f32(ptr noundef %264, ptr noundef %265, i64 noundef 1) #8
  %266 = load i8, ptr %262, align 1, !tbaa !26
  %267 = load i8, ptr %264, align 1, !tbaa !26
  %268 = call i32 @unequal_hf8_vals(i8 noundef zeroext %266, i8 noundef zeroext %267)
  br label %314

269:                                              ; preds = %258
  %270 = add nuw nsw i64 %indvars.iv1086, %257
  %271 = getelementptr inbounds i8, ptr %77, i64 %270
  %272 = getelementptr inbounds float, ptr %48, i64 %270
  call void @libxsmm_convert_bf8_f32(ptr noundef %271, ptr noundef %272, i64 noundef 1) #8
  %273 = getelementptr inbounds i8, ptr %78, i64 %270
  %274 = getelementptr inbounds float, ptr %49, i64 %270
  call void @libxsmm_convert_bf8_f32(ptr noundef %273, ptr noundef %274, i64 noundef 1) #8
  %275 = load i8, ptr %271, align 1, !tbaa !26
  %276 = load i8, ptr %273, align 1, !tbaa !26
  %277 = call i32 @unequal_bf8_vals(i8 noundef zeroext %275, i8 noundef zeroext %276)
  br label %314

278:                                              ; preds = %258
  %279 = add nuw nsw i64 %indvars.iv1086, %257
  %280 = getelementptr inbounds i16, ptr %70, i64 %279
  %281 = getelementptr inbounds float, ptr %48, i64 %279
  call void @libxsmm_convert_f16_f32(ptr noundef %280, ptr noundef %281, i64 noundef 1) #8
  %282 = getelementptr inbounds i16, ptr %71, i64 %279
  %283 = getelementptr inbounds float, ptr %49, i64 %279
  call void @libxsmm_convert_f16_f32(ptr noundef %282, ptr noundef %283, i64 noundef 1) #8
  %284 = load i16, ptr %280, align 2, !tbaa !27
  %285 = load i16, ptr %282, align 2, !tbaa !27
  %286 = call i32 @unequal_f16_vals(i16 noundef zeroext %284, i16 noundef zeroext %285)
  br label %314

287:                                              ; preds = %258
  %288 = add nuw nsw i64 %indvars.iv1086, %257
  %289 = getelementptr inbounds i16, ptr %64, i64 %288
  %290 = load i16, ptr %289, align 2, !tbaa !27
  %291 = call float @upconvert_bf16(i16 noundef zeroext %290)
  %292 = getelementptr inbounds float, ptr %48, i64 %288
  store float %291, ptr %292, align 4, !tbaa !13
  %293 = getelementptr inbounds i16, ptr %65, i64 %288
  %294 = load i16, ptr %293, align 2, !tbaa !27
  %295 = call float @upconvert_bf16(i16 noundef zeroext %294)
  %296 = getelementptr inbounds float, ptr %49, i64 %288
  store float %295, ptr %296, align 4, !tbaa !13
  %297 = load i16, ptr %289, align 2, !tbaa !27
  %298 = load i16, ptr %293, align 2, !tbaa !27
  %299 = call i32 @unequal_bf16_vals(i16 noundef zeroext %297, i16 noundef zeroext %298)
  br label %314

300:                                              ; preds = %258
  %301 = add nuw nsw i64 %indvars.iv1086, %257
  %302 = getelementptr inbounds double, ptr %56, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = getelementptr inbounds double, ptr %57, i64 %301
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = call i32 @unequal_fp64_vals(double noundef %303, double noundef %305)
  br label %314

307:                                              ; preds = %258
  %308 = add nuw nsw i64 %indvars.iv1086, %257
  %309 = getelementptr inbounds float, ptr %48, i64 %308
  %310 = load float, ptr %309, align 4, !tbaa !13
  %311 = getelementptr inbounds float, ptr %49, i64 %308
  %312 = load float, ptr %311, align 4, !tbaa !13
  %313 = call i32 @unequal_fp32_vals(float noundef %310, float noundef %312)
  br label %314

314:                                              ; preds = %307, %300, %287, %278, %269, %260, %258
  %indvars.iv.next1087 = add nuw nsw i64 %indvars.iv1086, 1
  %exitcond1090.not = icmp eq i64 %indvars.iv.next1087, %256
  br i1 %exitcond1090.not, label %._crit_edge.us1071, label %258, !llvm.loop !29

._crit_edge.us1071:                               ; preds = %314
  %indvars.iv.next1092 = add nuw nsw i64 %indvars.iv1091, 1
  %exitcond1095.not = icmp eq i64 %indvars.iv.next1092, %wide.trip.count1094
  br i1 %exitcond1095.not, label %._crit_edge1070, label %.preheader.us, !llvm.loop !30

._crit_edge1070:                                  ; preds = %._crit_edge.us1071, %254
  call void @print_dt_info(i32 noundef %.010251062)
  %315 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %316 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  %317 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %318 = icmp eq i32 %.010251062, 13
  %319 = mul nsw i32 %.0102310521059, %.01022104410501061
  br i1 %318, label %320, label %322

320:                                              ; preds = %._crit_edge1070
  %321 = call i32 @libxsmm_matdiff(ptr noundef nonnull %4, i32 noundef 0, i32 noundef %319, i32 noundef 1, ptr noundef %56, ptr noundef %57, ptr noundef null, ptr noundef null) #8
  br label %324

322:                                              ; preds = %._crit_edge1070
  %323 = call i32 @libxsmm_matdiff(ptr noundef nonnull %4, i32 noundef 1, i32 noundef %319, i32 noundef 1, ptr noundef %48, ptr noundef %49, ptr noundef null, ptr noundef null) #8
  br label %324

324:                                              ; preds = %322, %320
  %325 = getelementptr inbounds i8, ptr %4, i64 80
  %326 = load double, ptr %325, align 8, !tbaa !31
  %327 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %326)
  %328 = getelementptr inbounds i8, ptr %4, i64 120
  %329 = load double, ptr %328, align 8, !tbaa !33
  %330 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, double noundef %329)
  %331 = getelementptr inbounds i8, ptr %4, i64 56
  %332 = load double, ptr %331, align 8, !tbaa !34
  %333 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, double noundef %332)
  %334 = getelementptr inbounds i8, ptr %4, i64 64
  %335 = load double, ptr %334, align 8, !tbaa !35
  %336 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, double noundef %335)
  %337 = getelementptr inbounds i8, ptr %4, i64 40
  %338 = load double, ptr %337, align 8, !tbaa !36
  %339 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, double noundef %338)
  %340 = getelementptr inbounds i8, ptr %4, i64 48
  %341 = load double, ptr %340, align 8, !tbaa !37
  %342 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, double noundef %341)
  %343 = getelementptr inbounds i8, ptr %4, i64 32
  %344 = load double, ptr %343, align 8, !tbaa !38
  %345 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, double noundef %344)
  %346 = load double, ptr %343, align 8, !tbaa !38
  %347 = fcmp ule double %346, %.01015
  %348 = icmp sgt i32 %.01024, 0
  br i1 %348, label %349, label %397

349:                                              ; preds = %324
  br i1 %174, label %.lr.ph.split.us.preheader, label %350

350:                                              ; preds = %349
  switch i32 %.010251062, label %363 [
    i32 1, label %351
    i32 2, label %352
    i32 3, label %353
    i32 4, label %354
    i32 5, label %355
    i32 6, label %356
    i32 7, label %357
    i32 8, label %358
    i32 9, label %359
    i32 10, label %360
    i32 11, label %361
    i32 12, label %362
  ]

351:                                              ; preds = %350
  call void @eqn0_bf16bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %64)
  br label %.lr.ph.split.preheader

352:                                              ; preds = %350
  call void @eqn0_f32bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %64)
  br label %.lr.ph.split.preheader

353:                                              ; preds = %350
  call void @eqn0_bf16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %48)
  br label %.lr.ph.split.preheader

354:                                              ; preds = %350
  call void @eqn0_bf8bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %77)
  br label %.lr.ph.split.preheader

355:                                              ; preds = %350
  call void @eqn0_f32bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %77)
  br label %.lr.ph.split.preheader

356:                                              ; preds = %350
  call void @eqn0_bf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %48)
  br label %.lr.ph.split.preheader

357:                                              ; preds = %350
  call void @eqn0_f16f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70)
  br label %.lr.ph.split.preheader

358:                                              ; preds = %350
  call void @eqn0_f32f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %70)
  br label %.lr.ph.split.preheader

359:                                              ; preds = %350
  call void @eqn0_f16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %48)
  br label %.lr.ph.split.preheader

360:                                              ; preds = %350
  call void @eqn0_hf8hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83)
  br label %.lr.ph.split.preheader

361:                                              ; preds = %350
  call void @eqn0_f32hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %83)
  br label %.lr.ph.split.preheader

362:                                              ; preds = %350
  call void @eqn0_hf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %48)
  br label %.lr.ph.split.preheader

363:                                              ; preds = %350
  br i1 %318, label %364, label %.lr.ph.split.preheader

364:                                              ; preds = %363
  call void @eqn0_f64f64(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %52, ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56)
  br label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %352, %354, %356, %358, %360, %362, %364, %363, %361, %359, %357, %355, %353, %351
  %365 = call i64 @libxsmm_timer_tick() #8
  br label %.lr.ph.split

.lr.ph.split.us.preheader:                        ; preds = %349
  call void @eqn0_f32f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48)
  %366 = call i64 @libxsmm_timer_tick() #8
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %.010191072.us = phi i32 [ %367, %.lr.ph.split.us ], [ 0, %.lr.ph.split.us.preheader ]
  call void @eqn0_f32f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48)
  %367 = add nuw nsw i32 %.010191072.us, 1
  %exitcond1098.not = icmp eq i32 %367, %.01024
  br i1 %exitcond1098.not, label %.lr.ph1075.preheader, label %.lr.ph.split.us, !llvm.loop !39

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader, %382
  %.010191072 = phi i32 [ %383, %382 ], [ 0, %.lr.ph.split.preheader ]
  switch i32 %.010251062, label %380 [
    i32 1, label %368
    i32 2, label %369
    i32 3, label %370
    i32 4, label %371
    i32 5, label %372
    i32 6, label %373
    i32 7, label %374
    i32 8, label %375
    i32 9, label %376
    i32 10, label %377
    i32 11, label %378
    i32 12, label %379
  ]

368:                                              ; preds = %.lr.ph.split
  call void @eqn0_bf16bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %64)
  br label %382

369:                                              ; preds = %.lr.ph.split
  call void @eqn0_f32bf16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %64)
  br label %382

370:                                              ; preds = %.lr.ph.split
  call void @eqn0_bf16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %60, ptr noundef %61, ptr noundef %62, ptr noundef %63, ptr noundef %48)
  br label %382

371:                                              ; preds = %.lr.ph.split
  call void @eqn0_bf8bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %77)
  br label %382

372:                                              ; preds = %.lr.ph.split
  call void @eqn0_f32bf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %77)
  br label %382

373:                                              ; preds = %.lr.ph.split
  call void @eqn0_bf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %73, ptr noundef %74, ptr noundef %75, ptr noundef %76, ptr noundef %48)
  br label %382

374:                                              ; preds = %.lr.ph.split
  call void @eqn0_f16f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70)
  br label %382

375:                                              ; preds = %.lr.ph.split
  call void @eqn0_f32f16(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %70)
  br label %382

376:                                              ; preds = %.lr.ph.split
  call void @eqn0_f16f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %48)
  br label %382

377:                                              ; preds = %.lr.ph.split
  call void @eqn0_hf8hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %83)
  br label %382

378:                                              ; preds = %.lr.ph.split
  call void @eqn0_f32hf8(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %83)
  br label %382

379:                                              ; preds = %.lr.ph.split
  call void @eqn0_hf8f32(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, ptr noundef %48)
  br label %382

380:                                              ; preds = %.lr.ph.split
  br i1 %318, label %381, label %382

381:                                              ; preds = %380
  call void @eqn0_f64f64(i32 noundef %.010211039104310511060, i32 noundef %.01022104410501061, i32 noundef %.0102310521059, ptr noundef %52, ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56)
  br label %382

382:                                              ; preds = %369, %371, %373, %375, %377, %379, %381, %380, %378, %376, %374, %372, %370, %368
  %383 = add nuw nsw i32 %.010191072, 1
  %exitcond1096.not = icmp eq i32 %383, %.01024
  br i1 %exitcond1096.not, label %.lr.ph1075.preheader, label %.lr.ph.split, !llvm.loop !39

.lr.ph1075.preheader:                             ; preds = %382, %.lr.ph.split.us
  %384 = phi i64 [ %366, %.lr.ph.split.us ], [ %365, %382 ]
  %385 = call i64 @libxsmm_timer_tick() #8
  %386 = call double @libxsmm_timer_duration(i64 noundef %384, i64 noundef %385) #8
  %387 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, double noundef %386)
  call void %231(ptr noundef nonnull %3) #8
  %388 = call i64 @libxsmm_timer_tick() #8
  %smax1099 = call i32 @llvm.smax.i32(i32 %.01024, i32 1)
  br label %.lr.ph1075

.lr.ph1075:                                       ; preds = %.lr.ph1075.preheader, %.lr.ph1075
  %.110201073 = phi i32 [ %389, %.lr.ph1075 ], [ 0, %.lr.ph1075.preheader ]
  call void %231(ptr noundef nonnull %3) #8
  %389 = add nuw nsw i32 %.110201073, 1
  %exitcond1100.not = icmp eq i32 %389, %smax1099
  br i1 %exitcond1100.not, label %._crit_edge1076, label %.lr.ph1075, !llvm.loop !40

._crit_edge1076:                                  ; preds = %.lr.ph1075
  %390 = call i64 @libxsmm_timer_tick() #8
  %391 = call double @libxsmm_timer_duration(i64 noundef %388, i64 noundef %390) #8
  %392 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, double noundef %391)
  %393 = fcmp ogt double %391, 0.000000e+00
  br i1 %393, label %394, label %397

394:                                              ; preds = %._crit_edge1076
  %395 = fdiv double %386, %391
  %396 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, double noundef %395)
  br label %397

397:                                              ; preds = %._crit_edge1076, %394, %324
  call void @libxsmm_free(ptr noundef %44) #8
  call void @libxsmm_free(ptr noundef %45) #8
  call void @libxsmm_free(ptr noundef %46) #8
  call void @libxsmm_free(ptr noundef %47) #8
  call void @libxsmm_free(ptr noundef %48) #8
  call void @libxsmm_free(ptr noundef %49) #8
  call void @libxsmm_free(ptr noundef %60) #8
  call void @libxsmm_free(ptr noundef %61) #8
  call void @libxsmm_free(ptr noundef %62) #8
  call void @libxsmm_free(ptr noundef %63) #8
  call void @libxsmm_free(ptr noundef %64) #8
  call void @libxsmm_free(ptr noundef %65) #8
  call void @libxsmm_free(ptr noundef %66) #8
  call void @libxsmm_free(ptr noundef %67) #8
  call void @libxsmm_free(ptr noundef %68) #8
  call void @libxsmm_free(ptr noundef %69) #8
  call void @libxsmm_free(ptr noundef %70) #8
  call void @libxsmm_free(ptr noundef %71) #8
  call void @libxsmm_free(ptr noundef %73) #8
  call void @libxsmm_free(ptr noundef %74) #8
  call void @libxsmm_free(ptr noundef %75) #8
  call void @libxsmm_free(ptr noundef %76) #8
  call void @libxsmm_free(ptr noundef %77) #8
  call void @libxsmm_free(ptr noundef %78) #8
  call void @libxsmm_free(ptr noundef %79) #8
  call void @libxsmm_free(ptr noundef %80) #8
  call void @libxsmm_free(ptr noundef %81) #8
  call void @libxsmm_free(ptr noundef %82) #8
  call void @libxsmm_free(ptr noundef %83) #8
  call void @libxsmm_free(ptr noundef %84) #8
  br i1 %347, label %398, label %401

398:                                              ; preds = %397
  %399 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %400 = call i32 @libxsmm_return_success_code(i32 noundef %399)
  br label %401

401:                                              ; preds = %397, %398
  %402 = phi i32 [ %400, %398 ], [ 1, %397 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #8
  ret i32 %402
}

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

declare { i64, i64 } @libxsmm_create_matrix_arg_attributes(i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_init() local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #3

declare noalias ptr @libxsmm_aligned_malloc(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @set_in_out_compute_dt(i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @libxsmm_matdiff_clear(ptr noundef) local_unnamed_addr #2

declare double @libxsmm_rng_f64() local_unnamed_addr #2

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @libxsmm_rne_convert_fp32_f16(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @libxsmm_rne_convert_fp32_bf8(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @libxsmm_rne_convert_fp32_hf8(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf16bf16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32bf16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf16f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf8bf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32bf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_bf8f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f16f16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32f16(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f16f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_hf8hf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f32hf8(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_hf8f32(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @eqn0_f64f64(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @libxsmm_meqn_create() local_unnamed_addr #2

declare i64 @libxsmm_create_meqn_op_metadata(i32 noundef, i32 noundef) local_unnamed_addr #2

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

declare i32 @libxsmm_meqn_push_back_binary_op(i64, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare { i64, i64 } @libxsmm_create_meqn_arg_shape(i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i64 @libxsmm_create_meqn_arg_metadata(i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @libxsmm_meqn_push_back_arg(i64, i64, i64, i64, i64) local_unnamed_addr #2

declare i32 @libxsmm_meqn_push_back_unary_op(i64, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_meqn_tree_print(i32 noundef) local_unnamed_addr #2

declare void @libxsmm_meqn_rpn_print(i32 noundef) local_unnamed_addr #2

declare ptr @libxsmm_dispatch_meqn(i32 noundef, i64, i64) local_unnamed_addr #2

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

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #5

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_fp32_vals(float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_fp64_vals(double noundef, double noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @upconvert_bf16(i16 noundef zeroext) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_bf16_vals(i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #4

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_f16_vals(i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #4

declare void @libxsmm_convert_bf8_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_bf8_vals(i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #4

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @unequal_hf8_vals(i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @print_dt_info(i32 noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #5

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

declare i64 @libxsmm_timer_tick() local_unnamed_addr #2

declare double @libxsmm_timer_duration(i64 noundef, i64 noundef) local_unnamed_addr #2

declare void @libxsmm_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #7

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 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint 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 #5 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { cold nounwind }
attributes #11 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !10, i64 0}
!19 = !{!"libxsmm_matrix_arg", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!20 = !{!21, !6, i64 16}
!21 = !{!"libxsmm_kernel_info", !6, i64 0, !6, i64 4, !22, i64 8, !6, i64 16}
!22 = !{!"long", !7, i64 0}
!23 = !{!24, !10, i64 8}
!24 = !{!"libxsmm_meqn_param", !10, i64 0, !10, i64 8, !19, i64 16}
!25 = !{!24, !10, i64 16}
!26 = !{!7, !7, i64 0}
!27 = !{!28, !28, i64 0}
!28 = !{!"short", !7, i64 0}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = !{!32, !12, i64 80}
!32 = !{!"libxsmm_matdiff_info", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188}
!33 = !{!32, !12, i64 120}
!34 = !{!32, !12, i64 56}
!35 = !{!32, !12, i64 64}
!36 = !{!32, !12, i64 40}
!37 = !{!32, !12, i64 48}
!38 = !{!32, !12, i64 32}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}


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