; LLVM IR from libxsmm/libxsmm :: tests (matdiff)

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

@__const.main.a = external hidden unnamed_addr constant [9 x double], align 16
@__const.main.b = external hidden unnamed_addr constant [9 x double], align 16
@__const.main.x = external hidden unnamed_addr constant [3 x double], align 16
@__const.main.y = external hidden unnamed_addr constant [3 x double], align 16
@__const.main.t = external hidden unnamed_addr constant [3 x double], align 16

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca [6 x %struct.libxsmm_matdiff_info], align 16
  %4 = alloca %struct.libxsmm_matdiff_info, align 8
  %5 = alloca [9 x double], align 16
  %6 = alloca [9 x double], align 16
  %7 = alloca [3 x double], align 16
  %8 = alloca [3 x double], align 16
  %9 = alloca [3 x double], align 16
  %10 = alloca [3 x double], align 16
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #5
  store i32 0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1152, ptr %3) #5
  call void @llvm.lifetime.start.p0(i64 192, ptr %4) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr %5) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %5, ptr align 16 @__const.main.a, i64 72, i1 false)
  call void @llvm.lifetime.start.p0(i64 72, ptr %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %6, ptr align 16 @__const.main.b, i64 72, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %7, ptr align 16 @__const.main.x, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const.main.y, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #5
  call void @llvm.memset.p0.i64(ptr align 16 %9, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %10, ptr align 16 @__const.main.t, i64 24, i1 false)
  call void @libxsmm_matdiff_clear(ptr noundef %4)
  %18 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %19 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %18, i64 0
  %20 = getelementptr inbounds [9 x double], ptr %5, i64 0, i64 0
  %21 = getelementptr inbounds [9 x double], ptr %6, i64 0, i64 0
  %22 = call i32 @libxsmm_matdiff(ptr noundef %19, i32 noundef 0, i32 noundef 3, i32 noundef 3, ptr noundef %20, ptr noundef %21, ptr noundef null, ptr noundef null)
  store i32 %22, ptr %2, align 4, !tbaa !5
  %23 = load i32, ptr %2, align 4, !tbaa !5
  %24 = icmp eq i32 0, %23
  br i1 %24, label %25, label %343

25:                                               ; preds = %0
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %26 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %27 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %26, i64 0
  %28 = call double @libxsmm_matdiff_epsilon(ptr noundef %27)
  store double %28, ptr %11, align 8, !tbaa !9
  %29 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %30 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %29, i64 0
  call void @libxsmm_matdiff_reduce(ptr noundef %4, ptr noundef %30)
  %31 = load double, ptr %11, align 8, !tbaa !9
  %32 = fsub double %31, 0x3FBCFF5ABE927766
  %33 = fcmp ole double 0.000000e+00, %32
  br i1 %33, label %34, label %37

34:                                               ; preds = %25
  %35 = load double, ptr %11, align 8, !tbaa !9
  %36 = fsub double %35, 0x3FBCFF5ABE927766
  br label %41

37:                                               ; preds = %25
  %38 = load double, ptr %11, align 8, !tbaa !9
  %39 = fsub double %38, 0x3FBCFF5ABE927766
  %40 = fneg double %39
  br label %41

41:                                               ; preds = %37, %34
  %42 = phi double [ %36, %34 ], [ %40, %37 ]
  %43 = fcmp olt double 0x3E7AD7F29ABCAF48, %42
  br i1 %43, label %44, label %45

44:                                               ; preds = %41
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %45

45:                                               ; preds = %44, %41
  %46 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %47 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %46, i32 0, i32 0
  %48 = load double, ptr %47, align 16, !tbaa !11
  %49 = fsub double %48, 1.830000e+00
  %50 = fcmp ole double 0.000000e+00, %49
  br i1 %50, label %51, label %56

51:                                               ; preds = %45
  %52 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %53 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %52, i32 0, i32 0
  %54 = load double, ptr %53, align 16, !tbaa !11
  %55 = fsub double %54, 1.830000e+00
  br label %62

56:                                               ; preds = %45
  %57 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %58 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %57, i32 0, i32 0
  %59 = load double, ptr %58, align 16, !tbaa !11
  %60 = fsub double %59, 1.830000e+00
  %61 = fneg double %60
  br label %62

62:                                               ; preds = %56, %51
  %63 = phi double [ %55, %51 ], [ %61, %56 ]
  %64 = fcmp olt double 3.000000e-07, %63
  br i1 %64, label %65, label %66

65:                                               ; preds = %62
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %66

66:                                               ; preds = %65, %62
  %67 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %68 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %67, i32 0, i32 1
  %69 = load double, ptr %68, align 8, !tbaa !13
  %70 = fsub double %69, 0x3FB8A826FB168C33
  %71 = fcmp ole double 0.000000e+00, %70
  br i1 %71, label %72, label %77

72:                                               ; preds = %66
  %73 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %74 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %73, i32 0, i32 1
  %75 = load double, ptr %74, align 8, !tbaa !13
  %76 = fsub double %75, 0x3FB8A826FB168C33
  br label %83

77:                                               ; preds = %66
  %78 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %79 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %78, i32 0, i32 1
  %80 = load double, ptr %79, align 8, !tbaa !13
  %81 = fsub double %80, 0x3FB8A826FB168C33
  %82 = fneg double %81
  br label %83

83:                                               ; preds = %77, %72
  %84 = phi double [ %76, %72 ], [ %82, %77 ]
  %85 = fcmp olt double 0x3E7AD7F29ABCAF48, %84
  br i1 %85, label %86, label %87

86:                                               ; preds = %83
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %87

87:                                               ; preds = %86, %83
  %88 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %89 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %88, i32 0, i32 2
  %90 = load double, ptr %89, align 16, !tbaa !14
  %91 = fsub double %90, 2.440000e+00
  %92 = fcmp ole double 0.000000e+00, %91
  br i1 %92, label %93, label %98

93:                                               ; preds = %87
  %94 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %95 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %94, i32 0, i32 2
  %96 = load double, ptr %95, align 16, !tbaa !14
  %97 = fsub double %96, 2.440000e+00
  br label %104

98:                                               ; preds = %87
  %99 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %100 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %99, i32 0, i32 2
  %101 = load double, ptr %100, align 16, !tbaa !14
  %102 = fsub double %101, 2.440000e+00
  %103 = fneg double %102
  br label %104

104:                                              ; preds = %98, %93
  %105 = phi double [ %97, %93 ], [ %103, %98 ]
  %106 = fcmp olt double 2.000000e-07, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %104
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %108

108:                                              ; preds = %107, %104
  %109 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %110 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %109, i32 0, i32 3
  %111 = load double, ptr %110, align 8, !tbaa !15
  %112 = fsub double %111, 9.760000e-02
  %113 = fcmp ole double 0.000000e+00, %112
  br i1 %113, label %114, label %119

114:                                              ; preds = %108
  %115 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %116 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %115, i32 0, i32 3
  %117 = load double, ptr %116, align 8, !tbaa !15
  %118 = fsub double %117, 9.760000e-02
  br label %125

119:                                              ; preds = %108
  %120 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %121 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %120, i32 0, i32 3
  %122 = load double, ptr %121, align 8, !tbaa !15
  %123 = fsub double %122, 9.760000e-02
  %124 = fneg double %123
  br label %125

125:                                              ; preds = %119, %114
  %126 = phi double [ %118, %114 ], [ %124, %119 ]
  %127 = fcmp olt double 0x3E7AD7F29ABCAF48, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %125
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %129

129:                                              ; preds = %128, %125
  %130 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %131 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %130, i32 0, i32 4
  %132 = load double, ptr %131, align 16, !tbaa !16
  %133 = fsub double %132, 0x3FBB84D18B786EA7
  %134 = fcmp ole double 0.000000e+00, %133
  br i1 %134, label %135, label %140

135:                                              ; preds = %129
  %136 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %137 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %136, i32 0, i32 4
  %138 = load double, ptr %137, align 16, !tbaa !16
  %139 = fsub double %138, 0x3FBB84D18B786EA7
  br label %146

140:                                              ; preds = %129
  %141 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %142 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %141, i32 0, i32 4
  %143 = load double, ptr %142, align 16, !tbaa !16
  %144 = fsub double %143, 0x3FBB84D18B786EA7
  %145 = fneg double %144
  br label %146

146:                                              ; preds = %140, %135
  %147 = phi double [ %139, %135 ], [ %145, %140 ]
  %148 = fcmp olt double 0x3E7AD7F29ABCAF48, %147
  br i1 %148, label %149, label %150

149:                                              ; preds = %146
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %150

150:                                              ; preds = %149, %146
  %151 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %152 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %151, i32 0, i32 7
  %153 = load double, ptr %152, align 8, !tbaa !17
  %154 = fsub double %153, 0x3FFDFCE9E5E24788
  %155 = fcmp ole double 0.000000e+00, %154
  br i1 %155, label %156, label %161

156:                                              ; preds = %150
  %157 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %158 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %157, i32 0, i32 7
  %159 = load double, ptr %158, align 8, !tbaa !17
  %160 = fsub double %159, 0x3FFDFCE9E5E24788
  br label %167

161:                                              ; preds = %150
  %162 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %163 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %162, i32 0, i32 7
  %164 = load double, ptr %163, align 8, !tbaa !17
  %165 = fsub double %164, 0x3FFDFCE9E5E24788
  %166 = fneg double %165
  br label %167

167:                                              ; preds = %161, %156
  %168 = phi double [ %160, %156 ], [ %166, %161 ]
  %169 = fcmp olt double 2.000000e-07, %168
  br i1 %169, label %170, label %171

170:                                              ; preds = %167
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %171

171:                                              ; preds = %170, %167
  %172 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %173 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %172, i32 0, i32 8
  %174 = load double, ptr %173, align 16, !tbaa !18
  %175 = fsub double %174, 0x3FE5862E4D1A6506
  %176 = fcmp ole double 0.000000e+00, %175
  br i1 %176, label %177, label %182

177:                                              ; preds = %171
  %178 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %179 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %178, i32 0, i32 8
  %180 = load double, ptr %179, align 16, !tbaa !18
  %181 = fsub double %180, 0x3FE5862E4D1A6506
  br label %188

182:                                              ; preds = %171
  %183 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %184 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %183, i32 0, i32 8
  %185 = load double, ptr %184, align 16, !tbaa !18
  %186 = fsub double %185, 0x3FE5862E4D1A6506
  %187 = fneg double %186
  br label %188

188:                                              ; preds = %182, %177
  %189 = phi double [ %181, %177 ], [ %187, %182 ]
  %190 = fcmp olt double 0x3E7AD7F29ABCAF48, %189
  br i1 %190, label %191, label %192

191:                                              ; preds = %188
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %192

192:                                              ; preds = %191, %188
  %193 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %194 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %193, i32 0, i32 10
  %195 = load double, ptr %194, align 16, !tbaa !19
  %196 = fsub double %195, 4.600000e+01
  %197 = fcmp ole double 0.000000e+00, %196
  br i1 %197, label %198, label %203

198:                                              ; preds = %192
  %199 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %200 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %199, i32 0, i32 10
  %201 = load double, ptr %200, align 16, !tbaa !19
  %202 = fsub double %201, 4.600000e+01
  br label %209

203:                                              ; preds = %192
  %204 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %205 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %204, i32 0, i32 10
  %206 = load double, ptr %205, align 16, !tbaa !19
  %207 = fsub double %206, 4.600000e+01
  %208 = fneg double %207
  br label %209

209:                                              ; preds = %203, %198
  %210 = phi double [ %202, %198 ], [ %208, %203 ]
  %211 = fcmp olt double 0x3E7AD7F29ABCAF48, %210
  br i1 %211, label %212, label %213

212:                                              ; preds = %209
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %213

213:                                              ; preds = %212, %209
  %214 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %215 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %214, i32 0, i32 15
  %216 = load double, ptr %215, align 8, !tbaa !20
  %217 = fsub double %216, 4.566000e+01
  %218 = fcmp ole double 0.000000e+00, %217
  br i1 %218, label %219, label %224

219:                                              ; preds = %213
  %220 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %221 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %220, i32 0, i32 15
  %222 = load double, ptr %221, align 8, !tbaa !20
  %223 = fsub double %222, 4.566000e+01
  br label %230

224:                                              ; preds = %213
  %225 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %226 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %225, i32 0, i32 15
  %227 = load double, ptr %226, align 8, !tbaa !20
  %228 = fsub double %227, 4.566000e+01
  %229 = fneg double %228
  br label %230

230:                                              ; preds = %224, %219
  %231 = phi double [ %223, %219 ], [ %229, %224 ]
  %232 = fcmp olt double 0x3EA77CF44765195F, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %233, %230
  %235 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %236 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %235, i32 0, i32 5
  %237 = load double, ptr %236, align 8, !tbaa !21
  %238 = fsub double %237, 9.300000e-01
  %239 = fcmp ole double 0.000000e+00, %238
  br i1 %239, label %240, label %245

240:                                              ; preds = %234
  %241 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %242 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %241, i32 0, i32 5
  %243 = load double, ptr %242, align 8, !tbaa !21
  %244 = fsub double %243, 9.300000e-01
  br label %251

245:                                              ; preds = %234
  %246 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %247 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %246, i32 0, i32 5
  %248 = load double, ptr %247, align 8, !tbaa !21
  %249 = fsub double %248, 9.300000e-01
  %250 = fneg double %249
  br label %251

251:                                              ; preds = %245, %240
  %252 = phi double [ %244, %240 ], [ %250, %245 ]
  %253 = fcmp olt double 4.000000e-07, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %255

255:                                              ; preds = %254, %251
  %256 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %257 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %256, i32 0, i32 6
  %258 = load double, ptr %257, align 16, !tbaa !22
  %259 = fsub double %258, 5.600000e-01
  %260 = fcmp ole double 0.000000e+00, %259
  br i1 %260, label %261, label %266

261:                                              ; preds = %255
  %262 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %263 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %262, i32 0, i32 6
  %264 = load double, ptr %263, align 16, !tbaa !22
  %265 = fsub double %264, 5.600000e-01
  br label %272

266:                                              ; preds = %255
  %267 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %268 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %267, i32 0, i32 6
  %269 = load double, ptr %268, align 16, !tbaa !22
  %270 = fsub double %269, 5.600000e-01
  %271 = fneg double %270
  br label %272

272:                                              ; preds = %266, %261
  %273 = phi double [ %265, %261 ], [ %271, %266 ]
  %274 = fcmp olt double 0x3E7AD7F29ABCAF48, %273
  br i1 %274, label %275, label %276

275:                                              ; preds = %272
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %276

276:                                              ; preds = %275, %272
  %277 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %278 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %277, i32 0, i32 9
  %279 = load double, ptr %278, align 8, !tbaa !23
  %280 = fsub double %279, 0x3FEE5E456564DEA7
  %281 = fcmp ole double 0.000000e+00, %280
  br i1 %281, label %282, label %287

282:                                              ; preds = %276
  %283 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %284 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %283, i32 0, i32 9
  %285 = load double, ptr %284, align 8, !tbaa !23
  %286 = fsub double %285, 0x3FEE5E456564DEA7
  br label %293

287:                                              ; preds = %276
  %288 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %289 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %288, i32 0, i32 9
  %290 = load double, ptr %289, align 8, !tbaa !23
  %291 = fsub double %290, 0x3FEE5E456564DEA7
  %292 = fneg double %291
  br label %293

293:                                              ; preds = %287, %282
  %294 = phi double [ %286, %282 ], [ %292, %287 ]
  %295 = fcmp olt double 0x3E7AD7F29ABCAF48, %294
  br i1 %295, label %296, label %297

296:                                              ; preds = %293
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %297

297:                                              ; preds = %296, %293
  %298 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %299 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %298, i32 0, i32 22
  %300 = load i32, ptr %299, align 16, !tbaa !24
  %301 = icmp ne i32 2, %300
  br i1 %301, label %307, label %302

302:                                              ; preds = %297
  %303 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %304 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %303, i32 0, i32 23
  %305 = load i32, ptr %304, align 4, !tbaa !25
  %306 = icmp ne i32 2, %305
  br i1 %306, label %307, label %308

307:                                              ; preds = %302, %297
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %308

308:                                              ; preds = %307, %302
  %309 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %310 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %309, i32 0, i32 22
  %311 = load i32, ptr %310, align 16, !tbaa !24
  %312 = mul nsw i32 3, %311
  %313 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %314 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %313, i32 0, i32 23
  %315 = load i32, ptr %314, align 4, !tbaa !25
  %316 = add nsw i32 %312, %315
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [9 x double], ptr %5, i64 0, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %321 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %320, i32 0, i32 20
  %322 = load double, ptr %321, align 16, !tbaa !26
  %323 = fcmp une double %319, %322
  br i1 %323, label %324, label %325

324:                                              ; preds = %308
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %325

325:                                              ; preds = %324, %308
  %326 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %327 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %326, i32 0, i32 22
  %328 = load i32, ptr %327, align 16, !tbaa !24
  %329 = mul nsw i32 3, %328
  %330 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %331 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %330, i32 0, i32 23
  %332 = load i32, ptr %331, align 4, !tbaa !25
  %333 = add nsw i32 %329, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [9 x double], ptr %6, i64 0, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %338 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %337, i32 0, i32 21
  %339 = load double, ptr %338, align 8, !tbaa !27
  %340 = fcmp une double %336, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %325
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %342

342:                                              ; preds = %341, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  br label %343

343:                                              ; preds = %342, %0
  %344 = load i32, ptr %2, align 4, !tbaa !5
  %345 = icmp eq i32 0, %344
  br i1 %345, label %346, label %352

346:                                              ; preds = %343
  %347 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %348 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %347, i64 1
  %349 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 0
  %350 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 0
  %351 = call i32 @libxsmm_matdiff(ptr noundef %348, i32 noundef 0, i32 noundef 1, i32 noundef 3, ptr noundef %349, ptr noundef %350, ptr noundef null, ptr noundef null)
  store i32 %351, ptr %2, align 4, !tbaa !5
  br label %352

352:                                              ; preds = %346, %343
  %353 = load i32, ptr %2, align 4, !tbaa !5
  %354 = icmp eq i32 0, %353
  br i1 %354, label %355, label %673

355:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %356 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %357 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %356, i64 1
  %358 = call double @libxsmm_matdiff_epsilon(ptr noundef %357)
  store double %358, ptr %12, align 8, !tbaa !9
  %359 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %360 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %359, i64 1
  call void @libxsmm_matdiff_reduce(ptr noundef %4, ptr noundef %360)
  %361 = load double, ptr %12, align 8, !tbaa !9
  %362 = fsub double %361, 2.231030e-02
  %363 = fcmp ole double 0.000000e+00, %362
  br i1 %363, label %364, label %367

364:                                              ; preds = %355
  %365 = load double, ptr %12, align 8, !tbaa !9
  %366 = fsub double %365, 2.231030e-02
  br label %371

367:                                              ; preds = %355
  %368 = load double, ptr %12, align 8, !tbaa !9
  %369 = fsub double %368, 2.231030e-02
  %370 = fneg double %369
  br label %371

371:                                              ; preds = %367, %364
  %372 = phi double [ %366, %364 ], [ %370, %367 ]
  %373 = fcmp olt double 0x3E7AD7F29ABCAF48, %372
  br i1 %373, label %374, label %375

374:                                              ; preds = %371
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %375

375:                                              ; preds = %374, %371
  %376 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %377 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %376, i32 0, i32 0
  %378 = load double, ptr %377, align 16, !tbaa !11
  %379 = fsub double %378, 3.100000e+00
  %380 = fcmp ole double 0.000000e+00, %379
  br i1 %380, label %381, label %386

381:                                              ; preds = %375
  %382 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %383 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %382, i32 0, i32 0
  %384 = load double, ptr %383, align 16, !tbaa !11
  %385 = fsub double %384, 3.100000e+00
  br label %392

386:                                              ; preds = %375
  %387 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %388 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %387, i32 0, i32 0
  %389 = load double, ptr %388, align 16, !tbaa !11
  %390 = fsub double %389, 3.100000e+00
  %391 = fneg double %390
  br label %392

392:                                              ; preds = %386, %381
  %393 = phi double [ %385, %381 ], [ %391, %386 ]
  %394 = fcmp olt double 0x3E7AD7F29ABCAF48, %393
  br i1 %394, label %395, label %396

395:                                              ; preds = %392
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %396

396:                                              ; preds = %395, %392
  %397 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %398 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %397, i32 0, i32 1
  %399 = load double, ptr %398, align 8, !tbaa !13
  %400 = fsub double %399, 2.818180e-02
  %401 = fcmp ole double 0.000000e+00, %400
  br i1 %401, label %402, label %407

402:                                              ; preds = %396
  %403 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %404 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %403, i32 0, i32 1
  %405 = load double, ptr %404, align 8, !tbaa !13
  %406 = fsub double %405, 2.818180e-02
  br label %413

407:                                              ; preds = %396
  %408 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %409 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %408, i32 0, i32 1
  %410 = load double, ptr %409, align 8, !tbaa !13
  %411 = fsub double %410, 2.818180e-02
  %412 = fneg double %411
  br label %413

413:                                              ; preds = %407, %402
  %414 = phi double [ %406, %402 ], [ %412, %407 ]
  %415 = fcmp olt double 0x3E7AD7F29ABCAF48, %414
  br i1 %415, label %416, label %417

416:                                              ; preds = %413
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %417

417:                                              ; preds = %416, %413
  %418 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %419 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %418, i32 0, i32 2
  %420 = load double, ptr %419, align 16, !tbaa !14
  %421 = fsub double %420, 2.000000e+00
  %422 = fcmp ole double 0.000000e+00, %421
  br i1 %422, label %423, label %428

423:                                              ; preds = %417
  %424 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %425 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %424, i32 0, i32 2
  %426 = load double, ptr %425, align 16, !tbaa !14
  %427 = fsub double %426, 2.000000e+00
  br label %434

428:                                              ; preds = %417
  %429 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %430 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %429, i32 0, i32 2
  %431 = load double, ptr %430, align 16, !tbaa !14
  %432 = fsub double %431, 2.000000e+00
  %433 = fneg double %432
  br label %434

434:                                              ; preds = %428, %423
  %435 = phi double [ %427, %423 ], [ %433, %428 ]
  %436 = fcmp olt double 0x3E7AD7F29ABCAF48, %435
  br i1 %436, label %437, label %438

437:                                              ; preds = %434
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %438

438:                                              ; preds = %437, %434
  %439 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %440 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %439, i32 0, i32 3
  %441 = load double, ptr %440, align 8, !tbaa !15
  %442 = fsub double %441, 2.000000e-02
  %443 = fcmp ole double 0.000000e+00, %442
  br i1 %443, label %444, label %449

444:                                              ; preds = %438
  %445 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %446 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %445, i32 0, i32 3
  %447 = load double, ptr %446, align 8, !tbaa !15
  %448 = fsub double %447, 2.000000e-02
  br label %455

449:                                              ; preds = %438
  %450 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %451 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %450, i32 0, i32 3
  %452 = load double, ptr %451, align 8, !tbaa !15
  %453 = fsub double %452, 2.000000e-02
  %454 = fneg double %453
  br label %455

455:                                              ; preds = %449, %444
  %456 = phi double [ %448, %444 ], [ %454, %449 ]
  %457 = fcmp olt double 0x3E7AD7F29ABCAF48, %456
  br i1 %457, label %458, label %459

458:                                              ; preds = %455
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %459

459:                                              ; preds = %458, %455
  %460 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %461 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %460, i32 0, i32 4
  %462 = load double, ptr %461, align 16, !tbaa !16
  %463 = fsub double %462, 2.229180e-02
  %464 = fcmp ole double 0.000000e+00, %463
  br i1 %464, label %465, label %470

465:                                              ; preds = %459
  %466 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %467 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %466, i32 0, i32 4
  %468 = load double, ptr %467, align 16, !tbaa !16
  %469 = fsub double %468, 2.229180e-02
  br label %476

470:                                              ; preds = %459
  %471 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %472 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %471, i32 0, i32 4
  %473 = load double, ptr %472, align 16, !tbaa !16
  %474 = fsub double %473, 2.229180e-02
  %475 = fneg double %474
  br label %476

476:                                              ; preds = %470, %465
  %477 = phi double [ %469, %465 ], [ %475, %470 ]
  %478 = fcmp olt double 0x3E7AD7F29ABCAF48, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %476
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %480

480:                                              ; preds = %479, %476
  %481 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %482 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %481, i32 0, i32 7
  %483 = load double, ptr %482, align 8, !tbaa !17
  %484 = fsub double %483, 0x4001E80B59D055EE
  %485 = fcmp ole double 0.000000e+00, %484
  br i1 %485, label %486, label %491

486:                                              ; preds = %480
  %487 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %488 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %487, i32 0, i32 7
  %489 = load double, ptr %488, align 8, !tbaa !17
  %490 = fsub double %489, 0x4001E80B59D055EE
  br label %497

491:                                              ; preds = %480
  %492 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %493 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %492, i32 0, i32 7
  %494 = load double, ptr %493, align 8, !tbaa !17
  %495 = fsub double %494, 0x4001E80B59D055EE
  %496 = fneg double %495
  br label %497

497:                                              ; preds = %491, %486
  %498 = phi double [ %490, %486 ], [ %496, %491 ]
  %499 = fcmp olt double 0x3E7AD7F29ABCAF48, %498
  br i1 %499, label %500, label %501

500:                                              ; preds = %497
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %501

501:                                              ; preds = %500, %497
  %502 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %503 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %502, i32 0, i32 8
  %504 = load double, ptr %503, align 16, !tbaa !18
  %505 = fsub double %504, 0x3FCF37D050E5CBA1
  %506 = fcmp ole double 0.000000e+00, %505
  br i1 %506, label %507, label %512

507:                                              ; preds = %501
  %508 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %509 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %508, i32 0, i32 8
  %510 = load double, ptr %509, align 16, !tbaa !18
  %511 = fsub double %510, 0x3FCF37D050E5CBA1
  br label %518

512:                                              ; preds = %501
  %513 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %514 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %513, i32 0, i32 8
  %515 = load double, ptr %514, align 16, !tbaa !18
  %516 = fsub double %515, 0x3FCF37D050E5CBA1
  %517 = fneg double %516
  br label %518

518:                                              ; preds = %512, %507
  %519 = phi double [ %511, %507 ], [ %517, %512 ]
  %520 = fcmp olt double 0x3E7AD7F29ABCAF48, %519
  br i1 %520, label %521, label %522

521:                                              ; preds = %518
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %522

522:                                              ; preds = %521, %518
  %523 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %524 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %523, i32 0, i32 10
  %525 = load double, ptr %524, align 16, !tbaa !19
  %526 = fsub double %525, 1.100000e+02
  %527 = fcmp ole double 0.000000e+00, %526
  br i1 %527, label %528, label %533

528:                                              ; preds = %522
  %529 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %530 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %529, i32 0, i32 10
  %531 = load double, ptr %530, align 16, !tbaa !19
  %532 = fsub double %531, 1.100000e+02
  br label %539

533:                                              ; preds = %522
  %534 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %535 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %534, i32 0, i32 10
  %536 = load double, ptr %535, align 16, !tbaa !19
  %537 = fsub double %536, 1.100000e+02
  %538 = fneg double %537
  br label %539

539:                                              ; preds = %533, %528
  %540 = phi double [ %532, %528 ], [ %538, %533 ]
  %541 = fcmp olt double 0x3E7AD7F29ABCAF48, %540
  br i1 %541, label %542, label %543

542:                                              ; preds = %539
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %543

543:                                              ; preds = %542, %539
  %544 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %545 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %544, i32 0, i32 15
  %546 = load double, ptr %545, align 8, !tbaa !20
  %547 = fsub double %546, 1.111000e+02
  %548 = fcmp ole double 0.000000e+00, %547
  br i1 %548, label %549, label %554

549:                                              ; preds = %543
  %550 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %551 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %550, i32 0, i32 15
  %552 = load double, ptr %551, align 8, !tbaa !20
  %553 = fsub double %552, 1.111000e+02
  br label %560

554:                                              ; preds = %543
  %555 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %556 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %555, i32 0, i32 15
  %557 = load double, ptr %556, align 8, !tbaa !20
  %558 = fsub double %557, 1.111000e+02
  %559 = fneg double %558
  br label %560

560:                                              ; preds = %554, %549
  %561 = phi double [ %553, %549 ], [ %559, %554 ]
  %562 = fcmp olt double 0x3E7AD7F29ABCAF48, %561
  br i1 %562, label %563, label %564

563:                                              ; preds = %560
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %564

564:                                              ; preds = %563, %560
  %565 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %566 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %565, i32 0, i32 5
  %567 = load double, ptr %566, align 8, !tbaa !21
  %568 = fsub double %567, 2.000000e+00
  %569 = fcmp ole double 0.000000e+00, %568
  br i1 %569, label %570, label %575

570:                                              ; preds = %564
  %571 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %572 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %571, i32 0, i32 5
  %573 = load double, ptr %572, align 8, !tbaa !21
  %574 = fsub double %573, 2.000000e+00
  br label %581

575:                                              ; preds = %564
  %576 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %577 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %576, i32 0, i32 5
  %578 = load double, ptr %577, align 8, !tbaa !21
  %579 = fsub double %578, 2.000000e+00
  %580 = fneg double %579
  br label %581

581:                                              ; preds = %575, %570
  %582 = phi double [ %574, %570 ], [ %580, %575 ]
  %583 = fcmp olt double 0x3E7AD7F29ABCAF48, %582
  br i1 %583, label %584, label %585

584:                                              ; preds = %581
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %585

585:                                              ; preds = %584, %581
  %586 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %587 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %586, i32 0, i32 6
  %588 = load double, ptr %587, align 16, !tbaa !22
  %589 = fsub double %588, 0x3FCC71C6ECB8FB5F
  %590 = fcmp ole double 0.000000e+00, %589
  br i1 %590, label %591, label %596

591:                                              ; preds = %585
  %592 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %593 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %592, i32 0, i32 6
  %594 = load double, ptr %593, align 16, !tbaa !22
  %595 = fsub double %594, 0x3FCC71C6ECB8FB5F
  br label %602

596:                                              ; preds = %585
  %597 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %598 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %597, i32 0, i32 6
  %599 = load double, ptr %598, align 16, !tbaa !22
  %600 = fsub double %599, 0x3FCC71C6ECB8FB5F
  %601 = fneg double %600
  br label %602

602:                                              ; preds = %596, %591
  %603 = phi double [ %595, %591 ], [ %601, %596 ]
  %604 = fcmp olt double 0x3E7AD7F29ABCAF48, %603
  br i1 %604, label %605, label %606

605:                                              ; preds = %602
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %606

606:                                              ; preds = %605, %602
  %607 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %608 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %607, i32 0, i32 9
  %609 = load double, ptr %608, align 8, !tbaa !23
  %610 = fsub double %609, 0x3FEFF936EDD2D6D2
  %611 = fcmp ole double 0.000000e+00, %610
  br i1 %611, label %612, label %617

612:                                              ; preds = %606
  %613 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %614 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %613, i32 0, i32 9
  %615 = load double, ptr %614, align 8, !tbaa !23
  %616 = fsub double %615, 0x3FEFF936EDD2D6D2
  br label %623

617:                                              ; preds = %606
  %618 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %619 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %618, i32 0, i32 9
  %620 = load double, ptr %619, align 8, !tbaa !23
  %621 = fsub double %620, 0x3FEFF936EDD2D6D2
  %622 = fneg double %621
  br label %623

623:                                              ; preds = %617, %612
  %624 = phi double [ %616, %612 ], [ %622, %617 ]
  %625 = fcmp olt double 0x3E7AD7F29ABCAF48, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %623
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %627

627:                                              ; preds = %626, %623
  %628 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %629 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %628, i32 0, i32 22
  %630 = load i32, ptr %629, align 16, !tbaa !24
  %631 = icmp ne i32 0, %630
  br i1 %631, label %637, label %632

632:                                              ; preds = %627
  %633 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %634 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %633, i32 0, i32 23
  %635 = load i32, ptr %634, align 4, !tbaa !25
  %636 = icmp ne i32 2, %635
  br i1 %636, label %637, label %638

637:                                              ; preds = %632, %627
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %638

638:                                              ; preds = %637, %632
  %639 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %640 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %639, i32 0, i32 22
  %641 = load i32, ptr %640, align 16, !tbaa !24
  %642 = mul nsw i32 3, %641
  %643 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %644 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %643, i32 0, i32 23
  %645 = load i32, ptr %644, align 4, !tbaa !25
  %646 = add nsw i32 %642, %645
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !9
  %650 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %651 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %650, i32 0, i32 20
  %652 = load double, ptr %651, align 16, !tbaa !26
  %653 = fcmp une double %649, %652
  br i1 %653, label %654, label %655

654:                                              ; preds = %638
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %655

655:                                              ; preds = %654, %638
  %656 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %657 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %656, i32 0, i32 22
  %658 = load i32, ptr %657, align 16, !tbaa !24
  %659 = mul nsw i32 3, %658
  %660 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %661 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %660, i32 0, i32 23
  %662 = load i32, ptr %661, align 4, !tbaa !25
  %663 = add nsw i32 %659, %662
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 1
  %668 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %667, i32 0, i32 21
  %669 = load double, ptr %668, align 8, !tbaa !27
  %670 = fcmp une double %666, %669
  br i1 %670, label %671, label %672

671:                                              ; preds = %655
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %672

672:                                              ; preds = %671, %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %673

673:                                              ; preds = %672, %352
  %674 = load i32, ptr %2, align 4, !tbaa !5
  %675 = icmp eq i32 0, %674
  br i1 %675, label %676, label %682

676:                                              ; preds = %673
  %677 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %678 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %677, i64 2
  %679 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 0
  %680 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 0
  %681 = call i32 @libxsmm_matdiff(ptr noundef %678, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef %679, ptr noundef %680, ptr noundef null, ptr noundef null)
  store i32 %681, ptr %2, align 4, !tbaa !5
  br label %682

682:                                              ; preds = %676, %673
  %683 = load i32, ptr %2, align 4, !tbaa !5
  %684 = icmp eq i32 0, %683
  br i1 %684, label %685, label %1003

685:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %686 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %687 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %686, i64 2
  %688 = call double @libxsmm_matdiff_epsilon(ptr noundef %687)
  store double %688, ptr %13, align 8, !tbaa !9
  %689 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %690 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %689, i64 2
  call void @libxsmm_matdiff_reduce(ptr noundef %4, ptr noundef %690)
  %691 = load double, ptr %13, align 8, !tbaa !9
  %692 = fsub double %691, 2.231030e-02
  %693 = fcmp ole double 0.000000e+00, %692
  br i1 %693, label %694, label %697

694:                                              ; preds = %685
  %695 = load double, ptr %13, align 8, !tbaa !9
  %696 = fsub double %695, 2.231030e-02
  br label %701

697:                                              ; preds = %685
  %698 = load double, ptr %13, align 8, !tbaa !9
  %699 = fsub double %698, 2.231030e-02
  %700 = fneg double %699
  br label %701

701:                                              ; preds = %697, %694
  %702 = phi double [ %696, %694 ], [ %700, %697 ]
  %703 = fcmp olt double 0x3E7AD7F29ABCAF48, %702
  br i1 %703, label %704, label %705

704:                                              ; preds = %701
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %705

705:                                              ; preds = %704, %701
  %706 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %707 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %706, i32 0, i32 0
  %708 = load double, ptr %707, align 16, !tbaa !11
  %709 = fsub double %708, 3.100000e+00
  %710 = fcmp ole double 0.000000e+00, %709
  br i1 %710, label %711, label %716

711:                                              ; preds = %705
  %712 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %713 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %712, i32 0, i32 0
  %714 = load double, ptr %713, align 16, !tbaa !11
  %715 = fsub double %714, 3.100000e+00
  br label %722

716:                                              ; preds = %705
  %717 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %718 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %717, i32 0, i32 0
  %719 = load double, ptr %718, align 16, !tbaa !11
  %720 = fsub double %719, 3.100000e+00
  %721 = fneg double %720
  br label %722

722:                                              ; preds = %716, %711
  %723 = phi double [ %715, %711 ], [ %721, %716 ]
  %724 = fcmp olt double 0x3E7AD7F29ABCAF48, %723
  br i1 %724, label %725, label %726

725:                                              ; preds = %722
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %726

726:                                              ; preds = %725, %722
  %727 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %728 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %727, i32 0, i32 1
  %729 = load double, ptr %728, align 8, !tbaa !13
  %730 = fsub double %729, 2.818180e-02
  %731 = fcmp ole double 0.000000e+00, %730
  br i1 %731, label %732, label %737

732:                                              ; preds = %726
  %733 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %734 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %733, i32 0, i32 1
  %735 = load double, ptr %734, align 8, !tbaa !13
  %736 = fsub double %735, 2.818180e-02
  br label %743

737:                                              ; preds = %726
  %738 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %739 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %738, i32 0, i32 1
  %740 = load double, ptr %739, align 8, !tbaa !13
  %741 = fsub double %740, 2.818180e-02
  %742 = fneg double %741
  br label %743

743:                                              ; preds = %737, %732
  %744 = phi double [ %736, %732 ], [ %742, %737 ]
  %745 = fcmp olt double 0x3E7AD7F29ABCAF48, %744
  br i1 %745, label %746, label %747

746:                                              ; preds = %743
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %747

747:                                              ; preds = %746, %743
  %748 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %749 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %748, i32 0, i32 2
  %750 = load double, ptr %749, align 16, !tbaa !14
  %751 = fsub double %750, 2.000000e+00
  %752 = fcmp ole double 0.000000e+00, %751
  br i1 %752, label %753, label %758

753:                                              ; preds = %747
  %754 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %755 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %754, i32 0, i32 2
  %756 = load double, ptr %755, align 16, !tbaa !14
  %757 = fsub double %756, 2.000000e+00
  br label %764

758:                                              ; preds = %747
  %759 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %760 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %759, i32 0, i32 2
  %761 = load double, ptr %760, align 16, !tbaa !14
  %762 = fsub double %761, 2.000000e+00
  %763 = fneg double %762
  br label %764

764:                                              ; preds = %758, %753
  %765 = phi double [ %757, %753 ], [ %763, %758 ]
  %766 = fcmp olt double 0x3E7AD7F29ABCAF48, %765
  br i1 %766, label %767, label %768

767:                                              ; preds = %764
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %768

768:                                              ; preds = %767, %764
  %769 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %770 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %769, i32 0, i32 3
  %771 = load double, ptr %770, align 8, !tbaa !15
  %772 = fsub double %771, 2.000000e-02
  %773 = fcmp ole double 0.000000e+00, %772
  br i1 %773, label %774, label %779

774:                                              ; preds = %768
  %775 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %776 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %775, i32 0, i32 3
  %777 = load double, ptr %776, align 8, !tbaa !15
  %778 = fsub double %777, 2.000000e-02
  br label %785

779:                                              ; preds = %768
  %780 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %781 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %780, i32 0, i32 3
  %782 = load double, ptr %781, align 8, !tbaa !15
  %783 = fsub double %782, 2.000000e-02
  %784 = fneg double %783
  br label %785

785:                                              ; preds = %779, %774
  %786 = phi double [ %778, %774 ], [ %784, %779 ]
  %787 = fcmp olt double 0x3E7AD7F29ABCAF48, %786
  br i1 %787, label %788, label %789

788:                                              ; preds = %785
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %789

789:                                              ; preds = %788, %785
  %790 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %791 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %790, i32 0, i32 4
  %792 = load double, ptr %791, align 16, !tbaa !16
  %793 = fsub double %792, 2.229180e-02
  %794 = fcmp ole double 0.000000e+00, %793
  br i1 %794, label %795, label %800

795:                                              ; preds = %789
  %796 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %797 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %796, i32 0, i32 4
  %798 = load double, ptr %797, align 16, !tbaa !16
  %799 = fsub double %798, 2.229180e-02
  br label %806

800:                                              ; preds = %789
  %801 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %802 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %801, i32 0, i32 4
  %803 = load double, ptr %802, align 16, !tbaa !16
  %804 = fsub double %803, 2.229180e-02
  %805 = fneg double %804
  br label %806

806:                                              ; preds = %800, %795
  %807 = phi double [ %799, %795 ], [ %805, %800 ]
  %808 = fcmp olt double 0x3E7AD7F29ABCAF48, %807
  br i1 %808, label %809, label %810

809:                                              ; preds = %806
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %810

810:                                              ; preds = %809, %806
  %811 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %812 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %811, i32 0, i32 7
  %813 = load double, ptr %812, align 8, !tbaa !17
  %814 = fsub double %813, 0x4001E80B59D055EE
  %815 = fcmp ole double 0.000000e+00, %814
  br i1 %815, label %816, label %821

816:                                              ; preds = %810
  %817 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %818 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %817, i32 0, i32 7
  %819 = load double, ptr %818, align 8, !tbaa !17
  %820 = fsub double %819, 0x4001E80B59D055EE
  br label %827

821:                                              ; preds = %810
  %822 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %823 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %822, i32 0, i32 7
  %824 = load double, ptr %823, align 8, !tbaa !17
  %825 = fsub double %824, 0x4001E80B59D055EE
  %826 = fneg double %825
  br label %827

827:                                              ; preds = %821, %816
  %828 = phi double [ %820, %816 ], [ %826, %821 ]
  %829 = fcmp olt double 0x3E7AD7F29ABCAF48, %828
  br i1 %829, label %830, label %831

830:                                              ; preds = %827
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %831

831:                                              ; preds = %830, %827
  %832 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %833 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %832, i32 0, i32 8
  %834 = load double, ptr %833, align 16, !tbaa !18
  %835 = fsub double %834, 0x3FCF37D050E5CBA1
  %836 = fcmp ole double 0.000000e+00, %835
  br i1 %836, label %837, label %842

837:                                              ; preds = %831
  %838 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %839 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %838, i32 0, i32 8
  %840 = load double, ptr %839, align 16, !tbaa !18
  %841 = fsub double %840, 0x3FCF37D050E5CBA1
  br label %848

842:                                              ; preds = %831
  %843 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %844 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %843, i32 0, i32 8
  %845 = load double, ptr %844, align 16, !tbaa !18
  %846 = fsub double %845, 0x3FCF37D050E5CBA1
  %847 = fneg double %846
  br label %848

848:                                              ; preds = %842, %837
  %849 = phi double [ %841, %837 ], [ %847, %842 ]
  %850 = fcmp olt double 0x3E7AD7F29ABCAF48, %849
  br i1 %850, label %851, label %852

851:                                              ; preds = %848
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %852

852:                                              ; preds = %851, %848
  %853 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %854 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %853, i32 0, i32 10
  %855 = load double, ptr %854, align 16, !tbaa !19
  %856 = fsub double %855, 1.100000e+02
  %857 = fcmp ole double 0.000000e+00, %856
  br i1 %857, label %858, label %863

858:                                              ; preds = %852
  %859 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %860 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %859, i32 0, i32 10
  %861 = load double, ptr %860, align 16, !tbaa !19
  %862 = fsub double %861, 1.100000e+02
  br label %869

863:                                              ; preds = %852
  %864 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %865 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %864, i32 0, i32 10
  %866 = load double, ptr %865, align 16, !tbaa !19
  %867 = fsub double %866, 1.100000e+02
  %868 = fneg double %867
  br label %869

869:                                              ; preds = %863, %858
  %870 = phi double [ %862, %858 ], [ %868, %863 ]
  %871 = fcmp olt double 0x3E7AD7F29ABCAF48, %870
  br i1 %871, label %872, label %873

872:                                              ; preds = %869
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %873

873:                                              ; preds = %872, %869
  %874 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %875 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %874, i32 0, i32 15
  %876 = load double, ptr %875, align 8, !tbaa !20
  %877 = fsub double %876, 1.111000e+02
  %878 = fcmp ole double 0.000000e+00, %877
  br i1 %878, label %879, label %884

879:                                              ; preds = %873
  %880 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %881 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %880, i32 0, i32 15
  %882 = load double, ptr %881, align 8, !tbaa !20
  %883 = fsub double %882, 1.111000e+02
  br label %890

884:                                              ; preds = %873
  %885 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %886 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %885, i32 0, i32 15
  %887 = load double, ptr %886, align 8, !tbaa !20
  %888 = fsub double %887, 1.111000e+02
  %889 = fneg double %888
  br label %890

890:                                              ; preds = %884, %879
  %891 = phi double [ %883, %879 ], [ %889, %884 ]
  %892 = fcmp olt double 0x3E7AD7F29ABCAF48, %891
  br i1 %892, label %893, label %894

893:                                              ; preds = %890
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %894

894:                                              ; preds = %893, %890
  %895 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %896 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %895, i32 0, i32 5
  %897 = load double, ptr %896, align 8, !tbaa !21
  %898 = fsub double %897, 2.000000e+00
  %899 = fcmp ole double 0.000000e+00, %898
  br i1 %899, label %900, label %905

900:                                              ; preds = %894
  %901 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %902 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %901, i32 0, i32 5
  %903 = load double, ptr %902, align 8, !tbaa !21
  %904 = fsub double %903, 2.000000e+00
  br label %911

905:                                              ; preds = %894
  %906 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %907 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %906, i32 0, i32 5
  %908 = load double, ptr %907, align 8, !tbaa !21
  %909 = fsub double %908, 2.000000e+00
  %910 = fneg double %909
  br label %911

911:                                              ; preds = %905, %900
  %912 = phi double [ %904, %900 ], [ %910, %905 ]
  %913 = fcmp olt double 0x3E7AD7F29ABCAF48, %912
  br i1 %913, label %914, label %915

914:                                              ; preds = %911
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %915

915:                                              ; preds = %914, %911
  %916 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %917 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %916, i32 0, i32 6
  %918 = load double, ptr %917, align 16, !tbaa !22
  %919 = fsub double %918, 0x3FCC71C6ECB8FB5F
  %920 = fcmp ole double 0.000000e+00, %919
  br i1 %920, label %921, label %926

921:                                              ; preds = %915
  %922 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %923 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %922, i32 0, i32 6
  %924 = load double, ptr %923, align 16, !tbaa !22
  %925 = fsub double %924, 0x3FCC71C6ECB8FB5F
  br label %932

926:                                              ; preds = %915
  %927 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %928 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %927, i32 0, i32 6
  %929 = load double, ptr %928, align 16, !tbaa !22
  %930 = fsub double %929, 0x3FCC71C6ECB8FB5F
  %931 = fneg double %930
  br label %932

932:                                              ; preds = %926, %921
  %933 = phi double [ %925, %921 ], [ %931, %926 ]
  %934 = fcmp olt double 0x3E7AD7F29ABCAF48, %933
  br i1 %934, label %935, label %936

935:                                              ; preds = %932
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %936

936:                                              ; preds = %935, %932
  %937 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %938 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %937, i32 0, i32 9
  %939 = load double, ptr %938, align 8, !tbaa !23
  %940 = fsub double %939, 0x3FEFF936EDD2D6D2
  %941 = fcmp ole double 0.000000e+00, %940
  br i1 %941, label %942, label %947

942:                                              ; preds = %936
  %943 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %944 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %943, i32 0, i32 9
  %945 = load double, ptr %944, align 8, !tbaa !23
  %946 = fsub double %945, 0x3FEFF936EDD2D6D2
  br label %953

947:                                              ; preds = %936
  %948 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %949 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %948, i32 0, i32 9
  %950 = load double, ptr %949, align 8, !tbaa !23
  %951 = fsub double %950, 0x3FEFF936EDD2D6D2
  %952 = fneg double %951
  br label %953

953:                                              ; preds = %947, %942
  %954 = phi double [ %946, %942 ], [ %952, %947 ]
  %955 = fcmp olt double 0x3E7AD7F29ABCAF48, %954
  br i1 %955, label %956, label %957

956:                                              ; preds = %953
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %957

957:                                              ; preds = %956, %953
  %958 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %959 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %958, i32 0, i32 22
  %960 = load i32, ptr %959, align 16, !tbaa !24
  %961 = icmp ne i32 2, %960
  br i1 %961, label %967, label %962

962:                                              ; preds = %957
  %963 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %964 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %963, i32 0, i32 23
  %965 = load i32, ptr %964, align 4, !tbaa !25
  %966 = icmp ne i32 0, %965
  br i1 %966, label %967, label %968

967:                                              ; preds = %962, %957
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %968

968:                                              ; preds = %967, %962
  %969 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %970 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %969, i32 0, i32 23
  %971 = load i32, ptr %970, align 4, !tbaa !25
  %972 = mul nsw i32 3, %971
  %973 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %974 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %973, i32 0, i32 22
  %975 = load i32, ptr %974, align 16, !tbaa !24
  %976 = add nsw i32 %972, %975
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !9
  %980 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %981 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %980, i32 0, i32 20
  %982 = load double, ptr %981, align 16, !tbaa !26
  %983 = fcmp une double %979, %982
  br i1 %983, label %984, label %985

984:                                              ; preds = %968
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %985

985:                                              ; preds = %984, %968
  %986 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %987 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %986, i32 0, i32 23
  %988 = load i32, ptr %987, align 4, !tbaa !25
  %989 = mul nsw i32 3, %988
  %990 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %991 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %990, i32 0, i32 22
  %992 = load i32, ptr %991, align 16, !tbaa !24
  %993 = add nsw i32 %989, %992
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 %994
  %996 = load double, ptr %995, align 8, !tbaa !9
  %997 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 2
  %998 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %997, i32 0, i32 21
  %999 = load double, ptr %998, align 8, !tbaa !27
  %1000 = fcmp une double %996, %999
  br i1 %1000, label %1001, label %1002

1001:                                             ; preds = %985
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1002

1002:                                             ; preds = %1001, %985
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  br label %1003

1003:                                             ; preds = %1002, %682
  %1004 = load i32, ptr %2, align 4, !tbaa !5
  %1005 = icmp eq i32 0, %1004
  br i1 %1005, label %1006, label %1012

1006:                                             ; preds = %1003
  %1007 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1008 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1007, i64 3
  %1009 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 0
  %1010 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 0
  %1011 = call i32 @libxsmm_matdiff(ptr noundef %1008, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef %1009, ptr noundef %1010, ptr noundef null, ptr noundef null)
  store i32 %1011, ptr %2, align 4, !tbaa !5
  br label %1012

1012:                                             ; preds = %1006, %1003
  %1013 = load i32, ptr %2, align 4, !tbaa !5
  %1014 = icmp eq i32 0, %1013
  br i1 %1014, label %1015, label %1333

1015:                                             ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %1016 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1017 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1016, i64 3
  %1018 = call double @libxsmm_matdiff_epsilon(ptr noundef %1017)
  store double %1018, ptr %14, align 8, !tbaa !9
  %1019 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1020 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1019, i64 3
  call void @libxsmm_matdiff_reduce(ptr noundef %4, ptr noundef %1020)
  %1021 = load double, ptr %14, align 8, !tbaa !9
  %1022 = fsub double %1021, 6.004000e-04
  %1023 = fcmp ole double 0.000000e+00, %1022
  br i1 %1023, label %1024, label %1027

1024:                                             ; preds = %1015
  %1025 = load double, ptr %14, align 8, !tbaa !9
  %1026 = fsub double %1025, 6.004000e-04
  br label %1031

1027:                                             ; preds = %1015
  %1028 = load double, ptr %14, align 8, !tbaa !9
  %1029 = fsub double %1028, 6.004000e-04
  %1030 = fneg double %1029
  br label %1031

1031:                                             ; preds = %1027, %1024
  %1032 = phi double [ %1026, %1024 ], [ %1030, %1027 ]
  %1033 = fcmp olt double 0x3E7AD7F29ABCAF48, %1032
  br i1 %1033, label %1034, label %1035

1034:                                             ; preds = %1031
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1035

1035:                                             ; preds = %1034, %1031
  %1036 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1037 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1036, i32 0, i32 0
  %1038 = load double, ptr %1037, align 16, !tbaa !11
  %1039 = fsub double %1038, 4.000000e-02
  %1040 = fcmp ole double 0.000000e+00, %1039
  br i1 %1040, label %1041, label %1046

1041:                                             ; preds = %1035
  %1042 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1043 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1042, i32 0, i32 0
  %1044 = load double, ptr %1043, align 16, !tbaa !11
  %1045 = fsub double %1044, 4.000000e-02
  br label %1052

1046:                                             ; preds = %1035
  %1047 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1048 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1047, i32 0, i32 0
  %1049 = load double, ptr %1048, align 16, !tbaa !11
  %1050 = fsub double %1049, 4.000000e-02
  %1051 = fneg double %1050
  br label %1052

1052:                                             ; preds = %1046, %1041
  %1053 = phi double [ %1045, %1041 ], [ %1051, %1046 ]
  %1054 = fcmp olt double 0x3E7AD7F29ABCAF48, %1053
  br i1 %1054, label %1055, label %1056

1055:                                             ; preds = %1052
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1056

1056:                                             ; preds = %1055, %1052
  %1057 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1058 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1057, i32 0, i32 1
  %1059 = load double, ptr %1058, align 8, !tbaa !13
  %1060 = fsub double %1059, 4.000000e-02
  %1061 = fcmp ole double 0.000000e+00, %1060
  br i1 %1061, label %1062, label %1067

1062:                                             ; preds = %1056
  %1063 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1064 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1063, i32 0, i32 1
  %1065 = load double, ptr %1064, align 8, !tbaa !13
  %1066 = fsub double %1065, 4.000000e-02
  br label %1073

1067:                                             ; preds = %1056
  %1068 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1069 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1068, i32 0, i32 1
  %1070 = load double, ptr %1069, align 8, !tbaa !13
  %1071 = fsub double %1070, 4.000000e-02
  %1072 = fneg double %1071
  br label %1073

1073:                                             ; preds = %1067, %1062
  %1074 = phi double [ %1066, %1062 ], [ %1072, %1067 ]
  %1075 = fcmp olt double 0x3E7AD7F29ABCAF48, %1074
  br i1 %1075, label %1076, label %1077

1076:                                             ; preds = %1073
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1077

1077:                                             ; preds = %1076, %1073
  %1078 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1079 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1078, i32 0, i32 2
  %1080 = load double, ptr %1079, align 16, !tbaa !14
  %1081 = fsub double %1080, 2.000000e-02
  %1082 = fcmp ole double 0.000000e+00, %1081
  br i1 %1082, label %1083, label %1088

1083:                                             ; preds = %1077
  %1084 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1085 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1084, i32 0, i32 2
  %1086 = load double, ptr %1085, align 16, !tbaa !14
  %1087 = fsub double %1086, 2.000000e-02
  br label %1094

1088:                                             ; preds = %1077
  %1089 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1090 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1089, i32 0, i32 2
  %1091 = load double, ptr %1090, align 16, !tbaa !14
  %1092 = fsub double %1091, 2.000000e-02
  %1093 = fneg double %1092
  br label %1094

1094:                                             ; preds = %1088, %1083
  %1095 = phi double [ %1087, %1083 ], [ %1093, %1088 ]
  %1096 = fcmp olt double 0x3E7AD7F29ABCAF48, %1095
  br i1 %1096, label %1097, label %1098

1097:                                             ; preds = %1094
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1098

1098:                                             ; preds = %1097, %1094
  %1099 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1100 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1099, i32 0, i32 3
  %1101 = load double, ptr %1100, align 8, !tbaa !15
  %1102 = fsub double %1101, 2.000000e-02
  %1103 = fcmp ole double 0.000000e+00, %1102
  br i1 %1103, label %1104, label %1109

1104:                                             ; preds = %1098
  %1105 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1106 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1105, i32 0, i32 3
  %1107 = load double, ptr %1106, align 8, !tbaa !15
  %1108 = fsub double %1107, 2.000000e-02
  br label %1115

1109:                                             ; preds = %1098
  %1110 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1111 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1110, i32 0, i32 3
  %1112 = load double, ptr %1111, align 8, !tbaa !15
  %1113 = fsub double %1112, 2.000000e-02
  %1114 = fneg double %1113
  br label %1115

1115:                                             ; preds = %1109, %1104
  %1116 = phi double [ %1108, %1104 ], [ %1114, %1109 ]
  %1117 = fcmp olt double 0x3E7AD7F29ABCAF48, %1116
  br i1 %1117, label %1118, label %1119

1118:                                             ; preds = %1115
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1119

1119:                                             ; preds = %1118, %1115
  %1120 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1121 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1120, i32 0, i32 4
  %1122 = load double, ptr %1121, align 16, !tbaa !16
  %1123 = fsub double %1122, 6.000000e-04
  %1124 = fcmp ole double 0.000000e+00, %1123
  br i1 %1124, label %1125, label %1130

1125:                                             ; preds = %1119
  %1126 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1127 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1126, i32 0, i32 4
  %1128 = load double, ptr %1127, align 16, !tbaa !16
  %1129 = fsub double %1128, 6.000000e-04
  br label %1136

1130:                                             ; preds = %1119
  %1131 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1132 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1131, i32 0, i32 4
  %1133 = load double, ptr %1132, align 16, !tbaa !16
  %1134 = fsub double %1133, 6.000000e-04
  %1135 = fneg double %1134
  br label %1136

1136:                                             ; preds = %1130, %1125
  %1137 = phi double [ %1129, %1125 ], [ %1135, %1130 ]
  %1138 = fcmp olt double 0x3E7AD7F29ABCAF48, %1137
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1136
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1140

1140:                                             ; preds = %1139, %1136
  %1141 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1142 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1141, i32 0, i32 7
  %1143 = load double, ptr %1142, align 8, !tbaa !17
  %1144 = fsub double %1143, 2.449490e-02
  %1145 = fcmp ole double 0.000000e+00, %1144
  br i1 %1145, label %1146, label %1151

1146:                                             ; preds = %1140
  %1147 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1148 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1147, i32 0, i32 7
  %1149 = load double, ptr %1148, align 8, !tbaa !17
  %1150 = fsub double %1149, 2.449490e-02
  br label %1157

1151:                                             ; preds = %1140
  %1152 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1153 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1152, i32 0, i32 7
  %1154 = load double, ptr %1153, align 8, !tbaa !17
  %1155 = fsub double %1154, 2.449490e-02
  %1156 = fneg double %1155
  br label %1157

1157:                                             ; preds = %1151, %1146
  %1158 = phi double [ %1150, %1146 ], [ %1156, %1151 ]
  %1159 = fcmp olt double 0x3E7AD7F29ABCAF48, %1158
  br i1 %1159, label %1160, label %1161

1160:                                             ; preds = %1157
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1161

1161:                                             ; preds = %1160, %1157
  %1162 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1163 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1162, i32 0, i32 8
  %1164 = load double, ptr %1163, align 16, !tbaa !18
  %1165 = fsub double %1164, 2.449490e-02
  %1166 = fcmp ole double 0.000000e+00, %1165
  br i1 %1166, label %1167, label %1172

1167:                                             ; preds = %1161
  %1168 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1169 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1168, i32 0, i32 8
  %1170 = load double, ptr %1169, align 16, !tbaa !18
  %1171 = fsub double %1170, 2.449490e-02
  br label %1178

1172:                                             ; preds = %1161
  %1173 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1174 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1173, i32 0, i32 8
  %1175 = load double, ptr %1174, align 16, !tbaa !18
  %1176 = fsub double %1175, 2.449490e-02
  %1177 = fneg double %1176
  br label %1178

1178:                                             ; preds = %1172, %1167
  %1179 = phi double [ %1171, %1167 ], [ %1177, %1172 ]
  %1180 = fcmp olt double 0x3E7AD7F29ABCAF48, %1179
  br i1 %1180, label %1181, label %1182

1181:                                             ; preds = %1178
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1182

1182:                                             ; preds = %1181, %1178
  %1183 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1184 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1183, i32 0, i32 10
  %1185 = load double, ptr %1184, align 16, !tbaa !19
  %1186 = fsub double %1185, 0.000000e+00
  %1187 = fcmp ole double 0.000000e+00, %1186
  br i1 %1187, label %1188, label %1193

1188:                                             ; preds = %1182
  %1189 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1190 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1189, i32 0, i32 10
  %1191 = load double, ptr %1190, align 16, !tbaa !19
  %1192 = fsub double %1191, 0.000000e+00
  br label %1199

1193:                                             ; preds = %1182
  %1194 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1195 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1194, i32 0, i32 10
  %1196 = load double, ptr %1195, align 16, !tbaa !19
  %1197 = fsub double %1196, 0.000000e+00
  %1198 = fneg double %1197
  br label %1199

1199:                                             ; preds = %1193, %1188
  %1200 = phi double [ %1192, %1188 ], [ %1198, %1193 ]
  %1201 = fcmp olt double 0x3E7AD7F29ABCAF48, %1200
  br i1 %1201, label %1202, label %1203

1202:                                             ; preds = %1199
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1203

1203:                                             ; preds = %1202, %1199
  %1204 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1205 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1204, i32 0, i32 15
  %1206 = load double, ptr %1205, align 8, !tbaa !20
  %1207 = fsub double %1206, 4.000000e-02
  %1208 = fcmp ole double 0.000000e+00, %1207
  br i1 %1208, label %1209, label %1214

1209:                                             ; preds = %1203
  %1210 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1211 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1210, i32 0, i32 15
  %1212 = load double, ptr %1211, align 8, !tbaa !20
  %1213 = fsub double %1212, 4.000000e-02
  br label %1220

1214:                                             ; preds = %1203
  %1215 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1216 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1215, i32 0, i32 15
  %1217 = load double, ptr %1216, align 8, !tbaa !20
  %1218 = fsub double %1217, 4.000000e-02
  %1219 = fneg double %1218
  br label %1220

1220:                                             ; preds = %1214, %1209
  %1221 = phi double [ %1213, %1209 ], [ %1219, %1214 ]
  %1222 = fcmp olt double 0x3E7AD7F29ABCAF48, %1221
  br i1 %1222, label %1223, label %1224

1223:                                             ; preds = %1220
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1224

1224:                                             ; preds = %1223, %1220
  %1225 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1226 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1225, i32 0, i32 5
  %1227 = load double, ptr %1226, align 8, !tbaa !21
  %1228 = fsub double %1227, 2.000000e-02
  %1229 = fcmp ole double 0.000000e+00, %1228
  br i1 %1229, label %1230, label %1235

1230:                                             ; preds = %1224
  %1231 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1232 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1231, i32 0, i32 5
  %1233 = load double, ptr %1232, align 8, !tbaa !21
  %1234 = fsub double %1233, 2.000000e-02
  br label %1241

1235:                                             ; preds = %1224
  %1236 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1237 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1236, i32 0, i32 5
  %1238 = load double, ptr %1237, align 8, !tbaa !21
  %1239 = fsub double %1238, 2.000000e-02
  %1240 = fneg double %1239
  br label %1241

1241:                                             ; preds = %1235, %1230
  %1242 = phi double [ %1234, %1230 ], [ %1240, %1235 ]
  %1243 = fcmp olt double 0x3E7AD7F29ABCAF48, %1242
  br i1 %1243, label %1244, label %1245

1244:                                             ; preds = %1241
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1245

1245:                                             ; preds = %1244, %1241
  %1246 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1247 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1246, i32 0, i32 6
  %1248 = load double, ptr %1247, align 16, !tbaa !22
  %1249 = fsub double %1248, 2.000000e-02
  %1250 = fcmp ole double 0.000000e+00, %1249
  br i1 %1250, label %1251, label %1256

1251:                                             ; preds = %1245
  %1252 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1253 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1252, i32 0, i32 6
  %1254 = load double, ptr %1253, align 16, !tbaa !22
  %1255 = fsub double %1254, 2.000000e-02
  br label %1262

1256:                                             ; preds = %1245
  %1257 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1258 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1257, i32 0, i32 6
  %1259 = load double, ptr %1258, align 16, !tbaa !22
  %1260 = fsub double %1259, 2.000000e-02
  %1261 = fneg double %1260
  br label %1262

1262:                                             ; preds = %1256, %1251
  %1263 = phi double [ %1255, %1251 ], [ %1261, %1256 ]
  %1264 = fcmp olt double 0x3E7AD7F29ABCAF48, %1263
  br i1 %1264, label %1265, label %1266

1265:                                             ; preds = %1262
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1266

1266:                                             ; preds = %1265, %1262
  %1267 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1268 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1267, i32 0, i32 9
  %1269 = load double, ptr %1268, align 8, !tbaa !23
  %1270 = fsub double %1269, 0x3FEFFB15B573EAB3
  %1271 = fcmp ole double 0.000000e+00, %1270
  br i1 %1271, label %1272, label %1277

1272:                                             ; preds = %1266
  %1273 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1274 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1273, i32 0, i32 9
  %1275 = load double, ptr %1274, align 8, !tbaa !23
  %1276 = fsub double %1275, 0x3FEFFB15B573EAB3
  br label %1283

1277:                                             ; preds = %1266
  %1278 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1279 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1278, i32 0, i32 9
  %1280 = load double, ptr %1279, align 8, !tbaa !23
  %1281 = fsub double %1280, 0x3FEFFB15B573EAB3
  %1282 = fneg double %1281
  br label %1283

1283:                                             ; preds = %1277, %1272
  %1284 = phi double [ %1276, %1272 ], [ %1282, %1277 ]
  %1285 = fcmp olt double 0x3E7AD7F29ABCAF48, %1284
  br i1 %1285, label %1286, label %1287

1286:                                             ; preds = %1283
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1287

1287:                                             ; preds = %1286, %1283
  %1288 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1289 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1288, i32 0, i32 22
  %1290 = load i32, ptr %1289, align 16, !tbaa !24
  %1291 = icmp ne i32 1, %1290
  br i1 %1291, label %1297, label %1292

1292:                                             ; preds = %1287
  %1293 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1294 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1293, i32 0, i32 23
  %1295 = load i32, ptr %1294, align 4, !tbaa !25
  %1296 = icmp ne i32 0, %1295
  br i1 %1296, label %1297, label %1298

1297:                                             ; preds = %1292, %1287
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1298

1298:                                             ; preds = %1297, %1292
  %1299 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1300 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1299, i32 0, i32 23
  %1301 = load i32, ptr %1300, align 4, !tbaa !25
  %1302 = mul nsw i32 3, %1301
  %1303 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1304 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1303, i32 0, i32 22
  %1305 = load i32, ptr %1304, align 16, !tbaa !24
  %1306 = add nsw i32 %1302, %1305
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 %1307
  %1309 = load double, ptr %1308, align 8, !tbaa !9
  %1310 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1311 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1310, i32 0, i32 20
  %1312 = load double, ptr %1311, align 16, !tbaa !26
  %1313 = fcmp une double %1309, %1312
  br i1 %1313, label %1314, label %1315

1314:                                             ; preds = %1298
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1315

1315:                                             ; preds = %1314, %1298
  %1316 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1317 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1316, i32 0, i32 23
  %1318 = load i32, ptr %1317, align 4, !tbaa !25
  %1319 = mul nsw i32 3, %1318
  %1320 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1321 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1320, i32 0, i32 22
  %1322 = load i32, ptr %1321, align 16, !tbaa !24
  %1323 = add nsw i32 %1319, %1322
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !9
  %1327 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 3
  %1328 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1327, i32 0, i32 21
  %1329 = load double, ptr %1328, align 8, !tbaa !27
  %1330 = fcmp une double %1326, %1329
  br i1 %1330, label %1331, label %1332

1331:                                             ; preds = %1315
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1332

1332:                                             ; preds = %1331, %1315
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  br label %1333

1333:                                             ; preds = %1332, %1012
  %1334 = load i32, ptr %2, align 4, !tbaa !5
  %1335 = icmp eq i32 0, %1334
  br i1 %1335, label %1336, label %1342

1336:                                             ; preds = %1333
  %1337 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1338 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1337, i64 4
  %1339 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 0
  %1340 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 0
  %1341 = call i32 @libxsmm_matdiff(ptr noundef %1338, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef %1339, ptr noundef %1340, ptr noundef null, ptr noundef null)
  store i32 %1341, ptr %2, align 4, !tbaa !5
  br label %1342

1342:                                             ; preds = %1336, %1333
  %1343 = load i32, ptr %2, align 4, !tbaa !5
  %1344 = icmp eq i32 0, %1343
  br i1 %1344, label %1345, label %1661

1345:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %1346 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1347 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1346, i64 4
  %1348 = call double @libxsmm_matdiff_epsilon(ptr noundef %1347)
  store double %1348, ptr %15, align 8, !tbaa !9
  %1349 = load double, ptr %15, align 8, !tbaa !9
  %1350 = fsub double %1349, 2.449490e-02
  %1351 = fcmp ole double 0.000000e+00, %1350
  br i1 %1351, label %1352, label %1355

1352:                                             ; preds = %1345
  %1353 = load double, ptr %15, align 8, !tbaa !9
  %1354 = fsub double %1353, 2.449490e-02
  br label %1359

1355:                                             ; preds = %1345
  %1356 = load double, ptr %15, align 8, !tbaa !9
  %1357 = fsub double %1356, 2.449490e-02
  %1358 = fneg double %1357
  br label %1359

1359:                                             ; preds = %1355, %1352
  %1360 = phi double [ %1354, %1352 ], [ %1358, %1355 ]
  %1361 = fcmp olt double 0x3E7AD7F29ABCAF48, %1360
  br i1 %1361, label %1362, label %1363

1362:                                             ; preds = %1359
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1363

1363:                                             ; preds = %1362, %1359
  %1364 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1365 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1364, i32 0, i32 0
  %1366 = load double, ptr %1365, align 16, !tbaa !11
  %1367 = fsub double %1366, 4.000000e-02
  %1368 = fcmp ole double 0.000000e+00, %1367
  br i1 %1368, label %1369, label %1374

1369:                                             ; preds = %1363
  %1370 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1371 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1370, i32 0, i32 0
  %1372 = load double, ptr %1371, align 16, !tbaa !11
  %1373 = fsub double %1372, 4.000000e-02
  br label %1380

1374:                                             ; preds = %1363
  %1375 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1376 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1375, i32 0, i32 0
  %1377 = load double, ptr %1376, align 16, !tbaa !11
  %1378 = fsub double %1377, 4.000000e-02
  %1379 = fneg double %1378
  br label %1380

1380:                                             ; preds = %1374, %1369
  %1381 = phi double [ %1373, %1369 ], [ %1379, %1374 ]
  %1382 = fcmp olt double 0x3E7AD7F29ABCAF48, %1381
  br i1 %1382, label %1383, label %1384

1383:                                             ; preds = %1380
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1384

1384:                                             ; preds = %1383, %1380
  %1385 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1386 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1385, i32 0, i32 1
  %1387 = load double, ptr %1386, align 8, !tbaa !13
  %1388 = fsub double %1387, 1.000000e+00
  %1389 = fcmp ole double 0.000000e+00, %1388
  br i1 %1389, label %1390, label %1395

1390:                                             ; preds = %1384
  %1391 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1392 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1391, i32 0, i32 1
  %1393 = load double, ptr %1392, align 8, !tbaa !13
  %1394 = fsub double %1393, 1.000000e+00
  br label %1401

1395:                                             ; preds = %1384
  %1396 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1397 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1396, i32 0, i32 1
  %1398 = load double, ptr %1397, align 8, !tbaa !13
  %1399 = fsub double %1398, 1.000000e+00
  %1400 = fneg double %1399
  br label %1401

1401:                                             ; preds = %1395, %1390
  %1402 = phi double [ %1394, %1390 ], [ %1400, %1395 ]
  %1403 = fcmp olt double 0x3E7AD7F29ABCAF48, %1402
  br i1 %1403, label %1404, label %1405

1404:                                             ; preds = %1401
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1405

1405:                                             ; preds = %1404, %1401
  %1406 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1407 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1406, i32 0, i32 2
  %1408 = load double, ptr %1407, align 16, !tbaa !14
  %1409 = fsub double %1408, 2.000000e-02
  %1410 = fcmp ole double 0.000000e+00, %1409
  br i1 %1410, label %1411, label %1416

1411:                                             ; preds = %1405
  %1412 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1413 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1412, i32 0, i32 2
  %1414 = load double, ptr %1413, align 16, !tbaa !14
  %1415 = fsub double %1414, 2.000000e-02
  br label %1422

1416:                                             ; preds = %1405
  %1417 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1418 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1417, i32 0, i32 2
  %1419 = load double, ptr %1418, align 16, !tbaa !14
  %1420 = fsub double %1419, 2.000000e-02
  %1421 = fneg double %1420
  br label %1422

1422:                                             ; preds = %1416, %1411
  %1423 = phi double [ %1415, %1411 ], [ %1421, %1416 ]
  %1424 = fcmp olt double 0x3E7AD7F29ABCAF48, %1423
  br i1 %1424, label %1425, label %1426

1425:                                             ; preds = %1422
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1426

1426:                                             ; preds = %1425, %1422
  %1427 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1428 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1427, i32 0, i32 3
  %1429 = load double, ptr %1428, align 8, !tbaa !15
  %1430 = fsub double %1429, 1.000000e+00
  %1431 = fcmp ole double 0.000000e+00, %1430
  br i1 %1431, label %1432, label %1437

1432:                                             ; preds = %1426
  %1433 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1434 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1433, i32 0, i32 3
  %1435 = load double, ptr %1434, align 8, !tbaa !15
  %1436 = fsub double %1435, 1.000000e+00
  br label %1443

1437:                                             ; preds = %1426
  %1438 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1439 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1438, i32 0, i32 3
  %1440 = load double, ptr %1439, align 8, !tbaa !15
  %1441 = fsub double %1440, 1.000000e+00
  %1442 = fneg double %1441
  br label %1443

1443:                                             ; preds = %1437, %1432
  %1444 = phi double [ %1436, %1432 ], [ %1442, %1437 ]
  %1445 = fcmp olt double 0x3E7AD7F29ABCAF48, %1444
  br i1 %1445, label %1446, label %1447

1446:                                             ; preds = %1443
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1447

1447:                                             ; preds = %1446, %1443
  %1448 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1449 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1448, i32 0, i32 4
  %1450 = load double, ptr %1449, align 16, !tbaa !16
  %1451 = fsub double %1450, 1.000000e+00
  %1452 = fcmp ole double 0.000000e+00, %1451
  br i1 %1452, label %1453, label %1458

1453:                                             ; preds = %1447
  %1454 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1455 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1454, i32 0, i32 4
  %1456 = load double, ptr %1455, align 16, !tbaa !16
  %1457 = fsub double %1456, 1.000000e+00
  br label %1464

1458:                                             ; preds = %1447
  %1459 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1460 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1459, i32 0, i32 4
  %1461 = load double, ptr %1460, align 16, !tbaa !16
  %1462 = fsub double %1461, 1.000000e+00
  %1463 = fneg double %1462
  br label %1464

1464:                                             ; preds = %1458, %1453
  %1465 = phi double [ %1457, %1453 ], [ %1463, %1458 ]
  %1466 = fcmp olt double 0x3E7AD7F29ABCAF48, %1465
  br i1 %1466, label %1467, label %1468

1467:                                             ; preds = %1464
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1468

1468:                                             ; preds = %1467, %1464
  %1469 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1470 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1469, i32 0, i32 7
  %1471 = load double, ptr %1470, align 8, !tbaa !17
  %1472 = fsub double %1471, 2.449490e-02
  %1473 = fcmp ole double 0.000000e+00, %1472
  br i1 %1473, label %1474, label %1479

1474:                                             ; preds = %1468
  %1475 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1476 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1475, i32 0, i32 7
  %1477 = load double, ptr %1476, align 8, !tbaa !17
  %1478 = fsub double %1477, 2.449490e-02
  br label %1485

1479:                                             ; preds = %1468
  %1480 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1481 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1480, i32 0, i32 7
  %1482 = load double, ptr %1481, align 8, !tbaa !17
  %1483 = fsub double %1482, 2.449490e-02
  %1484 = fneg double %1483
  br label %1485

1485:                                             ; preds = %1479, %1474
  %1486 = phi double [ %1478, %1474 ], [ %1484, %1479 ]
  %1487 = fcmp olt double 0x3E7AD7F29ABCAF48, %1486
  br i1 %1487, label %1488, label %1489

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

1489:                                             ; preds = %1488, %1485
  %1490 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1491 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1490, i32 0, i32 8
  %1492 = load double, ptr %1491, align 16, !tbaa !18
  %1493 = fsub double %1492, 0x3FFBB67AE6502B91
  %1494 = fcmp ole double 0.000000e+00, %1493
  br i1 %1494, label %1495, label %1500

1495:                                             ; preds = %1489
  %1496 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1497 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1496, i32 0, i32 8
  %1498 = load double, ptr %1497, align 16, !tbaa !18
  %1499 = fsub double %1498, 0x3FFBB67AE6502B91
  br label %1506

1500:                                             ; preds = %1489
  %1501 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1502 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1501, i32 0, i32 8
  %1503 = load double, ptr %1502, align 16, !tbaa !18
  %1504 = fsub double %1503, 0x3FFBB67AE6502B91
  %1505 = fneg double %1504
  br label %1506

1506:                                             ; preds = %1500, %1495
  %1507 = phi double [ %1499, %1495 ], [ %1505, %1500 ]
  %1508 = fcmp olt double 0x3E7AD7F29ABCAF48, %1507
  br i1 %1508, label %1509, label %1510

1509:                                             ; preds = %1506
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1510

1510:                                             ; preds = %1509, %1506
  %1511 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1512 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1511, i32 0, i32 10
  %1513 = load double, ptr %1512, align 16, !tbaa !19
  %1514 = fsub double %1513, 4.000000e-02
  %1515 = fcmp ole double 0.000000e+00, %1514
  br i1 %1515, label %1516, label %1521

1516:                                             ; preds = %1510
  %1517 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1518 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1517, i32 0, i32 10
  %1519 = load double, ptr %1518, align 16, !tbaa !19
  %1520 = fsub double %1519, 4.000000e-02
  br label %1527

1521:                                             ; preds = %1510
  %1522 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1523 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1522, i32 0, i32 10
  %1524 = load double, ptr %1523, align 16, !tbaa !19
  %1525 = fsub double %1524, 4.000000e-02
  %1526 = fneg double %1525
  br label %1527

1527:                                             ; preds = %1521, %1516
  %1528 = phi double [ %1520, %1516 ], [ %1526, %1521 ]
  %1529 = fcmp olt double 0x3E7AD7F29ABCAF48, %1528
  br i1 %1529, label %1530, label %1531

1530:                                             ; preds = %1527
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1531

1531:                                             ; preds = %1530, %1527
  %1532 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1533 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1532, i32 0, i32 15
  %1534 = load double, ptr %1533, align 8, !tbaa !20
  %1535 = fsub double %1534, 0.000000e+00
  %1536 = fcmp ole double 0.000000e+00, %1535
  br i1 %1536, label %1537, label %1542

1537:                                             ; preds = %1531
  %1538 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1539 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1538, i32 0, i32 15
  %1540 = load double, ptr %1539, align 8, !tbaa !20
  %1541 = fsub double %1540, 0.000000e+00
  br label %1548

1542:                                             ; preds = %1531
  %1543 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1544 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1543, i32 0, i32 15
  %1545 = load double, ptr %1544, align 8, !tbaa !20
  %1546 = fsub double %1545, 0.000000e+00
  %1547 = fneg double %1546
  br label %1548

1548:                                             ; preds = %1542, %1537
  %1549 = phi double [ %1541, %1537 ], [ %1547, %1542 ]
  %1550 = fcmp olt double 0x3E7AD7F29ABCAF48, %1549
  br i1 %1550, label %1551, label %1552

1551:                                             ; preds = %1548
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1552

1552:                                             ; preds = %1551, %1548
  %1553 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1554 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1553, i32 0, i32 5
  %1555 = load double, ptr %1554, align 8, !tbaa !21
  %1556 = fsub double %1555, 2.000000e-02
  %1557 = fcmp ole double 0.000000e+00, %1556
  br i1 %1557, label %1558, label %1563

1558:                                             ; preds = %1552
  %1559 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1560 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1559, i32 0, i32 5
  %1561 = load double, ptr %1560, align 8, !tbaa !21
  %1562 = fsub double %1561, 2.000000e-02
  br label %1569

1563:                                             ; preds = %1552
  %1564 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1565 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1564, i32 0, i32 5
  %1566 = load double, ptr %1565, align 8, !tbaa !21
  %1567 = fsub double %1566, 2.000000e-02
  %1568 = fneg double %1567
  br label %1569

1569:                                             ; preds = %1563, %1558
  %1570 = phi double [ %1562, %1558 ], [ %1568, %1563 ]
  %1571 = fcmp olt double 0x3E7AD7F29ABCAF48, %1570
  br i1 %1571, label %1572, label %1573

1572:                                             ; preds = %1569
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1573

1573:                                             ; preds = %1572, %1569
  %1574 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1575 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1574, i32 0, i32 6
  %1576 = load double, ptr %1575, align 16, !tbaa !22
  %1577 = fsub double %1576, 1.000000e+00
  %1578 = fcmp ole double 0.000000e+00, %1577
  br i1 %1578, label %1579, label %1584

1579:                                             ; preds = %1573
  %1580 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1581 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1580, i32 0, i32 6
  %1582 = load double, ptr %1581, align 16, !tbaa !22
  %1583 = fsub double %1582, 1.000000e+00
  br label %1590

1584:                                             ; preds = %1573
  %1585 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1586 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1585, i32 0, i32 6
  %1587 = load double, ptr %1586, align 16, !tbaa !22
  %1588 = fsub double %1587, 1.000000e+00
  %1589 = fneg double %1588
  br label %1590

1590:                                             ; preds = %1584, %1579
  %1591 = phi double [ %1583, %1579 ], [ %1589, %1584 ]
  %1592 = fcmp olt double 0x3E7AD7F29ABCAF48, %1591
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1590
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1594

1594:                                             ; preds = %1593, %1590
  %1595 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1596 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1595, i32 0, i32 9
  %1597 = load double, ptr %1596, align 8, !tbaa !23
  %1598 = fadd double %1597, 0.000000e+00
  %1599 = fcmp ole double 0.000000e+00, %1598
  br i1 %1599, label %1600, label %1605

1600:                                             ; preds = %1594
  %1601 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1602 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1601, i32 0, i32 9
  %1603 = load double, ptr %1602, align 8, !tbaa !23
  %1604 = fadd double %1603, 0.000000e+00
  br label %1611

1605:                                             ; preds = %1594
  %1606 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1607 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1606, i32 0, i32 9
  %1608 = load double, ptr %1607, align 8, !tbaa !23
  %1609 = fadd double %1608, 0.000000e+00
  %1610 = fneg double %1609
  br label %1611

1611:                                             ; preds = %1605, %1600
  %1612 = phi double [ %1604, %1600 ], [ %1610, %1605 ]
  %1613 = fcmp olt double 0x3E7AD7F29ABCAF48, %1612
  br i1 %1613, label %1614, label %1615

1614:                                             ; preds = %1611
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1615

1615:                                             ; preds = %1614, %1611
  %1616 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1617 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1616, i32 0, i32 22
  %1618 = load i32, ptr %1617, align 16, !tbaa !24
  %1619 = icmp ne i32 1, %1618
  br i1 %1619, label %1625, label %1620

1620:                                             ; preds = %1615
  %1621 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1622 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1621, i32 0, i32 23
  %1623 = load i32, ptr %1622, align 4, !tbaa !25
  %1624 = icmp ne i32 0, %1623
  br i1 %1624, label %1625, label %1626

1625:                                             ; preds = %1620, %1615
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1626

1626:                                             ; preds = %1625, %1620
  %1627 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1628 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1627, i32 0, i32 23
  %1629 = load i32, ptr %1628, align 4, !tbaa !25
  %1630 = mul nsw i32 3, %1629
  %1631 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1632 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1631, i32 0, i32 22
  %1633 = load i32, ptr %1632, align 16, !tbaa !24
  %1634 = add nsw i32 %1630, %1633
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1635
  %1637 = load double, ptr %1636, align 8, !tbaa !9
  %1638 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1639 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1638, i32 0, i32 20
  %1640 = load double, ptr %1639, align 16, !tbaa !26
  %1641 = fcmp une double %1637, %1640
  br i1 %1641, label %1642, label %1643

1642:                                             ; preds = %1626
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1643

1643:                                             ; preds = %1642, %1626
  %1644 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1645 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1644, i32 0, i32 23
  %1646 = load i32, ptr %1645, align 4, !tbaa !25
  %1647 = mul nsw i32 3, %1646
  %1648 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1649 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1648, i32 0, i32 22
  %1650 = load i32, ptr %1649, align 16, !tbaa !24
  %1651 = add nsw i32 %1647, %1650
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !9
  %1655 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 4
  %1656 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1655, i32 0, i32 21
  %1657 = load double, ptr %1656, align 8, !tbaa !27
  %1658 = fcmp une double %1654, %1657
  br i1 %1658, label %1659, label %1660

1659:                                             ; preds = %1643
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1660

1660:                                             ; preds = %1659, %1643
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %1661

1661:                                             ; preds = %1660, %1342
  %1662 = load i32, ptr %2, align 4, !tbaa !5
  %1663 = icmp eq i32 0, %1662
  br i1 %1663, label %1664, label %1670

1664:                                             ; preds = %1661
  %1665 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1666 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1665, i64 5
  %1667 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 0
  %1668 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 0
  %1669 = call i32 @libxsmm_matdiff(ptr noundef %1666, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef %1667, ptr noundef %1668, ptr noundef null, ptr noundef null)
  store i32 %1669, ptr %2, align 4, !tbaa !5
  br label %1670

1670:                                             ; preds = %1664, %1661
  %1671 = load i32, ptr %2, align 4, !tbaa !5
  %1672 = icmp eq i32 0, %1671
  br i1 %1672, label %1673, label %1957

1673:                                             ; preds = %1670
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %1674 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1675 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1674, i64 5
  %1676 = call double @libxsmm_matdiff_epsilon(ptr noundef %1675)
  store double %1676, ptr %16, align 8, !tbaa !9
  %1677 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 0
  %1678 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1677, i64 5
  call void @libxsmm_matdiff_reduce(ptr noundef %4, ptr noundef %1678)
  %1679 = load double, ptr %16, align 8, !tbaa !9
  %1680 = fsub double %1679, 0.000000e+00
  %1681 = fcmp ole double 0.000000e+00, %1680
  br i1 %1681, label %1682, label %1685

1682:                                             ; preds = %1673
  %1683 = load double, ptr %16, align 8, !tbaa !9
  %1684 = fsub double %1683, 0.000000e+00
  br label %1689

1685:                                             ; preds = %1673
  %1686 = load double, ptr %16, align 8, !tbaa !9
  %1687 = fsub double %1686, 0.000000e+00
  %1688 = fneg double %1687
  br label %1689

1689:                                             ; preds = %1685, %1682
  %1690 = phi double [ %1684, %1682 ], [ %1688, %1685 ]
  %1691 = fcmp olt double 0x3E7AD7F29ABCAF48, %1690
  br i1 %1691, label %1692, label %1693

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

1693:                                             ; preds = %1692, %1689
  %1694 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1695 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1694, i32 0, i32 0
  %1696 = load double, ptr %1695, align 16, !tbaa !11
  %1697 = fsub double %1696, 0.000000e+00
  %1698 = fcmp ole double 0.000000e+00, %1697
  br i1 %1698, label %1699, label %1704

1699:                                             ; preds = %1693
  %1700 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1701 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1700, i32 0, i32 0
  %1702 = load double, ptr %1701, align 16, !tbaa !11
  %1703 = fsub double %1702, 0.000000e+00
  br label %1710

1704:                                             ; preds = %1693
  %1705 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1706 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1705, i32 0, i32 0
  %1707 = load double, ptr %1706, align 16, !tbaa !11
  %1708 = fsub double %1707, 0.000000e+00
  %1709 = fneg double %1708
  br label %1710

1710:                                             ; preds = %1704, %1699
  %1711 = phi double [ %1703, %1699 ], [ %1709, %1704 ]
  %1712 = fcmp olt double 0x3E7AD7F29ABCAF48, %1711
  br i1 %1712, label %1713, label %1714

1713:                                             ; preds = %1710
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1714

1714:                                             ; preds = %1713, %1710
  %1715 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1716 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1715, i32 0, i32 1
  %1717 = load double, ptr %1716, align 8, !tbaa !13
  %1718 = fsub double %1717, 0.000000e+00
  %1719 = fcmp ole double 0.000000e+00, %1718
  br i1 %1719, label %1720, label %1725

1720:                                             ; preds = %1714
  %1721 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1722 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1721, i32 0, i32 1
  %1723 = load double, ptr %1722, align 8, !tbaa !13
  %1724 = fsub double %1723, 0.000000e+00
  br label %1731

1725:                                             ; preds = %1714
  %1726 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1727 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1726, i32 0, i32 1
  %1728 = load double, ptr %1727, align 8, !tbaa !13
  %1729 = fsub double %1728, 0.000000e+00
  %1730 = fneg double %1729
  br label %1731

1731:                                             ; preds = %1725, %1720
  %1732 = phi double [ %1724, %1720 ], [ %1730, %1725 ]
  %1733 = fcmp olt double 0x3E7AD7F29ABCAF48, %1732
  br i1 %1733, label %1734, label %1735

1734:                                             ; preds = %1731
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1735

1735:                                             ; preds = %1734, %1731
  %1736 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1737 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1736, i32 0, i32 2
  %1738 = load double, ptr %1737, align 16, !tbaa !14
  %1739 = fsub double %1738, 0.000000e+00
  %1740 = fcmp ole double 0.000000e+00, %1739
  br i1 %1740, label %1741, label %1746

1741:                                             ; preds = %1735
  %1742 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1743 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1742, i32 0, i32 2
  %1744 = load double, ptr %1743, align 16, !tbaa !14
  %1745 = fsub double %1744, 0.000000e+00
  br label %1752

1746:                                             ; preds = %1735
  %1747 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1748 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1747, i32 0, i32 2
  %1749 = load double, ptr %1748, align 16, !tbaa !14
  %1750 = fsub double %1749, 0.000000e+00
  %1751 = fneg double %1750
  br label %1752

1752:                                             ; preds = %1746, %1741
  %1753 = phi double [ %1745, %1741 ], [ %1751, %1746 ]
  %1754 = fcmp olt double 0x3E7AD7F29ABCAF48, %1753
  br i1 %1754, label %1755, label %1756

1755:                                             ; preds = %1752
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1756

1756:                                             ; preds = %1755, %1752
  %1757 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1758 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1757, i32 0, i32 3
  %1759 = load double, ptr %1758, align 8, !tbaa !15
  %1760 = fsub double %1759, 0.000000e+00
  %1761 = fcmp ole double 0.000000e+00, %1760
  br i1 %1761, label %1762, label %1767

1762:                                             ; preds = %1756
  %1763 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1764 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1763, i32 0, i32 3
  %1765 = load double, ptr %1764, align 8, !tbaa !15
  %1766 = fsub double %1765, 0.000000e+00
  br label %1773

1767:                                             ; preds = %1756
  %1768 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1769 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1768, i32 0, i32 3
  %1770 = load double, ptr %1769, align 8, !tbaa !15
  %1771 = fsub double %1770, 0.000000e+00
  %1772 = fneg double %1771
  br label %1773

1773:                                             ; preds = %1767, %1762
  %1774 = phi double [ %1766, %1762 ], [ %1772, %1767 ]
  %1775 = fcmp olt double 0x3E7AD7F29ABCAF48, %1774
  br i1 %1775, label %1776, label %1777

1776:                                             ; preds = %1773
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1777

1777:                                             ; preds = %1776, %1773
  %1778 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1779 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1778, i32 0, i32 4
  %1780 = load double, ptr %1779, align 16, !tbaa !16
  %1781 = fsub double %1780, 0.000000e+00
  %1782 = fcmp ole double 0.000000e+00, %1781
  br i1 %1782, label %1783, label %1788

1783:                                             ; preds = %1777
  %1784 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1785 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1784, i32 0, i32 4
  %1786 = load double, ptr %1785, align 16, !tbaa !16
  %1787 = fsub double %1786, 0.000000e+00
  br label %1794

1788:                                             ; preds = %1777
  %1789 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1790 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1789, i32 0, i32 4
  %1791 = load double, ptr %1790, align 16, !tbaa !16
  %1792 = fsub double %1791, 0.000000e+00
  %1793 = fneg double %1792
  br label %1794

1794:                                             ; preds = %1788, %1783
  %1795 = phi double [ %1787, %1783 ], [ %1793, %1788 ]
  %1796 = fcmp olt double 0x3E7AD7F29ABCAF48, %1795
  br i1 %1796, label %1797, label %1798

1797:                                             ; preds = %1794
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1798

1798:                                             ; preds = %1797, %1794
  %1799 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1800 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1799, i32 0, i32 7
  %1801 = load double, ptr %1800, align 8, !tbaa !17
  %1802 = fsub double %1801, 0.000000e+00
  %1803 = fcmp ole double 0.000000e+00, %1802
  br i1 %1803, label %1804, label %1809

1804:                                             ; preds = %1798
  %1805 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1806 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1805, i32 0, i32 7
  %1807 = load double, ptr %1806, align 8, !tbaa !17
  %1808 = fsub double %1807, 0.000000e+00
  br label %1815

1809:                                             ; preds = %1798
  %1810 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1811 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1810, i32 0, i32 7
  %1812 = load double, ptr %1811, align 8, !tbaa !17
  %1813 = fsub double %1812, 0.000000e+00
  %1814 = fneg double %1813
  br label %1815

1815:                                             ; preds = %1809, %1804
  %1816 = phi double [ %1808, %1804 ], [ %1814, %1809 ]
  %1817 = fcmp olt double 0x3E7AD7F29ABCAF48, %1816
  br i1 %1817, label %1818, label %1819

1818:                                             ; preds = %1815
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1819

1819:                                             ; preds = %1818, %1815
  %1820 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1821 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1820, i32 0, i32 8
  %1822 = load double, ptr %1821, align 16, !tbaa !18
  %1823 = fsub double %1822, 0.000000e+00
  %1824 = fcmp ole double 0.000000e+00, %1823
  br i1 %1824, label %1825, label %1830

1825:                                             ; preds = %1819
  %1826 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1827 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1826, i32 0, i32 8
  %1828 = load double, ptr %1827, align 16, !tbaa !18
  %1829 = fsub double %1828, 0.000000e+00
  br label %1836

1830:                                             ; preds = %1819
  %1831 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1832 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1831, i32 0, i32 8
  %1833 = load double, ptr %1832, align 16, !tbaa !18
  %1834 = fsub double %1833, 0.000000e+00
  %1835 = fneg double %1834
  br label %1836

1836:                                             ; preds = %1830, %1825
  %1837 = phi double [ %1829, %1825 ], [ %1835, %1830 ]
  %1838 = fcmp olt double 0x3E7AD7F29ABCAF48, %1837
  br i1 %1838, label %1839, label %1840

1839:                                             ; preds = %1836
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1840

1840:                                             ; preds = %1839, %1836
  %1841 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1842 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1841, i32 0, i32 10
  %1843 = load double, ptr %1842, align 16, !tbaa !19
  %1844 = fsub double %1843, 0.000000e+00
  %1845 = fcmp ole double 0.000000e+00, %1844
  br i1 %1845, label %1846, label %1851

1846:                                             ; preds = %1840
  %1847 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1848 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1847, i32 0, i32 10
  %1849 = load double, ptr %1848, align 16, !tbaa !19
  %1850 = fsub double %1849, 0.000000e+00
  br label %1857

1851:                                             ; preds = %1840
  %1852 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1853 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1852, i32 0, i32 10
  %1854 = load double, ptr %1853, align 16, !tbaa !19
  %1855 = fsub double %1854, 0.000000e+00
  %1856 = fneg double %1855
  br label %1857

1857:                                             ; preds = %1851, %1846
  %1858 = phi double [ %1850, %1846 ], [ %1856, %1851 ]
  %1859 = fcmp olt double 0x3E7AD7F29ABCAF48, %1858
  br i1 %1859, label %1860, label %1861

1860:                                             ; preds = %1857
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1861

1861:                                             ; preds = %1860, %1857
  %1862 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1863 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1862, i32 0, i32 15
  %1864 = load double, ptr %1863, align 8, !tbaa !20
  %1865 = fsub double %1864, 0.000000e+00
  %1866 = fcmp ole double 0.000000e+00, %1865
  br i1 %1866, label %1867, label %1872

1867:                                             ; preds = %1861
  %1868 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1869 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1868, i32 0, i32 15
  %1870 = load double, ptr %1869, align 8, !tbaa !20
  %1871 = fsub double %1870, 0.000000e+00
  br label %1878

1872:                                             ; preds = %1861
  %1873 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1874 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1873, i32 0, i32 15
  %1875 = load double, ptr %1874, align 8, !tbaa !20
  %1876 = fsub double %1875, 0.000000e+00
  %1877 = fneg double %1876
  br label %1878

1878:                                             ; preds = %1872, %1867
  %1879 = phi double [ %1871, %1867 ], [ %1877, %1872 ]
  %1880 = fcmp olt double 0x3E7AD7F29ABCAF48, %1879
  br i1 %1880, label %1881, label %1882

1881:                                             ; preds = %1878
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1882

1882:                                             ; preds = %1881, %1878
  %1883 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1884 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1883, i32 0, i32 5
  %1885 = load double, ptr %1884, align 8, !tbaa !21
  %1886 = fsub double %1885, 0.000000e+00
  %1887 = fcmp ole double 0.000000e+00, %1886
  br i1 %1887, label %1888, label %1893

1888:                                             ; preds = %1882
  %1889 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1890 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1889, i32 0, i32 5
  %1891 = load double, ptr %1890, align 8, !tbaa !21
  %1892 = fsub double %1891, 0.000000e+00
  br label %1899

1893:                                             ; preds = %1882
  %1894 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1895 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1894, i32 0, i32 5
  %1896 = load double, ptr %1895, align 8, !tbaa !21
  %1897 = fsub double %1896, 0.000000e+00
  %1898 = fneg double %1897
  br label %1899

1899:                                             ; preds = %1893, %1888
  %1900 = phi double [ %1892, %1888 ], [ %1898, %1893 ]
  %1901 = fcmp olt double 0x3E7AD7F29ABCAF48, %1900
  br i1 %1901, label %1902, label %1903

1902:                                             ; preds = %1899
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1903

1903:                                             ; preds = %1902, %1899
  %1904 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1905 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1904, i32 0, i32 6
  %1906 = load double, ptr %1905, align 16, !tbaa !22
  %1907 = fsub double %1906, 0.000000e+00
  %1908 = fcmp ole double 0.000000e+00, %1907
  br i1 %1908, label %1909, label %1914

1909:                                             ; preds = %1903
  %1910 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1911 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1910, i32 0, i32 6
  %1912 = load double, ptr %1911, align 16, !tbaa !22
  %1913 = fsub double %1912, 0.000000e+00
  br label %1920

1914:                                             ; preds = %1903
  %1915 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1916 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1915, i32 0, i32 6
  %1917 = load double, ptr %1916, align 16, !tbaa !22
  %1918 = fsub double %1917, 0.000000e+00
  %1919 = fneg double %1918
  br label %1920

1920:                                             ; preds = %1914, %1909
  %1921 = phi double [ %1913, %1909 ], [ %1919, %1914 ]
  %1922 = fcmp olt double 0x3E7AD7F29ABCAF48, %1921
  br i1 %1922, label %1923, label %1924

1923:                                             ; preds = %1920
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1924

1924:                                             ; preds = %1923, %1920
  %1925 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1926 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1925, i32 0, i32 9
  %1927 = load double, ptr %1926, align 8, !tbaa !23
  %1928 = fsub double %1927, 1.000000e+00
  %1929 = fcmp ole double 0.000000e+00, %1928
  br i1 %1929, label %1930, label %1935

1930:                                             ; preds = %1924
  %1931 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1932 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1931, i32 0, i32 9
  %1933 = load double, ptr %1932, align 8, !tbaa !23
  %1934 = fsub double %1933, 1.000000e+00
  br label %1941

1935:                                             ; preds = %1924
  %1936 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1937 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1936, i32 0, i32 9
  %1938 = load double, ptr %1937, align 8, !tbaa !23
  %1939 = fsub double %1938, 1.000000e+00
  %1940 = fneg double %1939
  br label %1941

1941:                                             ; preds = %1935, %1930
  %1942 = phi double [ %1934, %1930 ], [ %1940, %1935 ]
  %1943 = fcmp olt double 0x3E7AD7F29ABCAF48, %1942
  br i1 %1943, label %1944, label %1945

1944:                                             ; preds = %1941
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1945

1945:                                             ; preds = %1944, %1941
  %1946 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1947 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1946, i32 0, i32 22
  %1948 = load i32, ptr %1947, align 16, !tbaa !24
  %1949 = icmp ne i32 -1, %1948
  br i1 %1949, label %1955, label %1950

1950:                                             ; preds = %1945
  %1951 = getelementptr inbounds [6 x %struct.libxsmm_matdiff_info], ptr %3, i64 0, i64 5
  %1952 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %1951, i32 0, i32 23
  %1953 = load i32, ptr %1952, align 4, !tbaa !25
  %1954 = icmp ne i32 -1, %1953
  br i1 %1954, label %1955, label %1956

1955:                                             ; preds = %1950, %1945
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1956

1956:                                             ; preds = %1955, %1950
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %1957

1957:                                             ; preds = %1956, %1670
  %1958 = load i32, ptr %2, align 4, !tbaa !5
  %1959 = icmp eq i32 0, %1958
  br i1 %1959, label %1960, label %2230

1960:                                             ; preds = %1957
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %1961 = call double @libxsmm_matdiff_epsilon(ptr noundef %4)
  store double %1961, ptr %17, align 8, !tbaa !9
  %1962 = load double, ptr %17, align 8, !tbaa !9
  %1963 = fsub double %1962, 0x3FBCFF5ABE927766
  %1964 = fcmp ole double 0.000000e+00, %1963
  br i1 %1964, label %1965, label %1968

1965:                                             ; preds = %1960
  %1966 = load double, ptr %17, align 8, !tbaa !9
  %1967 = fsub double %1966, 0x3FBCFF5ABE927766
  br label %1972

1968:                                             ; preds = %1960
  %1969 = load double, ptr %17, align 8, !tbaa !9
  %1970 = fsub double %1969, 0x3FBCFF5ABE927766
  %1971 = fneg double %1970
  br label %1972

1972:                                             ; preds = %1968, %1965
  %1973 = phi double [ %1967, %1965 ], [ %1971, %1968 ]
  %1974 = fcmp olt double 0x3E7AD7F29ABCAF48, %1973
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1972
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1976

1976:                                             ; preds = %1975, %1972
  %1977 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 0
  %1978 = load double, ptr %1977, align 8, !tbaa !11
  %1979 = fsub double %1978, 3.100000e+00
  %1980 = fcmp ole double 0.000000e+00, %1979
  br i1 %1980, label %1981, label %1985

1981:                                             ; preds = %1976
  %1982 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 0
  %1983 = load double, ptr %1982, align 8, !tbaa !11
  %1984 = fsub double %1983, 3.100000e+00
  br label %1990

1985:                                             ; preds = %1976
  %1986 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 0
  %1987 = load double, ptr %1986, align 8, !tbaa !11
  %1988 = fsub double %1987, 3.100000e+00
  %1989 = fneg double %1988
  br label %1990

1990:                                             ; preds = %1985, %1981
  %1991 = phi double [ %1984, %1981 ], [ %1989, %1985 ]
  %1992 = fcmp olt double 0x3E7AD7F29ABCAF48, %1991
  br i1 %1992, label %1993, label %1994

1993:                                             ; preds = %1990
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %1994

1994:                                             ; preds = %1993, %1990
  %1995 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 1
  %1996 = load double, ptr %1995, align 8, !tbaa !13
  %1997 = fsub double %1996, 2.818180e-02
  %1998 = fcmp ole double 0.000000e+00, %1997
  br i1 %1998, label %1999, label %2003

1999:                                             ; preds = %1994
  %2000 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 1
  %2001 = load double, ptr %2000, align 8, !tbaa !13
  %2002 = fsub double %2001, 2.818180e-02
  br label %2008

2003:                                             ; preds = %1994
  %2004 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 1
  %2005 = load double, ptr %2004, align 8, !tbaa !13
  %2006 = fsub double %2005, 2.818180e-02
  %2007 = fneg double %2006
  br label %2008

2008:                                             ; preds = %2003, %1999
  %2009 = phi double [ %2002, %1999 ], [ %2007, %2003 ]
  %2010 = fcmp olt double 0x3E7AD7F29ABCAF48, %2009
  br i1 %2010, label %2011, label %2012

2011:                                             ; preds = %2008
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2012

2012:                                             ; preds = %2011, %2008
  %2013 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 2
  %2014 = load double, ptr %2013, align 8, !tbaa !14
  %2015 = fsub double %2014, 2.440000e+00
  %2016 = fcmp ole double 0.000000e+00, %2015
  br i1 %2016, label %2017, label %2021

2017:                                             ; preds = %2012
  %2018 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 2
  %2019 = load double, ptr %2018, align 8, !tbaa !14
  %2020 = fsub double %2019, 2.440000e+00
  br label %2026

2021:                                             ; preds = %2012
  %2022 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 2
  %2023 = load double, ptr %2022, align 8, !tbaa !14
  %2024 = fsub double %2023, 2.440000e+00
  %2025 = fneg double %2024
  br label %2026

2026:                                             ; preds = %2021, %2017
  %2027 = phi double [ %2020, %2017 ], [ %2025, %2021 ]
  %2028 = fcmp olt double 2.000000e-07, %2027
  br i1 %2028, label %2029, label %2030

2029:                                             ; preds = %2026
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2030

2030:                                             ; preds = %2029, %2026
  %2031 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 3
  %2032 = load double, ptr %2031, align 8, !tbaa !15
  %2033 = fsub double %2032, 9.760000e-02
  %2034 = fcmp ole double 0.000000e+00, %2033
  br i1 %2034, label %2035, label %2039

2035:                                             ; preds = %2030
  %2036 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 3
  %2037 = load double, ptr %2036, align 8, !tbaa !15
  %2038 = fsub double %2037, 9.760000e-02
  br label %2044

2039:                                             ; preds = %2030
  %2040 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 3
  %2041 = load double, ptr %2040, align 8, !tbaa !15
  %2042 = fsub double %2041, 9.760000e-02
  %2043 = fneg double %2042
  br label %2044

2044:                                             ; preds = %2039, %2035
  %2045 = phi double [ %2038, %2035 ], [ %2043, %2039 ]
  %2046 = fcmp olt double 0x3E7AD7F29ABCAF48, %2045
  br i1 %2046, label %2047, label %2048

2047:                                             ; preds = %2044
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2048

2048:                                             ; preds = %2047, %2044
  %2049 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 4
  %2050 = load double, ptr %2049, align 8, !tbaa !16
  %2051 = fsub double %2050, 0x3FBB84D18B786EA7
  %2052 = fcmp ole double 0.000000e+00, %2051
  br i1 %2052, label %2053, label %2057

2053:                                             ; preds = %2048
  %2054 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 4
  %2055 = load double, ptr %2054, align 8, !tbaa !16
  %2056 = fsub double %2055, 0x3FBB84D18B786EA7
  br label %2062

2057:                                             ; preds = %2048
  %2058 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 4
  %2059 = load double, ptr %2058, align 8, !tbaa !16
  %2060 = fsub double %2059, 0x3FBB84D18B786EA7
  %2061 = fneg double %2060
  br label %2062

2062:                                             ; preds = %2057, %2053
  %2063 = phi double [ %2056, %2053 ], [ %2061, %2057 ]
  %2064 = fcmp olt double 0x3E7AD7F29ABCAF48, %2063
  br i1 %2064, label %2065, label %2066

2065:                                             ; preds = %2062
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2066

2066:                                             ; preds = %2065, %2062
  %2067 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 7
  %2068 = load double, ptr %2067, align 8, !tbaa !17
  %2069 = fsub double %2068, 0x4001E80B59D055EE
  %2070 = fcmp ole double 0.000000e+00, %2069
  br i1 %2070, label %2071, label %2075

2071:                                             ; preds = %2066
  %2072 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 7
  %2073 = load double, ptr %2072, align 8, !tbaa !17
  %2074 = fsub double %2073, 0x4001E80B59D055EE
  br label %2080

2075:                                             ; preds = %2066
  %2076 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 7
  %2077 = load double, ptr %2076, align 8, !tbaa !17
  %2078 = fsub double %2077, 0x4001E80B59D055EE
  %2079 = fneg double %2078
  br label %2080

2080:                                             ; preds = %2075, %2071
  %2081 = phi double [ %2074, %2071 ], [ %2079, %2075 ]
  %2082 = fcmp olt double 0x3E7AD7F29ABCAF48, %2081
  br i1 %2082, label %2083, label %2084

2083:                                             ; preds = %2080
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2084

2084:                                             ; preds = %2083, %2080
  %2085 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 8
  %2086 = load double, ptr %2085, align 8, !tbaa !18
  %2087 = fsub double %2086, 0x3FCF37D050E5CBA1
  %2088 = fcmp ole double 0.000000e+00, %2087
  br i1 %2088, label %2089, label %2093

2089:                                             ; preds = %2084
  %2090 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 8
  %2091 = load double, ptr %2090, align 8, !tbaa !18
  %2092 = fsub double %2091, 0x3FCF37D050E5CBA1
  br label %2098

2093:                                             ; preds = %2084
  %2094 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 8
  %2095 = load double, ptr %2094, align 8, !tbaa !18
  %2096 = fsub double %2095, 0x3FCF37D050E5CBA1
  %2097 = fneg double %2096
  br label %2098

2098:                                             ; preds = %2093, %2089
  %2099 = phi double [ %2092, %2089 ], [ %2097, %2093 ]
  %2100 = fcmp olt double 0x3E7AD7F29ABCAF48, %2099
  br i1 %2100, label %2101, label %2102

2101:                                             ; preds = %2098
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2102

2102:                                             ; preds = %2101, %2098
  %2103 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 10
  %2104 = load double, ptr %2103, align 8, !tbaa !19
  %2105 = fsub double %2104, 2.660000e+02
  %2106 = fcmp ole double 0.000000e+00, %2105
  br i1 %2106, label %2107, label %2111

2107:                                             ; preds = %2102
  %2108 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 10
  %2109 = load double, ptr %2108, align 8, !tbaa !19
  %2110 = fsub double %2109, 2.660000e+02
  br label %2116

2111:                                             ; preds = %2102
  %2112 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 10
  %2113 = load double, ptr %2112, align 8, !tbaa !19
  %2114 = fsub double %2113, 2.660000e+02
  %2115 = fneg double %2114
  br label %2116

2116:                                             ; preds = %2111, %2107
  %2117 = phi double [ %2110, %2107 ], [ %2115, %2111 ]
  %2118 = fcmp olt double 0x3E7AD7F29ABCAF48, %2117
  br i1 %2118, label %2119, label %2120

2119:                                             ; preds = %2116
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2120

2120:                                             ; preds = %2119, %2116
  %2121 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 15
  %2122 = load double, ptr %2121, align 8, !tbaa !20
  %2123 = fsub double %2122, 2.679000e+02
  %2124 = fcmp ole double 0.000000e+00, %2123
  br i1 %2124, label %2125, label %2129

2125:                                             ; preds = %2120
  %2126 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 15
  %2127 = load double, ptr %2126, align 8, !tbaa !20
  %2128 = fsub double %2127, 2.679000e+02
  br label %2134

2129:                                             ; preds = %2120
  %2130 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 15
  %2131 = load double, ptr %2130, align 8, !tbaa !20
  %2132 = fsub double %2131, 2.679000e+02
  %2133 = fneg double %2132
  br label %2134

2134:                                             ; preds = %2129, %2125
  %2135 = phi double [ %2128, %2125 ], [ %2133, %2129 ]
  %2136 = fcmp olt double 0x3EA77CF44765195F, %2135
  br i1 %2136, label %2137, label %2138

2137:                                             ; preds = %2134
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2138

2138:                                             ; preds = %2137, %2134
  %2139 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 5
  %2140 = load double, ptr %2139, align 8, !tbaa !21
  %2141 = fsub double %2140, 2.000000e+00
  %2142 = fcmp ole double 0.000000e+00, %2141
  br i1 %2142, label %2143, label %2147

2143:                                             ; preds = %2138
  %2144 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 5
  %2145 = load double, ptr %2144, align 8, !tbaa !21
  %2146 = fsub double %2145, 2.000000e+00
  br label %2152

2147:                                             ; preds = %2138
  %2148 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 5
  %2149 = load double, ptr %2148, align 8, !tbaa !21
  %2150 = fsub double %2149, 2.000000e+00
  %2151 = fneg double %2150
  br label %2152

2152:                                             ; preds = %2147, %2143
  %2153 = phi double [ %2146, %2143 ], [ %2151, %2147 ]
  %2154 = fcmp olt double 0x3E7AD7F29ABCAF48, %2153
  br i1 %2154, label %2155, label %2156

2155:                                             ; preds = %2152
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2156

2156:                                             ; preds = %2155, %2152
  %2157 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 6
  %2158 = load double, ptr %2157, align 8, !tbaa !22
  %2159 = fsub double %2158, 0x3FCC71C6ECB8FB5F
  %2160 = fcmp ole double 0.000000e+00, %2159
  br i1 %2160, label %2161, label %2165

2161:                                             ; preds = %2156
  %2162 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 6
  %2163 = load double, ptr %2162, align 8, !tbaa !22
  %2164 = fsub double %2163, 0x3FCC71C6ECB8FB5F
  br label %2170

2165:                                             ; preds = %2156
  %2166 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 6
  %2167 = load double, ptr %2166, align 8, !tbaa !22
  %2168 = fsub double %2167, 0x3FCC71C6ECB8FB5F
  %2169 = fneg double %2168
  br label %2170

2170:                                             ; preds = %2165, %2161
  %2171 = phi double [ %2164, %2161 ], [ %2169, %2165 ]
  %2172 = fcmp olt double 0x3E7AD7F29ABCAF48, %2171
  br i1 %2172, label %2173, label %2174

2173:                                             ; preds = %2170
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2174

2174:                                             ; preds = %2173, %2170
  %2175 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 9
  %2176 = load double, ptr %2175, align 8, !tbaa !23
  %2177 = fsub double %2176, 0x3FEE5E456564DEA7
  %2178 = fcmp ole double 0.000000e+00, %2177
  br i1 %2178, label %2179, label %2183

2179:                                             ; preds = %2174
  %2180 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 9
  %2181 = load double, ptr %2180, align 8, !tbaa !23
  %2182 = fsub double %2181, 0x3FEE5E456564DEA7
  br label %2188

2183:                                             ; preds = %2174
  %2184 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 9
  %2185 = load double, ptr %2184, align 8, !tbaa !23
  %2186 = fsub double %2185, 0x3FEE5E456564DEA7
  %2187 = fneg double %2186
  br label %2188

2188:                                             ; preds = %2183, %2179
  %2189 = phi double [ %2182, %2179 ], [ %2187, %2183 ]
  %2190 = fcmp olt double 0x3E7AD7F29ABCAF48, %2189
  br i1 %2190, label %2191, label %2192

2191:                                             ; preds = %2188
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2192

2192:                                             ; preds = %2191, %2188
  %2193 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 22
  %2194 = load i32, ptr %2193, align 8, !tbaa !24
  %2195 = icmp ne i32 2, %2194
  br i1 %2195, label %2200, label %2196

2196:                                             ; preds = %2192
  %2197 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 23
  %2198 = load i32, ptr %2197, align 4, !tbaa !25
  %2199 = icmp ne i32 2, %2198
  br i1 %2199, label %2200, label %2201

2200:                                             ; preds = %2196, %2192
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2201

2201:                                             ; preds = %2200, %2196
  %2202 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 22
  %2203 = load i32, ptr %2202, align 8, !tbaa !24
  %2204 = mul nsw i32 3, %2203
  %2205 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 23
  %2206 = load i32, ptr %2205, align 4, !tbaa !25
  %2207 = add nsw i32 %2204, %2206
  %2208 = sext i32 %2207 to i64
  %2209 = getelementptr inbounds [9 x double], ptr %5, i64 0, i64 %2208
  %2210 = load double, ptr %2209, align 8, !tbaa !9
  %2211 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 20
  %2212 = load double, ptr %2211, align 8, !tbaa !26
  %2213 = fcmp une double %2210, %2212
  br i1 %2213, label %2214, label %2215

2214:                                             ; preds = %2201
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2215

2215:                                             ; preds = %2214, %2201
  %2216 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 22
  %2217 = load i32, ptr %2216, align 8, !tbaa !24
  %2218 = mul nsw i32 3, %2217
  %2219 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 23
  %2220 = load i32, ptr %2219, align 4, !tbaa !25
  %2221 = add nsw i32 %2218, %2220
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds [9 x double], ptr %6, i64 0, i64 %2222
  %2224 = load double, ptr %2223, align 8, !tbaa !9
  %2225 = getelementptr inbounds %struct.libxsmm_matdiff_info, ptr %4, i32 0, i32 21
  %2226 = load double, ptr %2225, align 8, !tbaa !27
  %2227 = fcmp une double %2224, %2226
  br i1 %2227, label %2228, label %2229

2228:                                             ; preds = %2215
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %2229

2229:                                             ; preds = %2228, %2215
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %2230

2230:                                             ; preds = %2229, %1957
  %2231 = load i32, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 192, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 1152, ptr %3) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #5
  ret i32 %2231
}

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @libxsmm_matdiff_epsilon(ptr noundef) #4

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"libxsmm_matdiff_info", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188}
!13 = !{!12, !10, i64 8}
!14 = !{!12, !10, i64 16}
!15 = !{!12, !10, i64 24}
!16 = !{!12, !10, i64 32}
!17 = !{!12, !10, i64 56}
!18 = !{!12, !10, i64 64}
!19 = !{!12, !10, i64 80}
!20 = !{!12, !10, i64 120}
!21 = !{!12, !10, i64 40}
!22 = !{!12, !10, i64 48}
!23 = !{!12, !10, i64 72}
!24 = !{!12, !6, i64 176}
!25 = !{!12, !6, i64 180}
!26 = !{!12, !10, i64 160}
!27 = !{!12, !10, i64 168}


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

@__const.main.a = external hidden unnamed_addr constant [9 x double], align 16
@__const.main.b = external hidden unnamed_addr constant [9 x double], align 16
@__const.main.x = external hidden unnamed_addr constant [3 x double], align 16
@__const.main.y = external hidden unnamed_addr constant [3 x double], align 16
@__const.main.t = external hidden unnamed_addr constant [3 x double], align 16

; Function Attrs: nounwind uwtable
define dso_local i32 @main() local_unnamed_addr #0 {
  %1 = alloca [6 x %struct.libxsmm_matdiff_info], align 16
  %2 = alloca %struct.libxsmm_matdiff_info, align 8
  %3 = alloca [9 x double], align 16
  %4 = alloca [9 x double], align 16
  %5 = alloca [3 x double], align 16
  %6 = alloca [3 x double], align 16
  %7 = alloca [3 x double], align 16
  %8 = alloca [3 x double], align 16
  call void @llvm.lifetime.start.p0(i64 1152, ptr nonnull %1) #5
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %2) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %3) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) %3, ptr noundef nonnull align 16 dereferenceable(72) @__const.main.a, i64 72, i1 false)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) %4, ptr noundef nonnull align 16 dereferenceable(72) @__const.main.b, i64 72, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %5, ptr noundef nonnull align 16 dereferenceable(24) @__const.main.x, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %6, ptr noundef nonnull align 16 dereferenceable(24) @__const.main.y, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %8, ptr noundef nonnull align 16 dereferenceable(24) @__const.main.t, i64 24, i1 false)
  call void @libxsmm_matdiff_clear(ptr noundef nonnull %2)
  %9 = call i32 @libxsmm_matdiff(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 3, i32 noundef 3, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef null, ptr noundef null)
  %10 = icmp eq i32 %9, 0
  br i1 %10, label %11, label %.thread277

11:                                               ; preds = %0
  %12 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %1)
  call void @libxsmm_matdiff_reduce(ptr noundef nonnull %2, ptr noundef nonnull %1)
  %13 = fadd double %12, 0xBFBCFF5ABE927766
  %14 = fcmp ult double %13, 0.000000e+00
  %15 = fneg double %13
  %16 = select i1 %14, double %15, double %13
  %.fr457 = freeze double %16
  %17 = fcmp ule double %.fr457, 0x3E7AD7F29ABCAF48
  %18 = load <4 x double>, ptr %1, align 16, !tbaa !5
  %19 = fadd <4 x double> %18, <double -1.830000e+00, double 0xBFB8A826FB168C33, double -2.440000e+00, double -9.760000e-02>
  %20 = fcmp ult <4 x double> %19, zeroinitializer
  %21 = fneg <4 x double> %19
  %22 = select <4 x i1> %20, <4 x double> %21, <4 x double> %19
  %.fr454 = freeze <4 x double> %22
  %23 = getelementptr inbounds i8, ptr %1, i64 32
  %24 = load double, ptr %23, align 16, !tbaa !9
  %25 = getelementptr inbounds i8, ptr %1, i64 56
  %26 = load <2 x double>, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %1, i64 80
  %28 = load double, ptr %27, align 16, !tbaa !12
  %29 = getelementptr inbounds i8, ptr %1, i64 120
  %30 = load double, ptr %29, align 8, !tbaa !13
  %31 = getelementptr inbounds i8, ptr %1, i64 40
  %32 = load double, ptr %31, align 8, !tbaa !14
  %33 = getelementptr inbounds i8, ptr %1, i64 48
  %34 = load double, ptr %33, align 16, !tbaa !15
  %35 = getelementptr inbounds i8, ptr %1, i64 72
  %36 = load <2 x double>, ptr %35, align 8
  %37 = shufflevector <2 x double> %36, <2 x double> poison, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %38 = insertelement <8 x double> %37, double %34, i64 1
  %39 = insertelement <8 x double> %38, double %32, i64 2
  %40 = insertelement <8 x double> %39, double %30, i64 3
  %41 = insertelement <8 x double> %40, double %28, i64 4
  %42 = shufflevector <2 x double> %26, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %43 = shufflevector <8 x double> %41, <8 x double> %42, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %44 = insertelement <8 x double> %43, double %24, i64 7
  %45 = fadd <8 x double> %44, <double 0xBFEE5E456564DEA7, double -5.600000e-01, double -9.300000e-01, double -4.566000e+01, double -4.600000e+01, double 0xBFE5862E4D1A6506, double 0xBFFDFCE9E5E24788, double 0xBFBB84D18B786EA7>
  %46 = fcmp ult <8 x double> %45, zeroinitializer
  %47 = fneg <8 x double> %45
  %48 = select <8 x i1> %46, <8 x double> %47, <8 x double> %45
  %.fr = freeze <8 x double> %48
  %49 = getelementptr inbounds i8, ptr %1, i64 176
  %50 = load i32, ptr %49, align 16, !tbaa !16
  %.fr455 = freeze i32 %50
  %51 = icmp eq i32 %.fr455, 2
  %52 = getelementptr inbounds i8, ptr %1, i64 180
  %53 = load i32, ptr %52, align 4
  %54 = icmp eq i32 %53, 2
  %55 = mul nsw i32 %.fr455, 3
  %56 = add nsw i32 %55, %53
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds [9 x double], ptr %3, i64 0, i64 %57
  %59 = load double, ptr %58, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %1, i64 160
  %61 = load double, ptr %60, align 16, !tbaa !17
  %62 = fcmp oeq double %59, %61
  %63 = getelementptr inbounds [9 x double], ptr %4, i64 0, i64 %57
  %64 = load double, ptr %63, align 8, !tbaa !5
  %65 = getelementptr inbounds i8, ptr %1, i64 168
  %66 = load double, ptr %65, align 8, !tbaa !18
  %67 = fcmp oeq double %64, %66
  %68 = fcmp ogt <8 x double> %.fr, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 4.000000e-07, double 0x3EA77CF44765195F, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 2.000000e-07, double 0x3E7AD7F29ABCAF48>
  %69 = bitcast <8 x i1> %68 to i8
  %70 = icmp eq i8 %69, 0
  %71 = fcmp ogt <4 x double> %.fr454, <double 3.000000e-07, double 0x3E7AD7F29ABCAF48, double 2.000000e-07, double 0x3E7AD7F29ABCAF48>
  %72 = bitcast <4 x i1> %71 to i4
  %73 = icmp eq i4 %72, 0
  %op.rdx448 = and i1 %70, %73
  %op.rdx449 = and i1 %op.rdx448, %17
  %op.rdx451 = and i1 %51, %54
  %74 = select i1 %op.rdx449, i1 %67, i1 false
  %op.rdx452 = select i1 %74, i1 %62, i1 false
  %75 = freeze i1 %op.rdx452
  %op.rdx453 = and i1 %75, %op.rdx451
  br i1 %op.rdx453, label %76, label %.thread277

76:                                               ; preds = %11
  %77 = getelementptr inbounds i8, ptr %1, i64 192
  %78 = call i32 @libxsmm_matdiff(ptr noundef nonnull %77, i32 noundef 0, i32 noundef 1, i32 noundef 3, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef null, ptr noundef null)
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %.thread277

80:                                               ; preds = %76
  %81 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %77)
  call void @libxsmm_matdiff_reduce(ptr noundef nonnull %2, ptr noundef nonnull %77)
  %82 = fadd double %81, -2.231030e-02
  %83 = fcmp ult double %82, 0.000000e+00
  %84 = fneg double %82
  %85 = select i1 %83, double %84, double %82
  %.fr462 = freeze double %85
  %86 = fcmp ule double %.fr462, 0x3E7AD7F29ABCAF48
  %87 = load <4 x double>, ptr %77, align 16, !tbaa !5
  %88 = fadd <4 x double> %87, <double -3.100000e+00, double -2.818180e-02, double -2.000000e+00, double -2.000000e-02>
  %89 = fcmp ult <4 x double> %88, zeroinitializer
  %90 = fneg <4 x double> %88
  %91 = select <4 x i1> %89, <4 x double> %90, <4 x double> %88
  %.fr459 = freeze <4 x double> %91
  %92 = getelementptr inbounds i8, ptr %1, i64 224
  %93 = load double, ptr %92, align 16, !tbaa !9
  %94 = getelementptr inbounds i8, ptr %1, i64 248
  %95 = load <2 x double>, ptr %94, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %1, i64 272
  %97 = load double, ptr %96, align 16, !tbaa !12
  %98 = getelementptr inbounds i8, ptr %1, i64 312
  %99 = load double, ptr %98, align 8, !tbaa !13
  %100 = getelementptr inbounds i8, ptr %1, i64 232
  %101 = load double, ptr %100, align 8, !tbaa !14
  %102 = getelementptr inbounds i8, ptr %1, i64 240
  %103 = load double, ptr %102, align 16, !tbaa !15
  %104 = getelementptr inbounds i8, ptr %1, i64 264
  %105 = load <2 x double>, ptr %104, align 8
  %106 = shufflevector <2 x double> %105, <2 x double> poison, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %107 = insertelement <8 x double> %106, double %103, i64 1
  %108 = insertelement <8 x double> %107, double %101, i64 2
  %109 = insertelement <8 x double> %108, double %99, i64 3
  %110 = insertelement <8 x double> %109, double %97, i64 4
  %111 = shufflevector <2 x double> %95, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %112 = shufflevector <8 x double> %110, <8 x double> %111, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %113 = insertelement <8 x double> %112, double %93, i64 7
  %114 = fadd <8 x double> %113, <double 0xBFEFF936EDD2D6D2, double 0xBFCC71C6ECB8FB5F, double -2.000000e+00, double -1.111000e+02, double -1.100000e+02, double 0xBFCF37D050E5CBA1, double 0xC001E80B59D055EE, double -2.229180e-02>
  %115 = fcmp ult <8 x double> %114, zeroinitializer
  %116 = fneg <8 x double> %114
  %117 = select <8 x i1> %115, <8 x double> %116, <8 x double> %114
  %.fr458 = freeze <8 x double> %117
  %118 = getelementptr inbounds i8, ptr %1, i64 368
  %119 = load i32, ptr %118, align 16, !tbaa !16
  %.fr460 = freeze i32 %119
  %120 = icmp eq i32 %.fr460, 0
  %121 = getelementptr inbounds i8, ptr %1, i64 372
  %122 = load i32, ptr %121, align 4
  %123 = icmp eq i32 %122, 2
  %124 = mul nsw i32 %.fr460, 3
  %125 = add nsw i32 %124, %122
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds [3 x double], ptr %5, i64 0, i64 %126
  %128 = load double, ptr %127, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %1, i64 352
  %130 = load double, ptr %129, align 16, !tbaa !17
  %131 = fcmp oeq double %128, %130
  %132 = getelementptr inbounds [3 x double], ptr %6, i64 0, i64 %126
  %133 = load double, ptr %132, align 8, !tbaa !5
  %134 = getelementptr inbounds i8, ptr %1, i64 360
  %135 = load double, ptr %134, align 8, !tbaa !18
  %136 = fcmp oeq double %133, %135
  %137 = fcmp ogt <8 x double> %.fr458, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %138 = bitcast <8 x i1> %137 to i8
  %139 = icmp eq i8 %138, 0
  %140 = fcmp ogt <4 x double> %.fr459, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %141 = bitcast <4 x i1> %140 to i4
  %142 = icmp eq i4 %141, 0
  %op.rdx442 = and i1 %139, %142
  %op.rdx443 = and i1 %op.rdx442, %86
  %op.rdx445 = and i1 %120, %123
  %143 = select i1 %op.rdx443, i1 %136, i1 false
  %op.rdx446 = select i1 %143, i1 %131, i1 false
  %144 = freeze i1 %op.rdx446
  %op.rdx447 = and i1 %144, %op.rdx445
  br i1 %op.rdx447, label %145, label %.thread277

145:                                              ; preds = %80
  %146 = getelementptr inbounds i8, ptr %1, i64 384
  %147 = call i32 @libxsmm_matdiff(ptr noundef nonnull %146, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef null, ptr noundef null)
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %.thread277

149:                                              ; preds = %145
  %150 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %146)
  call void @libxsmm_matdiff_reduce(ptr noundef nonnull %2, ptr noundef nonnull %146)
  %151 = fadd double %150, -2.231030e-02
  %152 = fcmp ult double %151, 0.000000e+00
  %153 = fneg double %151
  %154 = select i1 %152, double %153, double %151
  %.fr467 = freeze double %154
  %155 = fcmp ule double %.fr467, 0x3E7AD7F29ABCAF48
  %156 = load <4 x double>, ptr %146, align 16, !tbaa !5
  %157 = fadd <4 x double> %156, <double -3.100000e+00, double -2.818180e-02, double -2.000000e+00, double -2.000000e-02>
  %158 = fcmp ult <4 x double> %157, zeroinitializer
  %159 = fneg <4 x double> %157
  %160 = select <4 x i1> %158, <4 x double> %159, <4 x double> %157
  %.fr464 = freeze <4 x double> %160
  %161 = getelementptr inbounds i8, ptr %1, i64 416
  %162 = load double, ptr %161, align 16, !tbaa !9
  %163 = getelementptr inbounds i8, ptr %1, i64 440
  %164 = load <2 x double>, ptr %163, align 8, !tbaa !5
  %165 = getelementptr inbounds i8, ptr %1, i64 464
  %166 = load double, ptr %165, align 16, !tbaa !12
  %167 = getelementptr inbounds i8, ptr %1, i64 504
  %168 = load double, ptr %167, align 8, !tbaa !13
  %169 = getelementptr inbounds i8, ptr %1, i64 424
  %170 = load double, ptr %169, align 8, !tbaa !14
  %171 = getelementptr inbounds i8, ptr %1, i64 432
  %172 = load double, ptr %171, align 16, !tbaa !15
  %173 = getelementptr inbounds i8, ptr %1, i64 456
  %174 = load <2 x double>, ptr %173, align 8
  %175 = shufflevector <2 x double> %174, <2 x double> poison, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %176 = insertelement <8 x double> %175, double %172, i64 1
  %177 = insertelement <8 x double> %176, double %170, i64 2
  %178 = insertelement <8 x double> %177, double %168, i64 3
  %179 = insertelement <8 x double> %178, double %166, i64 4
  %180 = shufflevector <2 x double> %164, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %181 = shufflevector <8 x double> %179, <8 x double> %180, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %182 = insertelement <8 x double> %181, double %162, i64 7
  %183 = fadd <8 x double> %182, <double 0xBFEFF936EDD2D6D2, double 0xBFCC71C6ECB8FB5F, double -2.000000e+00, double -1.111000e+02, double -1.100000e+02, double 0xBFCF37D050E5CBA1, double 0xC001E80B59D055EE, double -2.229180e-02>
  %184 = fcmp ult <8 x double> %183, zeroinitializer
  %185 = fneg <8 x double> %183
  %186 = select <8 x i1> %184, <8 x double> %185, <8 x double> %183
  %.fr463 = freeze <8 x double> %186
  %187 = getelementptr inbounds i8, ptr %1, i64 560
  %188 = load i32, ptr %187, align 16, !tbaa !16
  %.fr465 = freeze i32 %188
  %189 = icmp eq i32 %.fr465, 2
  %190 = getelementptr inbounds i8, ptr %1, i64 564
  %191 = load i32, ptr %190, align 4
  %192 = icmp eq i32 %191, 0
  %193 = mul nsw i32 %191, 3
  %194 = add nsw i32 %193, %.fr465
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [3 x double], ptr %5, i64 0, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !5
  %198 = getelementptr inbounds i8, ptr %1, i64 544
  %199 = load double, ptr %198, align 16, !tbaa !17
  %200 = fcmp oeq double %197, %199
  %201 = getelementptr inbounds [3 x double], ptr %6, i64 0, i64 %195
  %202 = load double, ptr %201, align 8, !tbaa !5
  %203 = getelementptr inbounds i8, ptr %1, i64 552
  %204 = load double, ptr %203, align 8, !tbaa !18
  %205 = fcmp oeq double %202, %204
  %206 = fcmp ogt <8 x double> %.fr463, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %207 = bitcast <8 x i1> %206 to i8
  %208 = icmp eq i8 %207, 0
  %209 = fcmp ogt <4 x double> %.fr464, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %210 = bitcast <4 x i1> %209 to i4
  %211 = icmp eq i4 %210, 0
  %op.rdx436 = and i1 %208, %211
  %op.rdx437 = and i1 %op.rdx436, %155
  %op.rdx439 = and i1 %189, %192
  %212 = select i1 %op.rdx437, i1 %205, i1 false
  %op.rdx440 = select i1 %212, i1 %200, i1 false
  %213 = freeze i1 %op.rdx440
  %op.rdx441 = and i1 %213, %op.rdx439
  br i1 %op.rdx441, label %214, label %.thread277

214:                                              ; preds = %149
  %215 = getelementptr inbounds i8, ptr %1, i64 576
  %216 = call i32 @libxsmm_matdiff(ptr noundef nonnull %215, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef null, ptr noundef null)
  %217 = icmp eq i32 %216, 0
  br i1 %217, label %218, label %.thread277

218:                                              ; preds = %214
  %219 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %215)
  call void @libxsmm_matdiff_reduce(ptr noundef nonnull %2, ptr noundef nonnull %215)
  %220 = fadd double %219, -6.004000e-04
  %221 = fcmp ult double %220, 0.000000e+00
  %222 = fneg double %220
  %223 = select i1 %221, double %222, double %220
  %.fr472 = freeze double %223
  %224 = fcmp ule double %.fr472, 0x3E7AD7F29ABCAF48
  %225 = load <4 x double>, ptr %215, align 16, !tbaa !5
  %226 = fadd <4 x double> %225, <double -4.000000e-02, double -4.000000e-02, double -2.000000e-02, double -2.000000e-02>
  %227 = fcmp ult <4 x double> %226, zeroinitializer
  %228 = fneg <4 x double> %226
  %229 = select <4 x i1> %227, <4 x double> %228, <4 x double> %226
  %.fr469 = freeze <4 x double> %229
  %230 = getelementptr inbounds i8, ptr %1, i64 608
  %231 = load double, ptr %230, align 16, !tbaa !9
  %232 = fadd double %231, -6.000000e-04
  %233 = getelementptr inbounds i8, ptr %1, i64 632
  %234 = load <2 x double>, ptr %233, align 8, !tbaa !5
  %235 = fadd <2 x double> %234, <double -2.449490e-02, double -2.449490e-02>
  %236 = getelementptr inbounds i8, ptr %1, i64 656
  %237 = load double, ptr %236, align 16, !tbaa !12
  %238 = getelementptr inbounds i8, ptr %1, i64 696
  %239 = load double, ptr %238, align 8, !tbaa !13
  %240 = getelementptr inbounds i8, ptr %1, i64 616
  %241 = load double, ptr %240, align 8, !tbaa !14
  %242 = getelementptr inbounds i8, ptr %1, i64 624
  %243 = load double, ptr %242, align 16, !tbaa !15
  %244 = getelementptr inbounds i8, ptr %1, i64 648
  %245 = load <2 x double>, ptr %244, align 8
  %246 = shufflevector <2 x double> %245, <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
  %247 = insertelement <4 x double> %246, double %243, i64 1
  %248 = insertelement <4 x double> %247, double %241, i64 2
  %249 = insertelement <4 x double> %248, double %239, i64 3
  %250 = fadd <4 x double> %249, <double 0xBFEFFB15B573EAB3, double -2.000000e-02, double -2.000000e-02, double -4.000000e-02>
  %251 = shufflevector <4 x double> %250, <4 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
  %252 = insertelement <8 x double> %251, double %237, i64 4
  %253 = shufflevector <2 x double> %235, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %254 = shufflevector <8 x double> %252, <8 x double> %253, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %255 = insertelement <8 x double> %254, double %232, i64 7
  %256 = fcmp ult <8 x double> %255, zeroinitializer
  %257 = fneg <8 x double> %255
  %258 = select <8 x i1> %256, <8 x double> %257, <8 x double> %255
  %.fr468 = freeze <8 x double> %258
  %259 = getelementptr inbounds i8, ptr %1, i64 752
  %260 = load i32, ptr %259, align 16, !tbaa !16
  %.fr470 = freeze i32 %260
  %261 = icmp eq i32 %.fr470, 1
  %262 = getelementptr inbounds i8, ptr %1, i64 756
  %263 = load i32, ptr %262, align 4
  %264 = icmp eq i32 %263, 0
  %265 = mul nsw i32 %263, 3
  %266 = add nsw i32 %265, %.fr470
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %1, i64 736
  %271 = load double, ptr %270, align 16, !tbaa !17
  %272 = fcmp oeq double %269, %271
  %273 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 %267
  %274 = load double, ptr %273, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %1, i64 744
  %276 = load double, ptr %275, align 8, !tbaa !18
  %277 = fcmp oeq double %274, %276
  %278 = fcmp ogt <8 x double> %.fr468, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %279 = bitcast <8 x i1> %278 to i8
  %280 = icmp eq i8 %279, 0
  %281 = fcmp ogt <4 x double> %.fr469, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %282 = bitcast <4 x i1> %281 to i4
  %283 = icmp eq i4 %282, 0
  %op.rdx430 = and i1 %280, %283
  %op.rdx431 = and i1 %op.rdx430, %224
  %op.rdx433 = and i1 %261, %264
  %284 = select i1 %op.rdx431, i1 %277, i1 false
  %op.rdx434 = select i1 %284, i1 %272, i1 false
  %285 = freeze i1 %op.rdx434
  %op.rdx435 = and i1 %285, %op.rdx433
  br i1 %op.rdx435, label %286, label %.thread277

286:                                              ; preds = %218
  %287 = getelementptr inbounds i8, ptr %1, i64 768
  %288 = call i32 @libxsmm_matdiff(ptr noundef nonnull %287, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %8, ptr noundef nonnull %7, ptr noundef null, ptr noundef null)
  %289 = icmp eq i32 %288, 0
  br i1 %289, label %290, label %.thread277

290:                                              ; preds = %286
  %291 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %287)
  %292 = fadd double %291, -2.449490e-02
  %293 = fcmp ult double %292, 0.000000e+00
  %294 = fneg double %292
  %295 = select i1 %293, double %294, double %292
  %.fr477 = freeze double %295
  %296 = fcmp ule double %.fr477, 0x3E7AD7F29ABCAF48
  %297 = load <4 x double>, ptr %287, align 16, !tbaa !5
  %298 = fadd <4 x double> %297, <double -4.000000e-02, double -1.000000e+00, double -2.000000e-02, double -1.000000e+00>
  %299 = fcmp ult <4 x double> %298, zeroinitializer
  %300 = fneg <4 x double> %298
  %301 = select <4 x i1> %299, <4 x double> %300, <4 x double> %298
  %.fr474 = freeze <4 x double> %301
  %302 = getelementptr inbounds i8, ptr %1, i64 800
  %303 = load double, ptr %302, align 16, !tbaa !9
  %304 = getelementptr inbounds i8, ptr %1, i64 824
  %305 = load double, ptr %304, align 8, !tbaa !19
  %306 = getelementptr inbounds i8, ptr %1, i64 832
  %307 = load double, ptr %306, align 16, !tbaa !20
  %308 = getelementptr inbounds i8, ptr %1, i64 848
  %309 = load <2 x double>, ptr %308, align 16
  %310 = shufflevector <2 x double> %309, <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
  %311 = insertelement <4 x double> %310, double %307, i64 1
  %312 = insertelement <4 x double> %311, double %305, i64 2
  %313 = insertelement <4 x double> %312, double %303, i64 3
  %314 = fadd <4 x double> %313, <double -4.000000e-02, double 0xBFFBB67AE6502B91, double -2.449490e-02, double -1.000000e+00>
  %315 = getelementptr inbounds i8, ptr %1, i64 888
  %316 = load double, ptr %315, align 8, !tbaa !13
  %317 = getelementptr inbounds i8, ptr %1, i64 808
  %318 = load double, ptr %317, align 8, !tbaa !14
  %319 = fadd double %318, -2.000000e-02
  %320 = getelementptr inbounds i8, ptr %1, i64 816
  %321 = load double, ptr %320, align 16, !tbaa !15
  %322 = fadd double %321, -1.000000e+00
  %323 = getelementptr inbounds i8, ptr %1, i64 840
  %324 = load double, ptr %323, align 8, !tbaa !21
  %325 = fadd double %324, 0.000000e+00
  %326 = insertelement <8 x double> poison, double %324, i64 0
  %327 = insertelement <8 x double> %326, double %322, i64 1
  %328 = insertelement <8 x double> %327, double %319, i64 2
  %329 = insertelement <8 x double> %328, double %316, i64 3
  %330 = shufflevector <4 x double> %314, <4 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
  %331 = shufflevector <8 x double> %329, <8 x double> %330, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
  %332 = fcmp ult <8 x double> %331, zeroinitializer
  %333 = insertelement <8 x double> %331, double %325, i64 0
  %334 = fneg <8 x double> %333
  %335 = select <8 x i1> %332, <8 x double> %334, <8 x double> %333
  %.fr473 = freeze <8 x double> %335
  %336 = getelementptr inbounds i8, ptr %1, i64 944
  %337 = load i32, ptr %336, align 16, !tbaa !16
  %.fr475 = freeze i32 %337
  %338 = icmp eq i32 %.fr475, 1
  %339 = getelementptr inbounds i8, ptr %1, i64 948
  %340 = load i32, ptr %339, align 4
  %341 = icmp eq i32 %340, 0
  %342 = mul nsw i32 %340, 3
  %343 = add nsw i32 %342, %.fr475
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [3 x double], ptr %8, i64 0, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !5
  %347 = getelementptr inbounds i8, ptr %1, i64 928
  %348 = load double, ptr %347, align 16, !tbaa !17
  %349 = fcmp oeq double %346, %348
  %350 = getelementptr inbounds [3 x double], ptr %7, i64 0, i64 %344
  %351 = load double, ptr %350, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %1, i64 936
  %353 = load double, ptr %352, align 8, !tbaa !18
  %354 = fcmp oeq double %351, %353
  %355 = fcmp ogt <8 x double> %.fr473, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %356 = bitcast <8 x i1> %355 to i8
  %357 = icmp eq i8 %356, 0
  %358 = fcmp ogt <4 x double> %.fr474, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %359 = bitcast <4 x i1> %358 to i4
  %360 = icmp eq i4 %359, 0
  %op.rdx424 = and i1 %357, %360
  %op.rdx425 = and i1 %op.rdx424, %296
  %op.rdx427 = and i1 %338, %341
  %361 = select i1 %op.rdx425, i1 %354, i1 false
  %op.rdx428 = select i1 %361, i1 %349, i1 false
  %362 = freeze i1 %op.rdx428
  %op.rdx429 = and i1 %362, %op.rdx427
  br i1 %op.rdx429, label %363, label %.thread277

363:                                              ; preds = %290
  %364 = getelementptr inbounds i8, ptr %1, i64 960
  %365 = call i32 @libxsmm_matdiff(ptr noundef nonnull %364, i32 noundef 0, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %7, ptr noundef null, ptr noundef null)
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %.thread277

367:                                              ; preds = %363
  %368 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %364)
  call void @libxsmm_matdiff_reduce(ptr noundef nonnull %2, ptr noundef nonnull %364)
  %369 = fcmp ult double %368, 0.000000e+00
  %370 = fneg double %368
  %371 = select i1 %369, double %370, double %368
  %.fr481 = freeze double %371
  %372 = fcmp ule double %.fr481, 0x3E7AD7F29ABCAF48
  %373 = load <4 x double>, ptr %364, align 16, !tbaa !5
  %374 = fcmp ult <4 x double> %373, zeroinitializer
  %375 = fneg <4 x double> %373
  %376 = select <4 x i1> %374, <4 x double> %375, <4 x double> %373
  %.fr479 = freeze <4 x double> %376
  %377 = getelementptr inbounds i8, ptr %1, i64 992
  %378 = load double, ptr %377, align 16, !tbaa !9
  %379 = getelementptr inbounds i8, ptr %1, i64 1016
  %380 = load <2 x double>, ptr %379, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %1, i64 1040
  %382 = load double, ptr %381, align 16, !tbaa !12
  %383 = getelementptr inbounds i8, ptr %1, i64 1080
  %384 = load double, ptr %383, align 8, !tbaa !13
  %385 = getelementptr inbounds i8, ptr %1, i64 1000
  %386 = load double, ptr %385, align 8, !tbaa !14
  %387 = getelementptr inbounds i8, ptr %1, i64 1008
  %388 = load double, ptr %387, align 16, !tbaa !15
  %389 = getelementptr inbounds i8, ptr %1, i64 1032
  %390 = load double, ptr %389, align 8, !tbaa !21
  %391 = fadd double %390, -1.000000e+00
  %392 = insertelement <8 x double> poison, double %391, i64 0
  %393 = insertelement <8 x double> %392, double %388, i64 1
  %394 = insertelement <8 x double> %393, double %386, i64 2
  %395 = insertelement <8 x double> %394, double %384, i64 3
  %396 = insertelement <8 x double> %395, double %382, i64 4
  %397 = shufflevector <2 x double> %380, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %398 = shufflevector <8 x double> %396, <8 x double> %397, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %399 = insertelement <8 x double> %398, double %378, i64 7
  %400 = fcmp ult <8 x double> %399, zeroinitializer
  %401 = fneg <8 x double> %399
  %402 = select <8 x i1> %400, <8 x double> %401, <8 x double> %399
  %.fr478 = freeze <8 x double> %402
  %403 = getelementptr inbounds i8, ptr %1, i64 1136
  %404 = load i32, ptr %403, align 16, !tbaa !16
  %405 = icmp eq i32 %404, -1
  %406 = getelementptr inbounds i8, ptr %1, i64 1140
  %407 = load i32, ptr %406, align 4
  %408 = icmp eq i32 %407, -1
  %409 = fcmp ogt <8 x double> %.fr478, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %410 = bitcast <8 x i1> %409 to i8
  %411 = icmp eq i8 %410, 0
  %412 = fcmp ogt <4 x double> %.fr479, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %413 = bitcast <4 x i1> %412 to i4
  %414 = icmp eq i4 %413, 0
  %op.rdx420 = and i1 %411, %414
  %op.rdx421 = and i1 %op.rdx420, %372
  %415 = select i1 %op.rdx421, i1 %405, i1 false
  %op.rdx423 = select i1 %415, i1 %408, i1 false
  br i1 %op.rdx423, label %416, label %.thread277

416:                                              ; preds = %367
  %417 = call double @libxsmm_matdiff_epsilon(ptr noundef nonnull %2)
  %418 = fadd double %417, 0xBFBCFF5ABE927766
  %419 = fcmp ult double %418, 0.000000e+00
  %420 = fneg double %418
  %421 = select i1 %419, double %420, double %418
  %.fr486 = freeze double %421
  %422 = fcmp ogt double %.fr486, 0x3E7AD7F29ABCAF48
  %423 = load <4 x double>, ptr %2, align 8, !tbaa !5
  %424 = fadd <4 x double> %423, <double -3.100000e+00, double -2.818180e-02, double -2.440000e+00, double -9.760000e-02>
  %425 = fcmp ult <4 x double> %424, zeroinitializer
  %426 = fneg <4 x double> %424
  %427 = select <4 x i1> %425, <4 x double> %426, <4 x double> %424
  %.fr483 = freeze <4 x double> %427
  %428 = fcmp ogt <4 x double> %.fr483, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 2.000000e-07, double 0x3E7AD7F29ABCAF48>
  %429 = getelementptr inbounds i8, ptr %2, i64 32
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = getelementptr inbounds i8, ptr %2, i64 56
  %432 = load <2 x double>, ptr %431, align 8, !tbaa !5
  %433 = getelementptr inbounds i8, ptr %2, i64 80
  %434 = load double, ptr %433, align 8, !tbaa !12
  %435 = getelementptr inbounds i8, ptr %2, i64 120
  %436 = load double, ptr %435, align 8, !tbaa !13
  %437 = getelementptr inbounds i8, ptr %2, i64 40
  %438 = load double, ptr %437, align 8, !tbaa !14
  %439 = getelementptr inbounds i8, ptr %2, i64 48
  %440 = load double, ptr %439, align 8, !tbaa !15
  %441 = getelementptr inbounds i8, ptr %2, i64 72
  %442 = load <2 x double>, ptr %441, align 8
  %443 = shufflevector <2 x double> %442, <2 x double> poison, <8 x i32> <i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %444 = insertelement <8 x double> %443, double %440, i64 1
  %445 = insertelement <8 x double> %444, double %438, i64 2
  %446 = insertelement <8 x double> %445, double %436, i64 3
  %447 = insertelement <8 x double> %446, double %434, i64 4
  %448 = shufflevector <2 x double> %432, <2 x double> poison, <8 x i32> <i32 1, i32 0, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %449 = shufflevector <8 x double> %447, <8 x double> %448, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 8, i32 9, i32 poison>
  %450 = insertelement <8 x double> %449, double %430, i64 7
  %451 = fadd <8 x double> %450, <double 0xBFEE5E456564DEA7, double 0xBFCC71C6ECB8FB5F, double -2.000000e+00, double -2.679000e+02, double -2.660000e+02, double 0xBFCF37D050E5CBA1, double 0xC001E80B59D055EE, double 0xBFBB84D18B786EA7>
  %452 = fcmp ult <8 x double> %451, zeroinitializer
  %453 = fneg <8 x double> %451
  %454 = select <8 x i1> %452, <8 x double> %453, <8 x double> %451
  %.fr482 = freeze <8 x double> %454
  %455 = fcmp ogt <8 x double> %.fr482, <double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3EA77CF44765195F, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48, double 0x3E7AD7F29ABCAF48>
  %456 = getelementptr inbounds i8, ptr %2, i64 176
  %457 = load i32, ptr %456, align 8, !tbaa !16
  %.fr484 = freeze i32 %457
  %458 = icmp ne i32 %.fr484, 2
  %459 = getelementptr inbounds i8, ptr %2, i64 180
  %460 = load i32, ptr %459, align 4
  %461 = icmp ne i32 %460, 2
  %462 = mul nsw i32 %.fr484, 3
  %463 = add nsw i32 %462, %460
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [9 x double], ptr %3, i64 0, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !5
  %467 = getelementptr inbounds i8, ptr %2, i64 160
  %468 = load double, ptr %467, align 8, !tbaa !17
  %469 = fcmp une double %466, %468
  %470 = getelementptr inbounds [9 x double], ptr %4, i64 0, i64 %464
  %471 = load double, ptr %470, align 8, !tbaa !5
  %472 = getelementptr inbounds i8, ptr %2, i64 168
  %473 = load double, ptr %472, align 8, !tbaa !18
  %474 = fcmp une double %471, %473
  %475 = bitcast <8 x i1> %455 to i8
  %476 = icmp ne i8 %475, 0
  %477 = bitcast <4 x i1> %428 to i4
  %478 = icmp ne i4 %477, 0
  %op.rdx = or i1 %476, %478
  %op.rdx415 = or i1 %op.rdx, %422
  %op.rdx417 = or i1 %458, %461
  %479 = select i1 %op.rdx415, i1 true, i1 %474
  %op.rdx418 = select i1 %479, i1 true, i1 %469
  %480 = freeze i1 %op.rdx418
  %op.rdx419 = or i1 %480, %op.rdx417
  %.120 = zext i1 %op.rdx419 to i32
  br label %.thread277

.thread277:                                       ; preds = %367, %290, %218, %149, %80, %11, %0, %76, %145, %214, %286, %363, %416
  %.121 = phi i32 [ %.120, %416 ], [ %365, %363 ], [ %288, %286 ], [ %216, %214 ], [ %147, %145 ], [ %78, %76 ], [ %9, %0 ], [ 1, %11 ], [ 1, %80 ], [ 1, %149 ], [ 1, %218 ], [ 1, %290 ], [ 1, %367 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %3) #5
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %2) #5
  call void @llvm.lifetime.end.p0(i64 1152, ptr nonnull %1) #5
  ret i32 %.121
}

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @libxsmm_matdiff_epsilon(ptr noundef) local_unnamed_addr #4

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

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

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 32}
!10 = !{!"libxsmm_matdiff_info", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !6, i64 80}
!13 = !{!10, !6, i64 120}
!14 = !{!10, !6, i64 40}
!15 = !{!10, !6, i64 48}
!16 = !{!10, !11, i64 176}
!17 = !{!10, !6, i64 160}
!18 = !{!10, !6, i64 168}
!19 = !{!10, !6, i64 56}
!20 = !{!10, !6, i64 64}
!21 = !{!10, !6, i64 72}


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