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

; 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_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }

@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@.str.29 = external hidden unnamed_addr constant [99 x i8], align 1
@__func__.libxsmm_aarch64_instruction_asimd_compute = external hidden unnamed_addr constant [42 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [89 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i8 noundef zeroext %4, i32 noundef %5, i32 noundef %6) #3 {
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store i32 %2, ptr %10, align 4, !tbaa !9
  store i32 %3, ptr %11, align 4, !tbaa !9
  store i8 %4, ptr %12, align 1, !tbaa !11
  store i32 %5, ptr %13, align 4, !tbaa !9
  store i32 %6, ptr %14, align 4, !tbaa !9
  %20 = load ptr, ptr %8, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %20, i32 0, i32 6
  %22 = load i32, ptr %21, align 4, !tbaa !12
  %23 = icmp ult i32 %22, 2001
  br i1 %23, label %24, label %35

24:                                               ; preds = %7
  %25 = load ptr, ptr @stderr, align 8, !tbaa !5
  %26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef @.str.29) #4
  %27 = load ptr, ptr %8, align 8, !tbaa !5
  %28 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %29 = icmp ult i32 1, %28
  br i1 %29, label %30, label %32

30:                                               ; preds = %24
  %31 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %33

32:                                               ; preds = %24
  br label %33

33:                                               ; preds = %32, %30
  %34 = phi i32 [ %31, %30 ], [ 1, %32 ]
  call void @libxsmm_handle_error(ptr noundef %27, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 771, i32 noundef %34)
  br label %381

35:                                               ; preds = %7
  %36 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %36, label %38 [
    i32 773856275, label %37
    i32 245373971, label %37
    i32 236985363, label %37
    i32 237011971, label %37
    i32 238139394, label %37
    i32 241179667, label %37
    i32 786439187, label %37
    i32 782244883, label %37
    i32 778050579, label %37
    i32 773896194, label %37
    i32 773871634, label %37
    i32 249568275, label %37
    i32 251679770, label %37
    i32 251659294, label %37
    i32 788530206, label %37
    i32 236995587, label %37
    i32 773866499, label %37
    i32 773884931, label %37
    i32 237017090, label %37
    i32 236993539, label %37
    i32 773883906, label %37
    i32 236991491, label %37
    i32 237012994, label %37
    i32 773888002, label %37
    i32 237021186, label %37
    i32 1602228239, label %37
    i32 260050959, label %37
    i32 237030411, label %37
    i32 1602244623, label %37
    i32 260067343, label %37
    i32 245419019, label %37
    i32 237032459, label %37
    i32 245421067, label %37
    i32 773905419, label %37
    i32 260083727, label %37
    i32 773913611, label %37
    i32 782301194, label %37
    i32 782366730, label %37
    i32 245487626, label %37
    i32 237042699, label %37
    i32 782358538, label %37
    i32 245431307, label %37
    i32 237040651, label %37
    i32 245429259, label %37
    i32 773903371, label %37
    i32 773911563, label %37
    i32 782300171, label %37
    i32 237036555, label %37
    i32 245422090, label %37
    i32 773907467, label %37
    i32 782288906, label %37
    i32 782296075, label %37
    i32 245417994, label %37
    i32 782293002, label %37
    i32 245426186, label %37
    i32 237082634, label %37
    i32 237090826, label %37
    i32 234891267, label %37
    i32 234907651, label %37
    i32 234895363, label %37
    i32 234911747, label %37
    i32 234887171, label %37
    i32 234903555, label %37
    i32 234881043, label %37
    i32 234889235, label %37
    i32 234897427, label %37
    i32 234905619, label %37
    i32 234885139, label %37
    i32 234893331, label %37
    i32 234901523, label %37
    i32 234909715, label %37
    i32 1849748499, label %37
    i32 1317053459, label %37
    i32 1853924371, label %37
    i32 1317055507, label %37
    i32 255913999, label %37
    i32 776010763, label %37
  ]

37:                                               ; preds = %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35
  br label %50

38:                                               ; preds = %35
  %39 = load ptr, ptr @stderr, align 8, !tbaa !5
  %40 = load i32, ptr %9, align 4, !tbaa !9
  %41 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %39, ptr noundef @.str.30, i32 noundef %40) #4
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %44 = icmp ult i32 1, %43
  br i1 %44, label %45, label %47

45:                                               ; preds = %38
  %46 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %48

47:                                               ; preds = %38
  br label %48

48:                                               ; preds = %47, %45
  %49 = phi i32 [ %46, %45 ], [ 1, %47 ]
  call void @libxsmm_handle_error(ptr noundef %42, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 856, i32 noundef %49)
  br label %381

50:                                               ; preds = %37
  %51 = load i32, ptr %9, align 4, !tbaa !9
  %52 = and i32 3, %51
  %53 = icmp eq i32 %52, 2
  br i1 %53, label %54, label %69

54:                                               ; preds = %50
  %55 = load i32, ptr %11, align 4, !tbaa !9
  %56 = icmp ne i32 %55, 127
  br i1 %56, label %57, label %69

57:                                               ; preds = %54
  %58 = load ptr, ptr @stderr, align 8, !tbaa !5
  %59 = load i32, ptr %9, align 4, !tbaa !9
  %60 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %58, ptr noundef @.str.31, i32 noundef %59) #4
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %63 = icmp ult i32 1, %62
  br i1 %63, label %64, label %66

64:                                               ; preds = %57
  %65 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %67

66:                                               ; preds = %57
  br label %67

67:                                               ; preds = %66, %64
  %68 = phi i32 [ %65, %64 ], [ 1, %66 ]
  call void @libxsmm_handle_error(ptr noundef %61, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 862, i32 noundef %68)
  br label %381

69:                                               ; preds = %54, %50
  %70 = load ptr, ptr %8, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %70, i32 0, i32 3
  %72 = load i32, ptr %71, align 8, !tbaa !14
  %73 = icmp ugt i32 %72, 1
  br i1 %73, label %74, label %370

74:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %75, i32 0, i32 2
  %77 = load i32, ptr %76, align 4, !tbaa !15
  %78 = udiv i32 %77, 4
  store i32 %78, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %79, i32 0, i32 0
  %81 = load ptr, ptr %80, align 8, !tbaa !16
  store ptr %81, ptr %16, align 8, !tbaa !5
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %82, i32 0, i32 1
  %84 = load i32, ptr %83, align 8, !tbaa !17
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %85, i32 0, i32 2
  %87 = load i32, ptr %86, align 4, !tbaa !15
  %88 = sub i32 %84, %87
  %89 = icmp ult i32 %88, 4
  br i1 %89, label %90, label %99

90:                                               ; preds = %74
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %93 = icmp ult i32 1, %92
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %97

96:                                               ; preds = %90
  br label %97

97:                                               ; preds = %96, %94
  %98 = phi i32 [ %95, %94 ], [ 1, %96 ]
  call void @libxsmm_handle_error(ptr noundef %91, i32 noundef 90002, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 872, i32 noundef %98)
  store i32 1, ptr %17, align 4
  br label %367

99:                                               ; preds = %74
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = and i32 -256, %100
  %102 = load ptr, ptr %16, align 8, !tbaa !5
  %103 = load i32, ptr %15, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds i32, ptr %102, i64 %104
  store i32 %101, ptr %105, align 4, !tbaa !9
  %106 = load i32, ptr %13, align 4, !tbaa !9
  %107 = and i32 31, %106
  %108 = load ptr, ptr %16, align 8, !tbaa !5
  %109 = load i32, ptr %15, align 4, !tbaa !9
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds i32, ptr %108, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = or i32 %112, %107
  store i32 %113, ptr %111, align 4, !tbaa !9
  %114 = load i32, ptr %10, align 4, !tbaa !9
  %115 = and i32 31, %114
  %116 = shl i32 %115, 5
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = load i32, ptr %15, align 4, !tbaa !9
  %119 = zext i32 %118 to i64
  %120 = getelementptr inbounds i32, ptr %117, i64 %119
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = or i32 %121, %116
  store i32 %122, ptr %120, align 4, !tbaa !9
  %123 = load i32, ptr %9, align 4, !tbaa !9
  %124 = and i32 3, %123
  %125 = icmp eq i32 %124, 3
  br i1 %125, label %126, label %136

126:                                              ; preds = %99
  %127 = load i32, ptr %11, align 4, !tbaa !9
  %128 = and i32 31, %127
  %129 = shl i32 %128, 16
  %130 = load ptr, ptr %16, align 8, !tbaa !5
  %131 = load i32, ptr %15, align 4, !tbaa !9
  %132 = zext i32 %131 to i64
  %133 = getelementptr inbounds i32, ptr %130, i64 %132
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = or i32 %134, %129
  store i32 %135, ptr %133, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %126, %99
  %137 = load i32, ptr %14, align 4, !tbaa !9
  %138 = and i32 1, %137
  %139 = shl i32 %138, 30
  %140 = load ptr, ptr %16, align 8, !tbaa !5
  %141 = load i32, ptr %15, align 4, !tbaa !9
  %142 = zext i32 %141 to i64
  %143 = getelementptr inbounds i32, ptr %140, i64 %142
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = or i32 %144, %139
  store i32 %145, ptr %143, align 4, !tbaa !9
  %146 = load i32, ptr %9, align 4, !tbaa !9
  %147 = and i32 16, %146
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %174

149:                                              ; preds = %136
  %150 = load i32, ptr %9, align 4, !tbaa !9
  %151 = and i32 8, %150
  %152 = icmp eq i32 %151, 8
  br i1 %152, label %153, label %163

153:                                              ; preds = %149
  %154 = load i32, ptr %14, align 4, !tbaa !9
  %155 = and i32 2, %154
  %156 = shl i32 %155, 21
  %157 = load ptr, ptr %16, align 8, !tbaa !5
  %158 = load i32, ptr %15, align 4, !tbaa !9
  %159 = zext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %157, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = or i32 %161, %156
  store i32 %162, ptr %160, align 4, !tbaa !9
  br label %173

163:                                              ; preds = %149
  %164 = load i32, ptr %14, align 4, !tbaa !9
  %165 = and i32 6, %164
  %166 = shl i32 %165, 21
  %167 = load ptr, ptr %16, align 8, !tbaa !5
  %168 = load i32, ptr %15, align 4, !tbaa !9
  %169 = zext i32 %168 to i64
  %170 = getelementptr inbounds i32, ptr %167, i64 %169
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = or i32 %171, %166
  store i32 %172, ptr %170, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %163, %153
  br label %174

174:                                              ; preds = %173, %136
  %175 = load i32, ptr %9, align 4, !tbaa !9
  %176 = and i32 4, %175
  %177 = icmp eq i32 %176, 4
  br i1 %177, label %178, label %241

178:                                              ; preds = %174
  %179 = load i32, ptr %9, align 4, !tbaa !9
  %180 = and i32 24, %179
  %181 = icmp ne i32 %180, 24
  br i1 %181, label %182, label %241

182:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #4
  %183 = load i32, ptr %14, align 4, !tbaa !9
  %184 = icmp eq i32 %183, 7
  br i1 %184, label %185, label %189

185:                                              ; preds = %182
  %186 = load i8, ptr %12, align 1, !tbaa !11
  %187 = zext i8 %186 to i32
  %188 = shl i32 %187, 1
  br label %192

189:                                              ; preds = %182
  %190 = load i8, ptr %12, align 1, !tbaa !11
  %191 = zext i8 %190 to i32
  br label %192

192:                                              ; preds = %189, %185
  %193 = phi i32 [ %188, %185 ], [ %191, %189 ]
  %194 = trunc i32 %193 to i8
  store i8 %194, ptr %18, align 1, !tbaa !11
  %195 = load i32, ptr %14, align 4, !tbaa !9
  %196 = icmp eq i32 %195, 7
  br i1 %196, label %197, label %201

197:                                              ; preds = %192
  %198 = load i8, ptr %12, align 1, !tbaa !11
  %199 = zext i8 %198 to i32
  %200 = icmp sgt i32 %199, 2
  br i1 %200, label %205, label %201

201:                                              ; preds = %197, %192
  %202 = load i8, ptr %12, align 1, !tbaa !11
  %203 = zext i8 %202 to i32
  %204 = icmp sgt i32 %203, 4
  br i1 %204, label %205, label %217

205:                                              ; preds = %201, %197
  %206 = load ptr, ptr @stderr, align 8, !tbaa !5
  %207 = load i32, ptr %9, align 4, !tbaa !9
  %208 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %206, ptr noundef @.str.32, i32 noundef %207) #4
  %209 = load ptr, ptr %8, align 8, !tbaa !5
  %210 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %211 = icmp ult i32 1, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %205
  %213 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %215

214:                                              ; preds = %205
  br label %215

215:                                              ; preds = %214, %212
  %216 = phi i32 [ %213, %212 ], [ 1, %214 ]
  call void @libxsmm_handle_error(ptr noundef %209, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 901, i32 noundef %216)
  store i32 1, ptr %17, align 4
  br label %238

217:                                              ; preds = %201
  %218 = load i8, ptr %18, align 1, !tbaa !11
  %219 = zext i8 %218 to i32
  %220 = and i32 1, %219
  %221 = shl i32 %220, 21
  %222 = load ptr, ptr %16, align 8, !tbaa !5
  %223 = load i32, ptr %15, align 4, !tbaa !9
  %224 = zext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %222, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = or i32 %226, %221
  store i32 %227, ptr %225, align 4, !tbaa !9
  %228 = load i8, ptr %18, align 1, !tbaa !11
  %229 = zext i8 %228 to i32
  %230 = and i32 2, %229
  %231 = shl i32 %230, 10
  %232 = load ptr, ptr %16, align 8, !tbaa !5
  %233 = load i32, ptr %15, align 4, !tbaa !9
  %234 = zext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %232, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = or i32 %236, %231
  store i32 %237, ptr %235, align 4, !tbaa !9
  store i32 0, ptr %17, align 4
  br label %238

238:                                              ; preds = %217, %215
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #4
  %239 = load i32, ptr %17, align 4
  switch i32 %239, label %367 [
    i32 0, label %240
  ]

240:                                              ; preds = %238
  br label %241

241:                                              ; preds = %240, %178, %174
  %242 = load i32, ptr %9, align 4, !tbaa !9
  %243 = and i32 24, %242
  %244 = icmp eq i32 %243, 24
  br i1 %244, label %245, label %362

245:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #4
  store i8 0, ptr %19, align 1, !tbaa !11
  %246 = load i32, ptr %14, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %251, label %248

248:                                              ; preds = %245
  %249 = load i32, ptr %14, align 4, !tbaa !9
  %250 = icmp eq i32 %249, 1
  br i1 %250, label %251, label %268

251:                                              ; preds = %248, %245
  %252 = load i32, ptr %9, align 4, !tbaa !9
  %253 = and i32 4, %252
  %254 = icmp eq i32 %253, 4
  br i1 %254, label %255, label %260

255:                                              ; preds = %251
  %256 = load i8, ptr %12, align 1, !tbaa !11
  %257 = zext i8 %256 to i32
  %258 = and i32 %257, 7
  %259 = sub nsw i32 8, %258
  br label %264

260:                                              ; preds = %251
  %261 = load i8, ptr %12, align 1, !tbaa !11
  %262 = zext i8 %261 to i32
  %263 = and i32 %262, 7
  br label %264

264:                                              ; preds = %260, %255
  %265 = phi i32 [ %259, %255 ], [ %263, %260 ]
  %266 = or i32 8, %265
  %267 = trunc i32 %266 to i8
  store i8 %267, ptr %19, align 1, !tbaa !11
  br label %349

268:                                              ; preds = %248
  %269 = load i32, ptr %14, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 2
  br i1 %270, label %274, label %271

271:                                              ; preds = %268
  %272 = load i32, ptr %14, align 4, !tbaa !9
  %273 = icmp eq i32 %272, 3
  br i1 %273, label %274, label %291

274:                                              ; preds = %271, %268
  %275 = load i32, ptr %9, align 4, !tbaa !9
  %276 = and i32 4, %275
  %277 = icmp eq i32 %276, 4
  br i1 %277, label %278, label %283

278:                                              ; preds = %274
  %279 = load i8, ptr %12, align 1, !tbaa !11
  %280 = zext i8 %279 to i32
  %281 = and i32 %280, 15
  %282 = sub nsw i32 16, %281
  br label %287

283:                                              ; preds = %274
  %284 = load i8, ptr %12, align 1, !tbaa !11
  %285 = zext i8 %284 to i32
  %286 = and i32 %285, 15
  br label %287

287:                                              ; preds = %283, %278
  %288 = phi i32 [ %282, %278 ], [ %286, %283 ]
  %289 = or i32 16, %288
  %290 = trunc i32 %289 to i8
  store i8 %290, ptr %19, align 1, !tbaa !11
  br label %348

291:                                              ; preds = %271
  %292 = load i32, ptr %14, align 4, !tbaa !9
  %293 = icmp eq i32 %292, 4
  br i1 %293, label %297, label %294

294:                                              ; preds = %291
  %295 = load i32, ptr %14, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 5
  br i1 %296, label %297, label %314

297:                                              ; preds = %294, %291
  %298 = load i32, ptr %9, align 4, !tbaa !9
  %299 = and i32 4, %298
  %300 = icmp eq i32 %299, 4
  br i1 %300, label %301, label %306

301:                                              ; preds = %297
  %302 = load i8, ptr %12, align 1, !tbaa !11
  %303 = zext i8 %302 to i32
  %304 = and i32 %303, 31
  %305 = sub nsw i32 32, %304
  br label %310

306:                                              ; preds = %297
  %307 = load i8, ptr %12, align 1, !tbaa !11
  %308 = zext i8 %307 to i32
  %309 = and i32 %308, 31
  br label %310

310:                                              ; preds = %306, %301
  %311 = phi i32 [ %305, %301 ], [ %309, %306 ]
  %312 = or i32 32, %311
  %313 = trunc i32 %312 to i8
  store i8 %313, ptr %19, align 1, !tbaa !11
  br label %347

314:                                              ; preds = %294
  %315 = load i32, ptr %14, align 4, !tbaa !9
  %316 = icmp eq i32 %315, 7
  br i1 %316, label %317, label %334

317:                                              ; preds = %314
  %318 = load i32, ptr %9, align 4, !tbaa !9
  %319 = and i32 4, %318
  %320 = icmp eq i32 %319, 4
  br i1 %320, label %321, label %326

321:                                              ; preds = %317
  %322 = load i8, ptr %12, align 1, !tbaa !11
  %323 = zext i8 %322 to i32
  %324 = and i32 %323, 63
  %325 = sub nsw i32 64, %324
  br label %330

326:                                              ; preds = %317
  %327 = load i8, ptr %12, align 1, !tbaa !11
  %328 = zext i8 %327 to i32
  %329 = and i32 %328, 63
  br label %330

330:                                              ; preds = %326, %321
  %331 = phi i32 [ %325, %321 ], [ %329, %326 ]
  %332 = or i32 64, %331
  %333 = trunc i32 %332 to i8
  store i8 %333, ptr %19, align 1, !tbaa !11
  br label %346

334:                                              ; preds = %314
  %335 = load ptr, ptr @stderr, align 8, !tbaa !5
  %336 = load i32, ptr %9, align 4, !tbaa !9
  %337 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %335, ptr noundef @.str.33, i32 noundef %336) #4
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %340 = icmp ult i32 1, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %334
  %342 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %344

343:                                              ; preds = %334
  br label %344

344:                                              ; preds = %343, %341
  %345 = phi i32 [ %342, %341 ], [ 1, %343 ]
  call void @libxsmm_handle_error(ptr noundef %338, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 923, i32 noundef %345)
  store i32 1, ptr %17, align 4
  br label %359

346:                                              ; preds = %330
  br label %347

347:                                              ; preds = %346, %310
  br label %348

348:                                              ; preds = %347, %287
  br label %349

349:                                              ; preds = %348, %264
  %350 = load i8, ptr %19, align 1, !tbaa !11
  %351 = zext i8 %350 to i32
  %352 = shl i32 %351, 16
  %353 = load ptr, ptr %16, align 8, !tbaa !5
  %354 = load i32, ptr %15, align 4, !tbaa !9
  %355 = zext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = or i32 %357, %352
  store i32 %358, ptr %356, align 4, !tbaa !9
  store i32 0, ptr %17, align 4
  br label %359

359:                                              ; preds = %349, %344
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  %360 = load i32, ptr %17, align 4
  switch i32 %360, label %367 [
    i32 0, label %361
  ]

361:                                              ; preds = %359
  br label %362

362:                                              ; preds = %361, %241
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %363, i32 0, i32 2
  %365 = load i32, ptr %364, align 4, !tbaa !15
  %366 = add i32 %365, 4
  store i32 %366, ptr %364, align 4, !tbaa !15
  store i32 0, ptr %17, align 4
  br label %367

367:                                              ; preds = %362, %359, %238, %97
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  %368 = load i32, ptr %17, align 4
  switch i32 %368, label %382 [
    i32 0, label %369
    i32 1, label %381
  ]

369:                                              ; preds = %367
  br label %381

370:                                              ; preds = %69
  %371 = load ptr, ptr @stderr, align 8, !tbaa !5
  %372 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %371, ptr noundef @.str.34) #4
  %373 = load ptr, ptr %8, align 8, !tbaa !5
  %374 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %375 = icmp ult i32 1, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %370
  %377 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %379

378:                                              ; preds = %370
  br label %379

379:                                              ; preds = %378, %376
  %380 = phi i32 [ %377, %376 ], [ 1, %378 ]
  call void @libxsmm_handle_error(ptr noundef %373, i32 noundef 90000, ptr noundef @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef @.str.1, i32 noundef 934, i32 noundef %380)
  br label %381

381:                                              ; preds = %379, %369, %367, %67, %48, %33
  ret void

382:                                              ; preds = %367
  unreachable
}

attributes #0 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 28}
!13 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!14 = !{!13, !10, i64 16}
!15 = !{!13, !10, i64 12}
!16 = !{!13, !6, i64 0}
!17 = !{!13, !10, i64 8}


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

@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@.str.29 = external hidden unnamed_addr constant [99 x i8], align 1
@__func__.libxsmm_aarch64_instruction_asimd_compute = external hidden unnamed_addr constant [42 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [89 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i8 noundef zeroext %4, i32 noundef %5, i32 noundef %6) local_unnamed_addr #2 {
  %8 = getelementptr inbounds i8, ptr %0, i64 28
  %9 = load i32, ptr %8, align 4, !tbaa !5
  %10 = icmp ult i32 %9, 2001
  br i1 %10, label %11, label %18

11:                                               ; preds = %7
  %12 = load ptr, ptr @stderr, align 8, !tbaa !11
  %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.29) #3
  %14 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %15 = icmp ugt i32 %14, 1
  %16 = load i32, ptr @libxsmm_verbosity, align 4
  %17 = select i1 %15, i32 %16, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 771, i32 noundef %17) #4
  br label %127

18:                                               ; preds = %7
  switch i32 %1, label %19 [
    i32 773856275, label %26
    i32 245373971, label %26
    i32 236985363, label %26
    i32 237011971, label %26
    i32 238139394, label %26
    i32 241179667, label %26
    i32 786439187, label %26
    i32 782244883, label %26
    i32 778050579, label %26
    i32 773896194, label %26
    i32 773871634, label %26
    i32 249568275, label %26
    i32 251679770, label %26
    i32 251659294, label %26
    i32 788530206, label %26
    i32 236995587, label %26
    i32 773866499, label %26
    i32 773884931, label %26
    i32 237017090, label %26
    i32 236993539, label %26
    i32 773883906, label %26
    i32 236991491, label %26
    i32 237012994, label %26
    i32 773888002, label %26
    i32 237021186, label %26
    i32 1602228239, label %26
    i32 260050959, label %26
    i32 237030411, label %26
    i32 1602244623, label %26
    i32 260067343, label %26
    i32 245419019, label %26
    i32 237032459, label %26
    i32 245421067, label %26
    i32 773905419, label %26
    i32 260083727, label %26
    i32 773913611, label %26
    i32 782301194, label %26
    i32 782366730, label %26
    i32 245487626, label %26
    i32 237042699, label %26
    i32 782358538, label %26
    i32 245431307, label %26
    i32 237040651, label %26
    i32 245429259, label %26
    i32 773903371, label %26
    i32 773911563, label %26
    i32 782300171, label %26
    i32 237036555, label %26
    i32 245422090, label %26
    i32 773907467, label %26
    i32 782288906, label %26
    i32 782296075, label %26
    i32 245417994, label %26
    i32 782293002, label %26
    i32 245426186, label %26
    i32 237082634, label %26
    i32 237090826, label %26
    i32 234891267, label %26
    i32 234907651, label %26
    i32 234895363, label %26
    i32 234911747, label %26
    i32 234887171, label %26
    i32 234903555, label %26
    i32 234881043, label %26
    i32 234889235, label %26
    i32 234897427, label %26
    i32 234905619, label %26
    i32 234885139, label %26
    i32 234893331, label %26
    i32 234901523, label %26
    i32 234909715, label %26
    i32 1849748499, label %26
    i32 1317053459, label %26
    i32 1853924371, label %26
    i32 1317055507, label %26
    i32 255913999, label %26
    i32 776010763, label %26
  ]

19:                                               ; preds = %18
  %20 = load ptr, ptr @stderr, align 8, !tbaa !11
  %21 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %20, ptr noundef nonnull @.str.30, i32 noundef %1) #3
  %22 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %23 = icmp ugt i32 %22, 1
  %24 = load i32, ptr @libxsmm_verbosity, align 4
  %25 = select i1 %23, i32 %24, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 856, i32 noundef %25) #4
  br label %127

26:                                               ; preds = %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18
  %27 = and i32 %1, 3
  %28 = icmp eq i32 %27, 2
  %29 = icmp ne i32 %3, 127
  %or.cond = and i1 %28, %29
  br i1 %or.cond, label %30, label %37

30:                                               ; preds = %26
  %31 = load ptr, ptr @stderr, align 8, !tbaa !11
  %32 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull @.str.31, i32 noundef %1) #3
  %33 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %34 = icmp ugt i32 %33, 1
  %35 = load i32, ptr @libxsmm_verbosity, align 4
  %36 = select i1 %34, i32 %35, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 862, i32 noundef %36) #4
  br label %127

37:                                               ; preds = %26
  %38 = getelementptr inbounds i8, ptr %0, i64 16
  %39 = load i32, ptr %38, align 8, !tbaa !13
  %40 = icmp ugt i32 %39, 1
  br i1 %40, label %41, label %120

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %0, i64 12
  %43 = load i32, ptr %42, align 4, !tbaa !14
  %44 = getelementptr inbounds i8, ptr %0, i64 8
  %45 = load i32, ptr %44, align 8, !tbaa !15
  %46 = sub i32 %45, %43
  %47 = icmp ult i32 %46, 4
  br i1 %47, label %48, label %53

48:                                               ; preds = %41
  %49 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %50 = icmp ugt i32 %49, 1
  %51 = load i32, ptr @libxsmm_verbosity, align 4
  %52 = select i1 %50, i32 %51, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90002, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 872, i32 noundef %52) #4
  br label %127

53:                                               ; preds = %41
  %54 = load ptr, ptr %0, align 8, !tbaa !16
  %55 = lshr i32 %43, 2
  %56 = and i32 %1, -256
  %57 = zext nneg i32 %55 to i64
  %58 = getelementptr inbounds i32, ptr %54, i64 %57
  %59 = and i32 %5, 31
  %60 = shl i32 %2, 5
  %61 = and i32 %60, 992
  %62 = icmp eq i32 %27, 3
  %63 = shl i32 %3, 16
  %64 = and i32 %63, 2031616
  %65 = select i1 %62, i32 %64, i32 0
  %66 = shl i32 %6, 30
  %67 = and i32 %66, 1073741824
  %68 = or i32 %61, %56
  %69 = or disjoint i32 %68, %59
  %storemerge = or i32 %69, %65
  %70 = or i32 %storemerge, %67
  %71 = and i32 %1, 16
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %.sink.split, label %77

.sink.split:                                      ; preds = %53
  %73 = and i32 %1, 8
  %.not = icmp eq i32 %73, 0
  %74 = shl i32 %6, 21
  %. = select i1 %.not, i32 12582912, i32 4194304
  %75 = and i32 %74, %.
  %76 = or i32 %70, %75
  br label %77

77:                                               ; preds = %.sink.split, %53
  %storemerge118 = phi i32 [ %76, %.sink.split ], [ %70, %53 ]
  store i32 %storemerge118, ptr %58, align 4, !tbaa !12
  %78 = and i32 %1, 4
  %.not99 = icmp eq i32 %78, 0
  %79 = and i32 %1, 24
  %.not100 = icmp eq i32 %79, 24
  %or.cond107 = or i1 %.not99, %.not100
  br i1 %or.cond107, label %98, label %80

80:                                               ; preds = %77
  %81 = icmp eq i32 %6, 7
  %82 = icmp ugt i8 %4, 2
  %or.cond5 = and i1 %82, %81
  %83 = icmp ugt i8 %4, 4
  %or.cond8 = or i1 %83, %or.cond5
  br i1 %or.cond8, label %.thread, label %.thread108

.thread:                                          ; preds = %80
  %84 = load ptr, ptr @stderr, align 8, !tbaa !11
  %85 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %84, ptr noundef nonnull @.str.32, i32 noundef %1) #3
  %86 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %87 = icmp ugt i32 %86, 1
  %88 = load i32, ptr @libxsmm_verbosity, align 4
  %89 = select i1 %87, i32 %88, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 901, i32 noundef %89) #4
  br label %127

.thread108:                                       ; preds = %80
  %90 = zext i1 %81 to i8
  %91 = shl nuw nsw i8 %4, %90
  %92 = zext nneg i8 %91 to i32
  %93 = shl nuw nsw i32 %92, 21
  %94 = and i32 %93, 2097152
  %95 = shl nuw nsw i32 %92, 10
  %96 = and i32 %95, 2048
  %97 = or disjoint i32 %96, %94
  br label %.sink.split115

98:                                               ; preds = %77
  br i1 %.not100, label %99, label %117

99:                                               ; preds = %98
  %or.cond10 = icmp ult i32 %6, 2
  br i1 %or.cond10, label %.critedge, label %100

100:                                              ; preds = %99
  %101 = and i32 %6, -2
  switch i32 %101, label %103 [
    i32 2, label %.critedge
    i32 4, label %102
  ]

102:                                              ; preds = %100
  br label %.critedge

103:                                              ; preds = %100
  %104 = icmp eq i32 %6, 7
  br i1 %104, label %.critedge, label %105

105:                                              ; preds = %103
  %106 = load ptr, ptr @stderr, align 8, !tbaa !11
  %107 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %106, ptr noundef nonnull @.str.33, i32 noundef %1) #3
  %108 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %109 = icmp ugt i32 %108, 1
  %110 = load i32, ptr @libxsmm_verbosity, align 4
  %111 = select i1 %109, i32 %110, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 923, i32 noundef %111) #4
  br label %127

.critedge:                                        ; preds = %103, %100, %99, %102
  %.sink114 = phi i8 [ 31, %102 ], [ 7, %99 ], [ 15, %100 ], [ 63, %103 ]
  %.sink112 = phi i8 [ 32, %102 ], [ 8, %99 ], [ 16, %100 ], [ 64, %103 ]
  %112 = and i8 %.sink114, %4
  %narrow103 = sub nuw nsw i8 %.sink112, %112
  %.in104 = select i1 %.not99, i8 %112, i8 %narrow103
  %113 = or i8 %.in104, %.sink112
  %114 = zext nneg i8 %113 to i32
  %115 = shl nuw nsw i32 %114, 16
  br label %.sink.split115

.sink.split115:                                   ; preds = %.critedge, %.thread108
  %.sink117 = phi i32 [ %97, %.thread108 ], [ %115, %.critedge ]
  %116 = or i32 %.sink117, %storemerge118
  store i32 %116, ptr %58, align 4, !tbaa !12
  br label %117

117:                                              ; preds = %.sink.split115, %98
  %118 = load i32, ptr %42, align 4, !tbaa !14
  %119 = add i32 %118, 4
  store i32 %119, ptr %42, align 4, !tbaa !14
  br label %127

120:                                              ; preds = %37
  %121 = load ptr, ptr @stderr, align 8, !tbaa !11
  %122 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %121, ptr noundef nonnull @.str.34) #3
  %123 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !12
  %124 = icmp ugt i32 %123, 1
  %125 = load i32, ptr @libxsmm_verbosity, align 4
  %126 = select i1 %124, i32 %125, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_aarch64_instruction_asimd_compute, ptr noundef nonnull @.str.1, i32 noundef 934, i32 noundef %126) #4
  br label %127

127:                                              ; preds = %.thread, %48, %117, %105, %120, %30, %19, %11
  ret void
}

attributes #0 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { cold nounwind }
attributes #4 = { 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, !10, i64 28}
!6 = !{!"libxsmm_generated_code", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!10, !10, i64 0}
!13 = !{!6, !10, i64 16}
!14 = !{!6, !10, i64 12}
!15 = !{!6, !10, i64 8}
!16 = !{!6, !7, i64 0}


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