; LLVM IR from OpenMathLib/OpenBLAS :: cpuid_x86 (get_coretype)

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @have_cpuid() #2

; Function Attrs: nounwind uwtable
define dso_local i32 @get_coretype() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  %9 = call i32 @have_cpuid()
  %10 = icmp ne i32 %9, 0
  br i1 %10, label %12, label %11

11:                                               ; preds = %0
  store i32 1, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

12:                                               ; preds = %0
  %13 = call i32 @get_cputype(i32 noundef 4)
  store i32 %13, ptr %2, align 4, !tbaa !5
  %14 = call i32 @get_cputype(i32 noundef 1)
  store i32 %14, ptr %3, align 4, !tbaa !5
  %15 = call i32 @get_cputype(i32 noundef 5)
  store i32 %15, ptr %4, align 4, !tbaa !5
  %16 = call i32 @get_cputype(i32 noundef 2)
  store i32 %16, ptr %5, align 4, !tbaa !5
  %17 = call i32 @get_cputype(i32 noundef 9)
  store i32 %17, ptr %7, align 4, !tbaa !5
  %18 = call i32 @get_vendor()
  store i32 %18, ptr %6, align 4, !tbaa !5
  %19 = load i32, ptr %6, align 4, !tbaa !5
  %20 = icmp eq i32 %19, 1
  br i1 %20, label %21, label %326

21:                                               ; preds = %12
  %22 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %22, label %325 [
    i32 4, label %23
    i32 5, label %24
    i32 6, label %25
    i32 15, label %320
  ]

23:                                               ; preds = %21
  store i32 1, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

24:                                               ; preds = %21
  store i32 2, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

25:                                               ; preds = %21
  %26 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %26, label %319 [
    i32 0, label %27
    i32 1, label %35
    i32 2, label %43
    i32 3, label %59
    i32 4, label %78
    i32 5, label %97
    i32 6, label %121
    i32 7, label %137
    i32 8, label %149
    i32 9, label %201
    i32 10, label %241
    i32 11, label %283
    i32 12, label %295
  ]

27:                                               ; preds = %25
  %28 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %28, label %34 [
    i32 0, label %29
    i32 1, label %29
    i32 2, label %29
    i32 3, label %29
    i32 4, label %29
    i32 5, label %29
    i32 6, label %29
    i32 7, label %30
    i32 8, label %31
    i32 10, label %31
    i32 11, label %31
    i32 9, label %32
    i32 13, label %32
    i32 14, label %32
    i32 15, label %33
  ]

29:                                               ; preds = %27, %27, %27, %27, %27, %27, %27
  store i32 14, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

30:                                               ; preds = %27
  store i32 4, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

31:                                               ; preds = %27, %27, %27
  store i32 5, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

32:                                               ; preds = %27, %27, %27
  store i32 8, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

33:                                               ; preds = %27
  store i32 14, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

34:                                               ; preds = %27
  br label %319

35:                                               ; preds = %25
  %36 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %36, label %42 [
    i32 6, label %37
    i32 7, label %38
    i32 10, label %39
    i32 11, label %39
    i32 14, label %39
    i32 15, label %39
    i32 12, label %40
    i32 13, label %41
  ]

37:                                               ; preds = %35
  store i32 14, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

38:                                               ; preds = %35
  store i32 15, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

39:                                               ; preds = %35, %35, %35, %35
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

40:                                               ; preds = %35
  store i32 18, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

41:                                               ; preds = %35
  store i32 16, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

42:                                               ; preds = %35
  br label %319

43:                                               ; preds = %25
  %44 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %44, label %58 [
    i32 5, label %45
    i32 10, label %46
    i32 12, label %51
    i32 13, label %52
    i32 14, label %57
    i32 15, label %57
  ]

45:                                               ; preds = %43
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

46:                                               ; preds = %43
  %47 = call i32 @support_avx()
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %46
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

50:                                               ; preds = %46
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

51:                                               ; preds = %43
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

52:                                               ; preds = %43
  %53 = call i32 @support_avx()
  %54 = icmp ne i32 %53, 0
  br i1 %54, label %55, label %56

55:                                               ; preds = %52
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

56:                                               ; preds = %52
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

57:                                               ; preds = %43, %43
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

58:                                               ; preds = %43
  br label %319

59:                                               ; preds = %25
  %60 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %60, label %77 [
    i32 7, label %61
    i32 10, label %62
    i32 14, label %62
    i32 12, label %67
    i32 15, label %67
    i32 13, label %72
  ]

61:                                               ; preds = %59
  store i32 18, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

62:                                               ; preds = %59, %59
  %63 = call i32 @support_avx()
  %64 = icmp ne i32 %63, 0
  br i1 %64, label %65, label %66

65:                                               ; preds = %62
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

66:                                               ; preds = %62
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

67:                                               ; preds = %59, %59
  %68 = call i32 @support_avx()
  %69 = icmp ne i32 %68, 0
  br i1 %69, label %70, label %71

70:                                               ; preds = %67
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

71:                                               ; preds = %67
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

72:                                               ; preds = %59
  %73 = call i32 @support_avx()
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %75, label %76

75:                                               ; preds = %72
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

76:                                               ; preds = %72
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

77:                                               ; preds = %59
  br label %319

78:                                               ; preds = %25
  %79 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %79, label %96 [
    i32 5, label %80
    i32 6, label %80
    i32 7, label %85
    i32 15, label %85
    i32 14, label %90
    i32 12, label %95
    i32 13, label %95
  ]

80:                                               ; preds = %78, %78
  %81 = call i32 @support_avx()
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %80
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

84:                                               ; preds = %80
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

85:                                               ; preds = %78, %78
  %86 = call i32 @support_avx()
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %85
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

89:                                               ; preds = %85
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

90:                                               ; preds = %78
  %91 = call i32 @support_avx()
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %90
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

94:                                               ; preds = %90
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

95:                                               ; preds = %78, %78
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

96:                                               ; preds = %78
  br label %319

97:                                               ; preds = %25
  %98 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %98, label %120 [
    i32 6, label %99
    i32 5, label %104
    i32 14, label %109
    i32 7, label %114
    i32 12, label %119
  ]

99:                                               ; preds = %97
  %100 = call i32 @support_avx()
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %99
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

103:                                              ; preds = %99
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

104:                                              ; preds = %97
  %105 = call i32 @support_avx512_bf16()
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %107, label %108

107:                                              ; preds = %104
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

108:                                              ; preds = %104
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

109:                                              ; preds = %97
  %110 = call i32 @support_avx()
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %109
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

113:                                              ; preds = %109
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

114:                                              ; preds = %97
  %115 = call i32 @support_avx()
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

118:                                              ; preds = %114
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

119:                                              ; preds = %97
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

120:                                              ; preds = %97
  br label %319

121:                                              ; preds = %25
  %122 = load i32, ptr %4, align 4, !tbaa !5
  %123 = icmp eq i32 %122, 6
  br i1 %123, label %124, label %125

124:                                              ; preds = %121
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

125:                                              ; preds = %121
  %126 = load i32, ptr %4, align 4, !tbaa !5
  %127 = icmp eq i32 %126, 10
  br i1 %127, label %131, label %128

128:                                              ; preds = %125
  %129 = load i32, ptr %4, align 4, !tbaa !5
  %130 = icmp eq i32 %129, 12
  br i1 %130, label %131, label %136

131:                                              ; preds = %128, %125
  %132 = call i32 @support_avx512_bf16()
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %131
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

135:                                              ; preds = %131
  br label %136

136:                                              ; preds = %135, %128
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

137:                                              ; preds = %25
  %138 = load i32, ptr %4, align 4, !tbaa !5
  %139 = icmp eq i32 %138, 10
  br i1 %139, label %140, label %141

140:                                              ; preds = %137
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

141:                                              ; preds = %137
  %142 = load i32, ptr %4, align 4, !tbaa !5
  %143 = icmp eq i32 %142, 13
  br i1 %143, label %147, label %144

144:                                              ; preds = %141
  %145 = load i32, ptr %4, align 4, !tbaa !5
  %146 = icmp eq i32 %145, 14
  br i1 %146, label %147, label %148

147:                                              ; preds = %144, %141
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

148:                                              ; preds = %144
  br label %319

149:                                              ; preds = %25
  %150 = load i32, ptr %4, align 4, !tbaa !5
  %151 = icmp eq i32 %150, 12
  br i1 %151, label %155, label %152

152:                                              ; preds = %149
  %153 = load i32, ptr %4, align 4, !tbaa !5
  %154 = icmp eq i32 %153, 13
  br i1 %154, label %155, label %168

155:                                              ; preds = %152, %149
  %156 = call i32 @support_avx512()
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %155
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

159:                                              ; preds = %155
  %160 = call i32 @support_avx2()
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %159
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

163:                                              ; preds = %159
  %164 = call i32 @support_avx()
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %163
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

167:                                              ; preds = %163
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

168:                                              ; preds = %152
  %169 = load i32, ptr %4, align 4, !tbaa !5
  %170 = icmp eq i32 %169, 14
  br i1 %170, label %171, label %176

171:                                              ; preds = %168
  %172 = call i32 @support_avx()
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %171
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

175:                                              ; preds = %171
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

176:                                              ; preds = %168
  %177 = load i32, ptr %4, align 4, !tbaa !5
  %178 = icmp eq i32 %177, 15
  br i1 %178, label %179, label %200

179:                                              ; preds = %176
  %180 = call i32 @support_amx_bf16()
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %179
  store i32 31, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

183:                                              ; preds = %179
  %184 = call i32 @support_avx512_bf16()
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %187

186:                                              ; preds = %183
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

187:                                              ; preds = %183
  %188 = call i32 @support_avx512()
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %191

190:                                              ; preds = %187
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

191:                                              ; preds = %187
  %192 = call i32 @support_avx2()
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %191
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

195:                                              ; preds = %191
  %196 = call i32 @support_avx()
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %199

198:                                              ; preds = %195
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

199:                                              ; preds = %195
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

200:                                              ; preds = %176
  br label %319

201:                                              ; preds = %25
  %202 = load i32, ptr %4, align 4, !tbaa !5
  %203 = icmp eq i32 %202, 7
  br i1 %203, label %207, label %204

204:                                              ; preds = %201
  %205 = load i32, ptr %4, align 4, !tbaa !5
  %206 = icmp eq i32 %205, 10
  br i1 %206, label %207, label %216

207:                                              ; preds = %204, %201
  %208 = call i32 @support_avx2()
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

211:                                              ; preds = %207
  %212 = call i32 @support_avx()
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %211
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

215:                                              ; preds = %211
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

216:                                              ; preds = %204
  %217 = load i32, ptr %4, align 4, !tbaa !5
  %218 = icmp eq i32 %217, 13
  br i1 %218, label %219, label %232

219:                                              ; preds = %216
  %220 = call i32 @support_avx512()
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %223

222:                                              ; preds = %219
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

223:                                              ; preds = %219
  %224 = call i32 @support_avx2()
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %227

226:                                              ; preds = %223
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

227:                                              ; preds = %223
  %228 = call i32 @support_avx()
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %231

230:                                              ; preds = %227
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

231:                                              ; preds = %227
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

232:                                              ; preds = %216
  %233 = load i32, ptr %4, align 4, !tbaa !5
  %234 = icmp eq i32 %233, 14
  br i1 %234, label %235, label %240

235:                                              ; preds = %232
  %236 = call i32 @support_avx()
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %238, label %239

238:                                              ; preds = %235
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

239:                                              ; preds = %235
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

240:                                              ; preds = %232
  br label %319

241:                                              ; preds = %25
  %242 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %242, label %282 [
    i32 13, label %243
    i32 5, label %264
    i32 6, label %264
    i32 10, label %264
    i32 0, label %269
    i32 7, label %269
  ]

243:                                              ; preds = %241
  %244 = call i32 @support_amx_bf16()
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %247

246:                                              ; preds = %243
  store i32 31, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

247:                                              ; preds = %243
  %248 = call i32 @support_avx512_bf16()
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %251

250:                                              ; preds = %247
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

251:                                              ; preds = %247
  %252 = call i32 @support_avx512()
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

255:                                              ; preds = %251
  %256 = call i32 @support_avx2()
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %259

258:                                              ; preds = %255
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

259:                                              ; preds = %255
  %260 = call i32 @support_avx()
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %263

262:                                              ; preds = %259
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

263:                                              ; preds = %259
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

264:                                              ; preds = %241, %241, %241
  %265 = call i32 @support_avx()
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %264
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

268:                                              ; preds = %264
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

269:                                              ; preds = %241, %241
  %270 = call i32 @support_avx512()
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %273

272:                                              ; preds = %269
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

273:                                              ; preds = %269
  %274 = call i32 @support_avx2()
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %277

276:                                              ; preds = %273
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

277:                                              ; preds = %273
  %278 = call i32 @support_avx()
  %279 = icmp ne i32 %278, 0
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

281:                                              ; preds = %277
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

282:                                              ; preds = %241
  br label %283

283:                                              ; preds = %282, %25
  %284 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %284, label %294 [
    i32 7, label %285
    i32 10, label %285
    i32 15, label %285
    i32 14, label %285
  ]

285:                                              ; preds = %283, %283, %283, %283
  %286 = call i32 @support_avx2()
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %289

288:                                              ; preds = %285
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

289:                                              ; preds = %285
  %290 = call i32 @support_avx()
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %293

292:                                              ; preds = %289
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

293:                                              ; preds = %289
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

294:                                              ; preds = %283
  br label %295

295:                                              ; preds = %294, %25
  %296 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %296, label %318 [
    i32 6, label %297
  ]

297:                                              ; preds = %295
  %298 = call i32 @support_amx_bf16()
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %301

300:                                              ; preds = %297
  store i32 31, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

301:                                              ; preds = %297
  %302 = call i32 @support_avx512_bf16()
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %305

304:                                              ; preds = %301
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

305:                                              ; preds = %301
  %306 = call i32 @support_avx512()
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %309

308:                                              ; preds = %305
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

309:                                              ; preds = %305
  %310 = call i32 @support_avx2()
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %313

312:                                              ; preds = %309
  store i32 24, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

313:                                              ; preds = %309
  %314 = call i32 @support_avx()
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %317

316:                                              ; preds = %313
  store i32 20, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

317:                                              ; preds = %313
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

318:                                              ; preds = %295
  br label %319

319:                                              ; preds = %318, %240, %200, %148, %120, %96, %77, %58, %42, %34, %25
  br label %320

320:                                              ; preds = %319, %21
  %321 = load i32, ptr %4, align 4, !tbaa !5
  %322 = icmp sle i32 %321, 2
  br i1 %322, label %323, label %324

323:                                              ; preds = %320
  store i32 6, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

324:                                              ; preds = %320
  store i32 7, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

325:                                              ; preds = %21
  br label %326

326:                                              ; preds = %325, %12
  %327 = load i32, ptr %6, align 4, !tbaa !5
  %328 = icmp eq i32 %327, 3
  br i1 %328, label %329, label %420

329:                                              ; preds = %326
  %330 = load i32, ptr %2, align 4, !tbaa !5
  %331 = icmp sle i32 %330, 5
  br i1 %331, label %332, label %333

332:                                              ; preds = %329
  store i32 1, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

333:                                              ; preds = %329
  %334 = load i32, ptr %2, align 4, !tbaa !5
  %335 = icmp sle i32 %334, 14
  br i1 %335, label %336, label %337

336:                                              ; preds = %333
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

337:                                              ; preds = %333
  %338 = load i32, ptr %2, align 4, !tbaa !5
  %339 = icmp eq i32 %338, 15
  br i1 %339, label %340, label %419

340:                                              ; preds = %337
  %341 = load i32, ptr %3, align 4, !tbaa !5
  %342 = icmp eq i32 %341, 0
  br i1 %342, label %346, label %343

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

346:                                              ; preds = %343, %340
  store i32 10, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

347:                                              ; preds = %343
  %348 = load i32, ptr %3, align 4, !tbaa !5
  %349 = icmp eq i32 %348, 5
  br i1 %349, label %350, label %351

350:                                              ; preds = %347
  store i32 21, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

351:                                              ; preds = %347
  %352 = load i32, ptr %3, align 4, !tbaa !5
  %353 = icmp eq i32 %352, 6
  br i1 %353, label %354, label %390

354:                                              ; preds = %351
  %355 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %355, label %389 [
    i32 1, label %356
    i32 2, label %361
    i32 3, label %361
    i32 5, label %366
    i32 0, label %371
    i32 8, label %371
  ]

356:                                              ; preds = %354
  %357 = call i32 @support_avx()
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %356
  store i32 22, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

360:                                              ; preds = %356
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

361:                                              ; preds = %354, %354
  %362 = call i32 @support_avx()
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %365

364:                                              ; preds = %361
  store i32 23, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

365:                                              ; preds = %361
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

366:                                              ; preds = %354
  %367 = call i32 @support_avx()
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %370

369:                                              ; preds = %366
  store i32 26, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

370:                                              ; preds = %366
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

371:                                              ; preds = %354, %354
  %372 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %372, label %388 [
    i32 1, label %373
    i32 3, label %378
    i32 6, label %383
  ]

373:                                              ; preds = %371
  %374 = call i32 @support_avx()
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %377

376:                                              ; preds = %373
  store i32 23, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

377:                                              ; preds = %373
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

378:                                              ; preds = %371
  %379 = call i32 @support_avx()
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %381, label %382

381:                                              ; preds = %378
  store i32 25, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

382:                                              ; preds = %378
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

383:                                              ; preds = %371
  %384 = call i32 @support_avx()
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %386, label %387

386:                                              ; preds = %383
  store i32 26, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

387:                                              ; preds = %383
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

388:                                              ; preds = %371
  br label %389

389:                                              ; preds = %388, %354
  br label %416

390:                                              ; preds = %351
  %391 = load i32, ptr %3, align 4, !tbaa !5
  %392 = icmp eq i32 %391, 8
  br i1 %392, label %399, label %393

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

396:                                              ; preds = %393
  %397 = load i32, ptr %3, align 4, !tbaa !5
  %398 = icmp eq i32 %397, 11
  br i1 %398, label %399, label %415

399:                                              ; preds = %396, %393, %390
  %400 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %400, label %402 [
    i32 1, label %401
    i32 8, label %401
  ]

401:                                              ; preds = %399, %399
  br label %402

402:                                              ; preds = %401, %399
  %403 = call i32 @support_avx512_bf16()
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %406

405:                                              ; preds = %402
  store i32 30, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

406:                                              ; preds = %402
  %407 = call i32 @support_avx512()
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %410

409:                                              ; preds = %406
  store i32 28, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

410:                                              ; preds = %406
  %411 = call i32 @support_avx()
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %414

413:                                              ; preds = %410
  store i32 27, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

414:                                              ; preds = %410
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

415:                                              ; preds = %396
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

416:                                              ; preds = %389
  br label %417

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418, %337
  br label %420

420:                                              ; preds = %419, %326
  %421 = load i32, ptr %6, align 4, !tbaa !5
  %422 = icmp eq i32 %421, 11
  br i1 %422, label %423, label %436

423:                                              ; preds = %420
  %424 = load i32, ptr %2, align 4, !tbaa !5
  %425 = icmp eq i32 %424, 15
  br i1 %425, label %426, label %435

426:                                              ; preds = %423
  %427 = load i32, ptr %3, align 4, !tbaa !5
  %428 = icmp eq i32 %427, 9
  br i1 %428, label %429, label %434

429:                                              ; preds = %426
  %430 = call i32 @support_avx()
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %432, label %433

432:                                              ; preds = %429
  store i32 27, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

433:                                              ; preds = %429
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

434:                                              ; preds = %426
  store i32 11, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

435:                                              ; preds = %423
  br label %436

436:                                              ; preds = %435, %420
  %437 = load i32, ptr %6, align 4, !tbaa !5
  %438 = icmp eq i32 %437, 6
  br i1 %438, label %439, label %462

439:                                              ; preds = %436
  %440 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %440, label %457 [
    i32 6, label %441
    i32 7, label %449
  ]

441:                                              ; preds = %439
  %442 = load i32, ptr %4, align 4, !tbaa !5
  %443 = icmp eq i32 %442, 15
  br i1 %443, label %444, label %448

444:                                              ; preds = %441
  %445 = load i32, ptr %7, align 4, !tbaa !5
  %446 = icmp slt i32 %445, 14
  br i1 %446, label %447, label %448

447:                                              ; preds = %444
  store i32 19, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

448:                                              ; preds = %444, %441
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

449:                                              ; preds = %439
  %450 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %450, label %456 [
    i32 5, label %451
  ]

451:                                              ; preds = %449
  %452 = call i32 @support_avx2()
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %455

454:                                              ; preds = %451
  store i32 27, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

455:                                              ; preds = %451
  store i32 16, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

456:                                              ; preds = %449
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

457:                                              ; preds = %439
  %458 = load i32, ptr %2, align 4, !tbaa !5
  %459 = icmp sge i32 %458, 8
  br i1 %459, label %460, label %461

460:                                              ; preds = %457
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

461:                                              ; preds = %457
  store i32 12, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

462:                                              ; preds = %436
  %463 = load i32, ptr %6, align 4, !tbaa !5
  %464 = icmp eq i32 %463, 12
  br i1 %464, label %465, label %476

465:                                              ; preds = %462
  %466 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %466, label %475 [
    i32 7, label %467
  ]

467:                                              ; preds = %465
  %468 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %468, label %474 [
    i32 5, label %469
    i32 6, label %469
  ]

469:                                              ; preds = %467, %467
  %470 = call i32 @support_avx2()
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %473

472:                                              ; preds = %469
  store i32 27, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

473:                                              ; preds = %469
  store i32 16, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

474:                                              ; preds = %467
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

475:                                              ; preds = %465
  store i32 17, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

476:                                              ; preds = %462
  store i32 0, ptr %1, align 4
  store i32 1, ptr %8, align 4
  br label %477

477:                                              ; preds = %476, %475, %474, %473, %472, %461, %460, %456, %455, %454, %448, %447, %434, %433, %432, %415, %414, %413, %409, %405, %387, %386, %382, %381, %377, %376, %370, %369, %365, %364, %360, %359, %350, %346, %336, %332, %324, %323, %317, %316, %312, %308, %304, %300, %293, %292, %288, %281, %280, %276, %272, %268, %267, %263, %262, %258, %254, %250, %246, %239, %238, %231, %230, %226, %222, %215, %214, %210, %199, %198, %194, %190, %186, %182, %175, %174, %167, %166, %162, %158, %147, %140, %136, %134, %124, %119, %118, %117, %113, %112, %108, %107, %103, %102, %95, %94, %93, %89, %88, %84, %83, %76, %75, %71, %70, %66, %65, %61, %57, %56, %55, %51, %50, %49, %45, %41, %40, %39, %38, %37, %33, %32, %31, %30, %29, %24, %23, %11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #3
  %478 = load i32, ptr %1, align 4
  ret i32 %478
}

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 = { 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}


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

@switch.table.get_coretype = private unnamed_addr constant [16 x i32] [i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 4, i32 5, i32 8, i32 5, i32 5, i32 14, i32 8, i32 8, i32 14], align 4
@switch.table.get_coretype.1 = private unnamed_addr constant [10 x i32] [i32 14, i32 15, i32 14, i32 14, i32 17, i32 17, i32 18, i32 16, i32 17, i32 17], align 4

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

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

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @have_cpuid() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @get_coretype() local_unnamed_addr #0 {
  %1 = tail call i32 @have_cpuid()
  %.not = icmp eq i32 %1, 0
  br i1 %.not, label %173, label %2

2:                                                ; preds = %0
  %3 = tail call i32 @get_cputype(i32 noundef 4)
  %4 = tail call i32 @get_cputype(i32 noundef 1)
  %5 = tail call i32 @get_cputype(i32 noundef 5)
  %6 = tail call i32 @get_cputype(i32 noundef 2)
  %7 = tail call i32 @get_cputype(i32 noundef 9)
  %8 = tail call i32 @get_vendor()
  switch i32 %8, label %152 [
    i32 1, label %9
    i32 3, label %123
  ]

9:                                                ; preds = %2
  switch i32 %3, label %.thread.thread [
    i32 4, label %173
    i32 5, label %10
    i32 6, label %11
    i32 15, label %121
  ]

10:                                               ; preds = %9
  br label %173

11:                                               ; preds = %9
  switch i32 %6, label %121 [
    i32 0, label %12
    i32 1, label %14
    i32 2, label %16
    i32 3, label %21
    i32 4, label %28
    i32 5, label %35
    i32 6, label %44
    i32 7, label %48
    i32 8, label %52
    i32 9, label %73
    i32 10, label %86
    i32 11, label %105
    i32 12, label %110
  ]

12:                                               ; preds = %11
  %13 = icmp ult i32 %5, 16
  br i1 %13, label %switch.hole_check, label %121

14:                                               ; preds = %11
  %switch.tableidx = add i32 %5, -6
  %15 = icmp ult i32 %switch.tableidx, 10
  br i1 %15, label %switch.hole_check170, label %121

16:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 5, label %173
    i32 10, label %17
    i32 12, label %173
    i32 13, label %19
    i32 14, label %173
    i32 15, label %173
  ]

17:                                               ; preds = %16
  %18 = tail call i32 @support_avx()
  %.not120 = icmp eq i32 %18, 0
  %. = select i1 %.not120, i32 17, i32 20
  br label %173

19:                                               ; preds = %16
  %20 = tail call i32 @support_avx()
  %.not119 = icmp eq i32 %20, 0
  %.133 = select i1 %.not119, i32 17, i32 20
  br label %173

21:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 7, label %173
    i32 10, label %22
    i32 14, label %22
    i32 12, label %24
    i32 15, label %24
    i32 13, label %26
  ]

22:                                               ; preds = %21, %21
  %23 = tail call i32 @support_avx()
  %.not118 = icmp eq i32 %23, 0
  %.134 = select i1 %.not118, i32 17, i32 20
  br label %173

24:                                               ; preds = %21, %21
  %25 = tail call i32 @support_avx()
  %.not117 = icmp eq i32 %25, 0
  %.135 = select i1 %.not117, i32 17, i32 24
  br label %173

26:                                               ; preds = %21
  %27 = tail call i32 @support_avx()
  %.not116 = icmp eq i32 %27, 0
  %.136 = select i1 %.not116, i32 17, i32 24
  br label %173

28:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 5, label %29
    i32 6, label %29
    i32 7, label %31
    i32 15, label %31
    i32 14, label %33
    i32 12, label %173
    i32 13, label %173
  ]

29:                                               ; preds = %28, %28
  %30 = tail call i32 @support_avx()
  %.not115 = icmp eq i32 %30, 0
  %.137 = select i1 %.not115, i32 17, i32 24
  br label %173

31:                                               ; preds = %28, %28
  %32 = tail call i32 @support_avx()
  %.not114 = icmp eq i32 %32, 0
  %.138 = select i1 %.not114, i32 17, i32 24
  br label %173

33:                                               ; preds = %28
  %34 = tail call i32 @support_avx()
  %.not113 = icmp eq i32 %34, 0
  %.139 = select i1 %.not113, i32 17, i32 24
  br label %173

35:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 6, label %36
    i32 5, label %38
    i32 14, label %40
    i32 7, label %42
    i32 12, label %173
  ]

36:                                               ; preds = %35
  %37 = tail call i32 @support_avx()
  %.not112 = icmp eq i32 %37, 0
  %.140 = select i1 %.not112, i32 17, i32 24
  br label %173

38:                                               ; preds = %35
  %39 = tail call i32 @support_avx512_bf16()
  %.not111 = icmp eq i32 %39, 0
  %.141 = select i1 %.not111, i32 28, i32 30
  br label %173

40:                                               ; preds = %35
  %41 = tail call i32 @support_avx()
  %.not110 = icmp eq i32 %41, 0
  %.142 = select i1 %.not110, i32 17, i32 24
  br label %173

42:                                               ; preds = %35
  %43 = tail call i32 @support_avx()
  %.not109 = icmp eq i32 %43, 0
  %.143 = select i1 %.not109, i32 17, i32 24
  br label %173

44:                                               ; preds = %11
  switch i32 %5, label %47 [
    i32 6, label %173
    i32 12, label %45
    i32 10, label %45
  ]

45:                                               ; preds = %44, %44
  %46 = tail call i32 @support_avx512_bf16()
  %.not108 = icmp eq i32 %46, 0
  br i1 %.not108, label %47, label %173

47:                                               ; preds = %44, %45
  br label %173

48:                                               ; preds = %11
  %49 = icmp eq i32 %5, 10
  br i1 %49, label %173, label %50

50:                                               ; preds = %48
  %51 = add i32 %5, -13
  %or.cond5 = icmp ult i32 %51, 2
  br i1 %or.cond5, label %173, label %121

52:                                               ; preds = %11
  %53 = and i32 %5, -2
  %or.cond7 = icmp eq i32 %53, 12
  br i1 %or.cond7, label %54, label %60

54:                                               ; preds = %52
  %55 = tail call i32 @support_avx512()
  %.not105 = icmp eq i32 %55, 0
  br i1 %.not105, label %56, label %173

56:                                               ; preds = %54
  %57 = tail call i32 @support_avx2()
  %.not106 = icmp eq i32 %57, 0
  br i1 %.not106, label %58, label %173

58:                                               ; preds = %56
  %59 = tail call i32 @support_avx()
  %.not107 = icmp eq i32 %59, 0
  %.144 = select i1 %.not107, i32 17, i32 20
  br label %173

60:                                               ; preds = %52
  switch i32 %5, label %121 [
    i32 14, label %61
    i32 15, label %63
  ]

61:                                               ; preds = %60
  %62 = tail call i32 @support_avx()
  %.not104 = icmp eq i32 %62, 0
  %.145 = select i1 %.not104, i32 17, i32 24
  br label %173

63:                                               ; preds = %60
  %64 = tail call i32 @support_amx_bf16()
  %.not99 = icmp eq i32 %64, 0
  br i1 %.not99, label %65, label %173

65:                                               ; preds = %63
  %66 = tail call i32 @support_avx512_bf16()
  %.not100 = icmp eq i32 %66, 0
  br i1 %.not100, label %67, label %173

67:                                               ; preds = %65
  %68 = tail call i32 @support_avx512()
  %.not101 = icmp eq i32 %68, 0
  br i1 %.not101, label %69, label %173

69:                                               ; preds = %67
  %70 = tail call i32 @support_avx2()
  %.not102 = icmp eq i32 %70, 0
  br i1 %.not102, label %71, label %173

71:                                               ; preds = %69
  %72 = tail call i32 @support_avx()
  %.not103 = icmp eq i32 %72, 0
  %.146 = select i1 %.not103, i32 17, i32 20
  br label %173

73:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 10, label %74
    i32 7, label %74
    i32 13, label %78
    i32 14, label %84
  ]

74:                                               ; preds = %73, %73
  %75 = tail call i32 @support_avx2()
  %.not97 = icmp eq i32 %75, 0
  br i1 %.not97, label %76, label %173

76:                                               ; preds = %74
  %77 = tail call i32 @support_avx()
  %.not98 = icmp eq i32 %77, 0
  %.147 = select i1 %.not98, i32 17, i32 20
  br label %173

78:                                               ; preds = %73
  %79 = tail call i32 @support_avx512()
  %.not94 = icmp eq i32 %79, 0
  br i1 %.not94, label %80, label %173

80:                                               ; preds = %78
  %81 = tail call i32 @support_avx2()
  %.not95 = icmp eq i32 %81, 0
  br i1 %.not95, label %82, label %173

82:                                               ; preds = %80
  %83 = tail call i32 @support_avx()
  %.not96 = icmp eq i32 %83, 0
  %.148 = select i1 %.not96, i32 17, i32 20
  br label %173

84:                                               ; preds = %73
  %85 = tail call i32 @support_avx()
  %.not93 = icmp eq i32 %85, 0
  %.149 = select i1 %.not93, i32 17, i32 24
  br label %173

86:                                               ; preds = %11
  switch i32 %5, label %121 [
    i32 13, label %87
    i32 5, label %97
    i32 6, label %97
    i32 10, label %97
    i32 0, label %99
    i32 7, label %99
    i32 15, label %106
    i32 14, label %106
  ]

87:                                               ; preds = %86
  %88 = tail call i32 @support_amx_bf16()
  %.not81 = icmp eq i32 %88, 0
  br i1 %.not81, label %89, label %173

89:                                               ; preds = %87
  %90 = tail call i32 @support_avx512_bf16()
  %.not82 = icmp eq i32 %90, 0
  br i1 %.not82, label %91, label %173

91:                                               ; preds = %89
  %92 = tail call i32 @support_avx512()
  %.not83 = icmp eq i32 %92, 0
  br i1 %.not83, label %93, label %173

93:                                               ; preds = %91
  %94 = tail call i32 @support_avx2()
  %.not84 = icmp eq i32 %94, 0
  br i1 %.not84, label %95, label %173

95:                                               ; preds = %93
  %96 = tail call i32 @support_avx()
  %.not85 = icmp eq i32 %96, 0
  %.150 = select i1 %.not85, i32 17, i32 20
  br label %173

97:                                               ; preds = %86, %86, %86
  %98 = tail call i32 @support_avx()
  %.not80 = icmp eq i32 %98, 0
  %.151 = select i1 %.not80, i32 17, i32 24
  br label %173

99:                                               ; preds = %86, %86
  %100 = tail call i32 @support_avx512()
  %.not77 = icmp eq i32 %100, 0
  br i1 %.not77, label %101, label %173

101:                                              ; preds = %99
  %102 = tail call i32 @support_avx2()
  %.not78 = icmp eq i32 %102, 0
  br i1 %.not78, label %103, label %173

103:                                              ; preds = %101
  %104 = tail call i32 @support_avx()
  %.not79 = icmp eq i32 %104, 0
  %.152 = select i1 %.not79, i32 17, i32 20
  br label %173

105:                                              ; preds = %11
  switch i32 %5, label %121 [
    i32 7, label %106
    i32 10, label %106
    i32 15, label %106
    i32 14, label %106
    i32 6, label %111
  ]

106:                                              ; preds = %86, %86, %105, %105, %105, %105
  %107 = tail call i32 @support_avx2()
  %.not86 = icmp eq i32 %107, 0
  br i1 %.not86, label %108, label %173

108:                                              ; preds = %106
  %109 = tail call i32 @support_avx()
  %.not87 = icmp eq i32 %109, 0
  %.153 = select i1 %.not87, i32 17, i32 20
  br label %173

110:                                              ; preds = %11
  %cond2 = icmp eq i32 %5, 6
  br i1 %cond2, label %111, label %121

111:                                              ; preds = %105, %110
  %112 = tail call i32 @support_amx_bf16()
  %.not88 = icmp eq i32 %112, 0
  br i1 %.not88, label %113, label %173

113:                                              ; preds = %111
  %114 = tail call i32 @support_avx512_bf16()
  %.not89 = icmp eq i32 %114, 0
  br i1 %.not89, label %115, label %173

115:                                              ; preds = %113
  %116 = tail call i32 @support_avx512()
  %.not90 = icmp eq i32 %116, 0
  br i1 %.not90, label %117, label %173

117:                                              ; preds = %115
  %118 = tail call i32 @support_avx2()
  %.not91 = icmp eq i32 %118, 0
  br i1 %.not91, label %119, label %173

119:                                              ; preds = %117
  %120 = tail call i32 @support_avx()
  %.not92 = icmp eq i32 %120, 0
  %.154 = select i1 %.not92, i32 17, i32 20
  br label %173

121:                                              ; preds = %switch.hole_check170, %14, %switch.hole_check, %12, %86, %105, %73, %60, %11, %16, %21, %28, %35, %50, %110, %9
  %122 = icmp slt i32 %5, 3
  %.155 = select i1 %122, i32 6, i32 7
  br label %173

123:                                              ; preds = %2
  %124 = icmp slt i32 %3, 6
  br i1 %124, label %173, label %125

125:                                              ; preds = %123
  %126 = icmp ult i32 %3, 15
  br i1 %126, label %173, label %127

127:                                              ; preds = %125
  %128 = icmp eq i32 %3, 15
  br i1 %128, label %129, label %.thread.thread

129:                                              ; preds = %127
  %130 = and i32 %4, -3
  %or.cond11 = icmp eq i32 %130, 0
  br i1 %or.cond11, label %173, label %131

131:                                              ; preds = %129
  switch i32 %4, label %.fold.split [
    i32 5, label %173
    i32 6, label %132
    i32 11, label %146
    i32 10, label %146
    i32 8, label %146
  ]

132:                                              ; preds = %131
  switch i32 %5, label %.thread.thread [
    i32 1, label %133
    i32 2, label %135
    i32 3, label %135
    i32 5, label %137
    i32 0, label %139
    i32 8, label %139
  ]

133:                                              ; preds = %132
  %134 = tail call i32 @support_avx()
  %.not129 = icmp eq i32 %134, 0
  %.156 = select i1 %.not129, i32 11, i32 22
  br label %173

135:                                              ; preds = %132, %132
  %136 = tail call i32 @support_avx()
  %.not128 = icmp eq i32 %136, 0
  %.157 = select i1 %.not128, i32 11, i32 23
  br label %173

137:                                              ; preds = %132
  %138 = tail call i32 @support_avx()
  %.not127 = icmp eq i32 %138, 0
  %.158 = select i1 %.not127, i32 11, i32 26
  br label %173

139:                                              ; preds = %132, %132
  switch i32 %6, label %.thread.thread [
    i32 1, label %140
    i32 3, label %142
    i32 6, label %144
  ]

140:                                              ; preds = %139
  %141 = tail call i32 @support_avx()
  %.not126 = icmp eq i32 %141, 0
  %.159 = select i1 %.not126, i32 11, i32 23
  br label %173

142:                                              ; preds = %139
  %143 = tail call i32 @support_avx()
  %.not125 = icmp eq i32 %143, 0
  %.160 = select i1 %.not125, i32 11, i32 25
  br label %173

144:                                              ; preds = %139
  %145 = tail call i32 @support_avx()
  %.not124 = icmp eq i32 %145, 0
  %.161 = select i1 %.not124, i32 11, i32 26
  br label %173

146:                                              ; preds = %131, %131, %131
  %147 = tail call i32 @support_avx512_bf16()
  %.not121 = icmp eq i32 %147, 0
  br i1 %.not121, label %148, label %173

148:                                              ; preds = %146
  %149 = tail call i32 @support_avx512()
  %.not122 = icmp eq i32 %149, 0
  br i1 %.not122, label %150, label %173

150:                                              ; preds = %148
  %151 = tail call i32 @support_avx()
  %.not123 = icmp eq i32 %151, 0
  %.162 = select i1 %.not123, i32 11, i32 27
  br label %173

152:                                              ; preds = %2
  %153 = icmp eq i32 %8, 11
  %154 = icmp eq i32 %3, 15
  %or.cond19 = select i1 %153, i1 %154, i1 false
  br i1 %or.cond19, label %155, label %.thread

155:                                              ; preds = %152
  %156 = icmp eq i32 %4, 9
  br i1 %156, label %157, label %173

157:                                              ; preds = %155
  %158 = tail call i32 @support_avx()
  %.not132 = icmp eq i32 %158, 0
  %.163 = select i1 %.not132, i32 11, i32 27
  br label %173

.thread.thread:                                   ; preds = %139, %132, %127, %9
  br label %173

.thread:                                          ; preds = %152
  switch i32 %8, label %173 [
    i32 6, label %159
    i32 12, label %168
  ]

159:                                              ; preds = %.thread
  switch i32 %3, label %166 [
    i32 6, label %160
    i32 7, label %163
  ]

160:                                              ; preds = %159
  %161 = icmp eq i32 %5, 15
  %162 = icmp slt i32 %7, 14
  %or.cond17 = select i1 %161, i1 %162, i1 false
  %.164 = select i1 %or.cond17, i32 19, i32 17
  br label %173

163:                                              ; preds = %159
  %cond1 = icmp eq i32 %6, 5
  br i1 %cond1, label %164, label %173

164:                                              ; preds = %163
  %165 = tail call i32 @support_avx2()
  %.not131 = icmp eq i32 %165, 0
  %.165 = select i1 %.not131, i32 16, i32 27
  br label %173

166:                                              ; preds = %159
  %167 = icmp sgt i32 %3, 7
  %.166 = select i1 %167, i32 17, i32 12
  br label %173

168:                                              ; preds = %.thread
  %cond = icmp eq i32 %3, 7
  %.off = add i32 %6, -5
  %switch = icmp ult i32 %.off, 2
  %or.cond = select i1 %cond, i1 %switch, i1 false
  br i1 %or.cond, label %169, label %173

169:                                              ; preds = %168
  %170 = tail call i32 @support_avx2()
  %.not130 = icmp eq i32 %170, 0
  %.167 = select i1 %.not130, i32 16, i32 27
  br label %173

.fold.split:                                      ; preds = %131
  br label %173

switch.hole_check:                                ; preds = %12
  %switch.maskindex = trunc nuw i32 %5 to i16
  %switch.shifted = lshr i16 -4097, %switch.maskindex
  %switch.lobit = trunc i16 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %121

switch.lookup:                                    ; preds = %switch.hole_check
  %171 = zext nneg i32 %5 to i64
  %switch.gep = getelementptr inbounds [16 x i32], ptr @switch.table.get_coretype, i64 0, i64 %171
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %173

switch.hole_check170:                             ; preds = %14
  %switch.maskindex172 = trunc nuw i32 %switch.tableidx to i16
  %switch.shifted173 = lshr i16 1011, %switch.maskindex172
  %switch.lobit174 = trunc i16 %switch.shifted173 to i1
  br i1 %switch.lobit174, label %switch.lookup171, label %121

switch.lookup171:                                 ; preds = %switch.hole_check170
  %172 = zext nneg i32 %switch.tableidx to i64
  %switch.gep175 = getelementptr inbounds [10 x i32], ptr @switch.table.get_coretype.1, i64 0, i64 %172
  %switch.load176 = load i32, ptr %switch.gep175, align 4
  br label %173

173:                                              ; preds = %switch.lookup171, %switch.lookup, %.thread.thread, %131, %.fold.split, %44, %.thread, %168, %169, %166, %163, %164, %160, %155, %157, %150, %148, %146, %144, %142, %140, %137, %135, %133, %129, %125, %123, %121, %119, %117, %115, %113, %111, %108, %106, %103, %101, %99, %97, %95, %93, %91, %89, %87, %84, %82, %80, %78, %76, %74, %71, %69, %67, %65, %63, %61, %58, %56, %54, %50, %48, %45, %35, %42, %40, %38, %36, %28, %28, %33, %31, %29, %26, %24, %22, %21, %16, %16, %19, %16, %17, %16, %9, %0, %47, %10
  %.0 = phi i32 [ 28, %47 ], [ 2, %10 ], [ 1, %0 ], [ 1, %9 ], [ 17, %16 ], [ %., %17 ], [ 17, %16 ], [ %.133, %19 ], [ 17, %16 ], [ 17, %16 ], [ 18, %21 ], [ %.134, %22 ], [ %.135, %24 ], [ %.136, %26 ], [ %.137, %29 ], [ %.138, %31 ], [ %.139, %33 ], [ 17, %28 ], [ 17, %28 ], [ %.140, %36 ], [ %.141, %38 ], [ %.142, %40 ], [ %.143, %42 ], [ 17, %35 ], [ 28, %44 ], [ 30, %45 ], [ 17, %48 ], [ 28, %50 ], [ 28, %54 ], [ 24, %56 ], [ %.144, %58 ], [ %.145, %61 ], [ 31, %63 ], [ 30, %65 ], [ 28, %67 ], [ 24, %69 ], [ %.146, %71 ], [ 24, %74 ], [ %.147, %76 ], [ 28, %78 ], [ 24, %80 ], [ %.148, %82 ], [ %.149, %84 ], [ 31, %87 ], [ 30, %89 ], [ 28, %91 ], [ 24, %93 ], [ %.150, %95 ], [ %.151, %97 ], [ 28, %99 ], [ 24, %101 ], [ %.152, %103 ], [ 24, %106 ], [ %.153, %108 ], [ 31, %111 ], [ 30, %113 ], [ 28, %115 ], [ 24, %117 ], [ %.154, %119 ], [ %.155, %121 ], [ 1, %123 ], [ 11, %125 ], [ 10, %129 ], [ 21, %131 ], [ %.156, %133 ], [ %.157, %135 ], [ %.158, %137 ], [ %.159, %140 ], [ %.160, %142 ], [ %.161, %144 ], [ 30, %146 ], [ 28, %148 ], [ %.162, %150 ], [ %.163, %157 ], [ 11, %155 ], [ %.164, %160 ], [ %.165, %164 ], [ 17, %163 ], [ %.166, %166 ], [ %.167, %169 ], [ 17, %168 ], [ 0, %.thread ], [ 11, %.fold.split ], [ 0, %.thread.thread ], [ %switch.load, %switch.lookup ], [ %switch.load176, %switch.lookup171 ]
  ret i32 %.0
}

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 = { 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" }

!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)"}


; Effective O3 passes: CorrelatedValuePropagationPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass,TailCallElimPass