; LLVM IR from moarseniy/CudaFEMproject :: FEMproject/fem_utils/src/cpu_fem_utils.ll (ZN16CPU_ElementsData17genGradientMatrixEv)

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

%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.7" }
%"struct.std::_Head_base.7" = type { ptr }
%class.ElementsData = type { ptr, i64, i64, i64, i64, i64, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.CGMData, ptr, ptr, ptr }
%struct.CGMData = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

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

declare void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(49), i64 noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16CPU_ElementsData17genGradientMatrixEv(ptr noundef nonnull align 8 dereferenceable(336) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i64, align 8
  %4 = alloca %"class.std::unique_ptr", align 8
  %5 = alloca %"class.std::unique_ptr", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %8 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #4
  store i64 0, ptr %3, align 8, !tbaa !9
  br label %9

9:                                                ; preds = %208, %1
  %10 = load i64, ptr %3, align 8, !tbaa !9
  %11 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 2
  %12 = load i64, ptr %11, align 8, !tbaa !11
  %13 = icmp ult i64 %10, %12
  br i1 %13, label %15, label %14

14:                                               ; preds = %9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #4
  br label %220

15:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
  %16 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 30
  %17 = load ptr, ptr %16, align 8, !tbaa !15
  %18 = load i64, ptr %3, align 8, !tbaa !9
  call void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %4, ptr noundef nonnull align 8 dereferenceable(49) %17, i64 noundef %18)
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  %19 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 22
  %20 = load ptr, ptr %19, align 8, !tbaa !16
  %21 = load i64, ptr %3, align 8, !tbaa !9
  invoke void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %5, ptr noundef nonnull align 8 dereferenceable(49) %20, i64 noundef %21)
          to label %22 unwind label %211

22:                                               ; preds = %15
  %23 = call noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %24 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 1
  %25 = load i64, ptr %24, align 8, !tbaa !17
  %26 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 1
  %27 = load i64, ptr %26, align 8, !tbaa !17
  %28 = add i64 %27, 1
  %29 = load ptr, ptr %23, align 8, !tbaa !18
  %30 = getelementptr inbounds ptr, ptr %29, i64 26
  %31 = load ptr, ptr %30, align 8
  invoke void %31(ptr noundef nonnull align 8 dereferenceable(49) %23, i64 noundef %25, i64 noundef %28)
          to label %32 unwind label %215

32:                                               ; preds = %22
  %33 = call noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %34 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 1
  %35 = load i64, ptr %34, align 8, !tbaa !17
  %36 = sub i64 %35, 1
  %37 = mul i64 3, %36
  %38 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 1
  %39 = load i64, ptr %38, align 8, !tbaa !17
  %40 = sub i64 %39, 1
  %41 = mul i64 6, %40
  %42 = load ptr, ptr %33, align 8, !tbaa !18
  %43 = getelementptr inbounds ptr, ptr %42, i64 26
  %44 = load ptr, ptr %43, align 8
  invoke void %44(ptr noundef nonnull align 8 dereferenceable(49) %33, i64 noundef %37, i64 noundef %41)
          to label %45 unwind label %215

45:                                               ; preds = %32
  %46 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %47 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %46, i64 noundef 1, i64 noundef 1)
          to label %48 unwind label %215

48:                                               ; preds = %45
  %49 = load float, ptr %47, align 4, !tbaa !20
  %50 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %51 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %50, i64 noundef 1, i64 noundef 2)
          to label %52 unwind label %215

52:                                               ; preds = %48
  %53 = load float, ptr %51, align 4, !tbaa !20
  %54 = fsub float %49, %53
  %55 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %56 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %55, i64 noundef 0, i64 noundef 0)
          to label %57 unwind label %215

57:                                               ; preds = %52
  store float %54, ptr %56, align 4, !tbaa !20
  %58 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %59 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %58, i64 noundef 0, i64 noundef 1)
          to label %60 unwind label %215

60:                                               ; preds = %57
  store float 0.000000e+00, ptr %59, align 4, !tbaa !20
  %61 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %62 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %61, i64 noundef 1, i64 noundef 2)
          to label %63 unwind label %215

63:                                               ; preds = %60
  %64 = load float, ptr %62, align 4, !tbaa !20
  %65 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %66 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %65, i64 noundef 1, i64 noundef 0)
          to label %67 unwind label %215

67:                                               ; preds = %63
  %68 = load float, ptr %66, align 4, !tbaa !20
  %69 = fsub float %64, %68
  %70 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %71 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %70, i64 noundef 0, i64 noundef 2)
          to label %72 unwind label %215

72:                                               ; preds = %67
  store float %69, ptr %71, align 4, !tbaa !20
  %73 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %74 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %73, i64 noundef 0, i64 noundef 3)
          to label %75 unwind label %215

75:                                               ; preds = %72
  store float 0.000000e+00, ptr %74, align 4, !tbaa !20
  %76 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %77 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %76, i64 noundef 1, i64 noundef 0)
          to label %78 unwind label %215

78:                                               ; preds = %75
  %79 = load float, ptr %77, align 4, !tbaa !20
  %80 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %81 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %80, i64 noundef 1, i64 noundef 1)
          to label %82 unwind label %215

82:                                               ; preds = %78
  %83 = load float, ptr %81, align 4, !tbaa !20
  %84 = fsub float %79, %83
  %85 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %86 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %85, i64 noundef 0, i64 noundef 4)
          to label %87 unwind label %215

87:                                               ; preds = %82
  store float %84, ptr %86, align 4, !tbaa !20
  %88 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %89 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %88, i64 noundef 0, i64 noundef 5)
          to label %90 unwind label %215

90:                                               ; preds = %87
  store float 0.000000e+00, ptr %89, align 4, !tbaa !20
  %91 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %92 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %91, i64 noundef 1, i64 noundef 0)
          to label %93 unwind label %215

93:                                               ; preds = %90
  store float 0.000000e+00, ptr %92, align 4, !tbaa !20
  %94 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %95 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %94, i64 noundef 0, i64 noundef 2)
          to label %96 unwind label %215

96:                                               ; preds = %93
  %97 = load float, ptr %95, align 4, !tbaa !20
  %98 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %99 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %98, i64 noundef 0, i64 noundef 1)
          to label %100 unwind label %215

100:                                              ; preds = %96
  %101 = load float, ptr %99, align 4, !tbaa !20
  %102 = fsub float %97, %101
  %103 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %104 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %103, i64 noundef 1, i64 noundef 1)
          to label %105 unwind label %215

105:                                              ; preds = %100
  store float %102, ptr %104, align 4, !tbaa !20
  %106 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %107 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %106, i64 noundef 1, i64 noundef 2)
          to label %108 unwind label %215

108:                                              ; preds = %105
  store float 0.000000e+00, ptr %107, align 4, !tbaa !20
  %109 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %110 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %109, i64 noundef 0, i64 noundef 0)
          to label %111 unwind label %215

111:                                              ; preds = %108
  %112 = load float, ptr %110, align 4, !tbaa !20
  %113 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %114 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %113, i64 noundef 0, i64 noundef 2)
          to label %115 unwind label %215

115:                                              ; preds = %111
  %116 = load float, ptr %114, align 4, !tbaa !20
  %117 = fsub float %112, %116
  %118 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %119 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %118, i64 noundef 1, i64 noundef 3)
          to label %120 unwind label %215

120:                                              ; preds = %115
  store float %117, ptr %119, align 4, !tbaa !20
  %121 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %122 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %121, i64 noundef 1, i64 noundef 4)
          to label %123 unwind label %215

123:                                              ; preds = %120
  store float 0.000000e+00, ptr %122, align 4, !tbaa !20
  %124 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %125 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %124, i64 noundef 0, i64 noundef 1)
          to label %126 unwind label %215

126:                                              ; preds = %123
  %127 = load float, ptr %125, align 4, !tbaa !20
  %128 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %129 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %128, i64 noundef 0, i64 noundef 0)
          to label %130 unwind label %215

130:                                              ; preds = %126
  %131 = load float, ptr %129, align 4, !tbaa !20
  %132 = fsub float %127, %131
  %133 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %134 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %133, i64 noundef 1, i64 noundef 5)
          to label %135 unwind label %215

135:                                              ; preds = %130
  store float %132, ptr %134, align 4, !tbaa !20
  %136 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %137 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %136, i64 noundef 0, i64 noundef 2)
          to label %138 unwind label %215

138:                                              ; preds = %135
  %139 = load float, ptr %137, align 4, !tbaa !20
  %140 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %141 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %140, i64 noundef 0, i64 noundef 1)
          to label %142 unwind label %215

142:                                              ; preds = %138
  %143 = load float, ptr %141, align 4, !tbaa !20
  %144 = fsub float %139, %143
  %145 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %146 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %145, i64 noundef 2, i64 noundef 0)
          to label %147 unwind label %215

147:                                              ; preds = %142
  store float %144, ptr %146, align 4, !tbaa !20
  %148 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %149 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %148, i64 noundef 1, i64 noundef 1)
          to label %150 unwind label %215

150:                                              ; preds = %147
  %151 = load float, ptr %149, align 4, !tbaa !20
  %152 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %153 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %152, i64 noundef 1, i64 noundef 2)
          to label %154 unwind label %215

154:                                              ; preds = %150
  %155 = load float, ptr %153, align 4, !tbaa !20
  %156 = fsub float %151, %155
  %157 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %158 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %157, i64 noundef 2, i64 noundef 1)
          to label %159 unwind label %215

159:                                              ; preds = %154
  store float %156, ptr %158, align 4, !tbaa !20
  %160 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %161 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %160, i64 noundef 0, i64 noundef 0)
          to label %162 unwind label %215

162:                                              ; preds = %159
  %163 = load float, ptr %161, align 4, !tbaa !20
  %164 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %165 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %164, i64 noundef 0, i64 noundef 2)
          to label %166 unwind label %215

166:                                              ; preds = %162
  %167 = load float, ptr %165, align 4, !tbaa !20
  %168 = fsub float %163, %167
  %169 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %170 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %169, i64 noundef 2, i64 noundef 2)
          to label %171 unwind label %215

171:                                              ; preds = %166
  store float %168, ptr %170, align 4, !tbaa !20
  %172 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %173 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %172, i64 noundef 1, i64 noundef 2)
          to label %174 unwind label %215

174:                                              ; preds = %171
  %175 = load float, ptr %173, align 4, !tbaa !20
  %176 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %177 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %176, i64 noundef 1, i64 noundef 0)
          to label %178 unwind label %215

178:                                              ; preds = %174
  %179 = load float, ptr %177, align 4, !tbaa !20
  %180 = fsub float %175, %179
  %181 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %182 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %181, i64 noundef 2, i64 noundef 3)
          to label %183 unwind label %215

183:                                              ; preds = %178
  store float %180, ptr %182, align 4, !tbaa !20
  %184 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %185 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %184, i64 noundef 0, i64 noundef 1)
          to label %186 unwind label %215

186:                                              ; preds = %183
  %187 = load float, ptr %185, align 4, !tbaa !20
  %188 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %189 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %188, i64 noundef 0, i64 noundef 0)
          to label %190 unwind label %215

190:                                              ; preds = %186
  %191 = load float, ptr %189, align 4, !tbaa !20
  %192 = fsub float %187, %191
  %193 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %194 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %193, i64 noundef 2, i64 noundef 4)
          to label %195 unwind label %215

195:                                              ; preds = %190
  store float %192, ptr %194, align 4, !tbaa !20
  %196 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %197 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %196, i64 noundef 1, i64 noundef 0)
          to label %198 unwind label %215

198:                                              ; preds = %195
  %199 = load float, ptr %197, align 4, !tbaa !20
  %200 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  %201 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %200, i64 noundef 1, i64 noundef 1)
          to label %202 unwind label %215

202:                                              ; preds = %198
  %203 = load float, ptr %201, align 4, !tbaa !20
  %204 = fsub float %199, %203
  %205 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  %206 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %205, i64 noundef 2, i64 noundef 5)
          to label %207 unwind label %215

207:                                              ; preds = %202
  store float %204, ptr %206, align 4, !tbaa !20
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
  br label %208

208:                                              ; preds = %207
  %209 = load i64, ptr %3, align 8, !tbaa !9
  %210 = add i64 %209, 1
  store i64 %210, ptr %3, align 8, !tbaa !9
  br label %9, !llvm.loop !22

211:                                              ; preds = %15
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %6, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %7, align 4
  br label %219

215:                                              ; preds = %202, %198, %195, %190, %186, %183, %178, %174, %171, %166, %162, %159, %154, %150, %147, %142, %138, %135, %130, %126, %123, %120, %115, %111, %108, %105, %100, %96, %93, %90, %87, %82, %78, %75, %72, %67, %63, %60, %57, %52, %48, %45, %32, %22
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %6, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %7, align 4
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #4
  br label %219

219:                                              ; preds = %215, %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #4
  br label %228

220:                                              ; preds = %14
  %221 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 22
  %222 = load ptr, ptr %221, align 8, !tbaa !16
  %223 = getelementptr inbounds %class.ElementsData, ptr %8, i32 0, i32 28
  %224 = load ptr, ptr %223, align 8, !tbaa !24
  %225 = load ptr, ptr %222, align 8, !tbaa !18
  %226 = getelementptr inbounds ptr, ptr %225, i64 4
  %227 = load ptr, ptr %226, align 8
  call void %227(ptr noundef nonnull align 8 dereferenceable(49) %222, ptr noundef nonnull align 8 dereferenceable(49) %224, i32 noundef 0)
  ret void

228:                                              ; preds = %219
  %229 = load ptr, ptr %6, align 8
  %230 = load i32, ptr %7, align 4
  %231 = insertvalue { ptr, i32 } poison, ptr %229, 0
  %232 = insertvalue { ptr, i32 } %231, i32 %230, 1
  resume { ptr, i32 } %232
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress 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 = { mustprogress 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"_ZTS12ElementsData", !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !13, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !14, i64 256, !6, i64 312, !6, i64 320, !6, i64 328}
!13 = !{!"_ZTS11DEVICE_NAME", !7, i64 0}
!14 = !{!"_ZTS7CGMData", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!15 = !{!12, !6, i64 240}
!16 = !{!12, !6, i64 176}
!17 = !{!12, !10, i64 8}
!18 = !{!19, !19, i64 0}
!19 = !{!"vtable pointer", !8, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!12, !6, i64 224}


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

%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.7" }
%"struct.std::_Head_base.7" = type { ptr }

declare i32 @__gxx_personality_v0(...)

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

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

declare void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(49), i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16CPU_ElementsData17genGradientMatrixEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(336) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::unique_ptr", align 8
  %3 = alloca %"class.std::unique_ptr", align 8
  %4 = getelementptr inbounds i8, ptr %0, i64 16
  %5 = load i64, ptr %4, align 8, !tbaa !5
  %.not = icmp eq i64 %5, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %1
  %6 = getelementptr inbounds i8, ptr %0, i64 240
  %7 = getelementptr inbounds i8, ptr %0, i64 176
  %8 = getelementptr inbounds i8, ptr %0, i64 8
  br label %16

._crit_edge:                                      ; preds = %196, %1
  %9 = getelementptr inbounds i8, ptr %0, i64 176
  %10 = load ptr, ptr %9, align 8, !tbaa !13
  %11 = getelementptr inbounds i8, ptr %0, i64 224
  %12 = load ptr, ptr %11, align 8, !tbaa !14
  %13 = load ptr, ptr %10, align 8, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %13, i64 32
  %15 = load ptr, ptr %14, align 8
  call void %15(ptr noundef nonnull align 8 dereferenceable(49) %10, ptr noundef nonnull align 8 dereferenceable(49) %12, i32 noundef 0)
  ret void

16:                                               ; preds = %.lr.ph, %196
  %.079 = phi i64 [ 0, %.lr.ph ], [ %198, %196 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #4
  %17 = load ptr, ptr %6, align 8, !tbaa !17
  call void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr") align 8 %2, ptr noundef nonnull align 8 dereferenceable(49) %17, i64 noundef %.079)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #4
  %18 = load ptr, ptr %7, align 8, !tbaa !13
  invoke void @_ZNK6Matrix6getRowEm(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr") align 8 %3, ptr noundef nonnull align 8 dereferenceable(49) %18, i64 noundef %.079)
          to label %19 unwind label %201

19:                                               ; preds = %16
  %20 = call noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %21 = load i64, ptr %8, align 8, !tbaa !18
  %22 = add i64 %21, 1
  %23 = load ptr, ptr %20, align 8, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %23, i64 208
  %25 = load ptr, ptr %24, align 8
  invoke void %25(ptr noundef nonnull align 8 dereferenceable(49) %20, i64 noundef %21, i64 noundef %22)
          to label %26 unwind label %203

26:                                               ; preds = %19
  %27 = call noundef ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %28 = load i64, ptr %8, align 8, !tbaa !18
  %29 = add i64 %28, -1
  %30 = mul i64 %29, 3
  %31 = mul i64 %29, 6
  %32 = load ptr, ptr %27, align 8, !tbaa !15
  %33 = getelementptr inbounds i8, ptr %32, i64 208
  %34 = load ptr, ptr %33, align 8
  invoke void %34(ptr noundef nonnull align 8 dereferenceable(49) %27, i64 noundef %30, i64 noundef %31)
          to label %35 unwind label %203

35:                                               ; preds = %26
  %36 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %37 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %36, i64 noundef 1, i64 noundef 1)
          to label %38 unwind label %203

38:                                               ; preds = %35
  %39 = load float, ptr %37, align 4, !tbaa !19
  %40 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %41 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %40, i64 noundef 1, i64 noundef 2)
          to label %42 unwind label %203

42:                                               ; preds = %38
  %43 = load float, ptr %41, align 4, !tbaa !19
  %44 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %45 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %44, i64 noundef 0, i64 noundef 0)
          to label %46 unwind label %203

46:                                               ; preds = %42
  %47 = fsub float %39, %43
  store float %47, ptr %45, align 4, !tbaa !19
  %48 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %49 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %48, i64 noundef 0, i64 noundef 1)
          to label %50 unwind label %203

50:                                               ; preds = %46
  store float 0.000000e+00, ptr %49, align 4, !tbaa !19
  %51 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %52 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %51, i64 noundef 1, i64 noundef 2)
          to label %53 unwind label %203

53:                                               ; preds = %50
  %54 = load float, ptr %52, align 4, !tbaa !19
  %55 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %56 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %55, i64 noundef 1, i64 noundef 0)
          to label %57 unwind label %203

57:                                               ; preds = %53
  %58 = load float, ptr %56, align 4, !tbaa !19
  %59 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %60 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %59, i64 noundef 0, i64 noundef 2)
          to label %61 unwind label %203

61:                                               ; preds = %57
  %62 = fsub float %54, %58
  store float %62, ptr %60, align 4, !tbaa !19
  %63 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %64 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %63, i64 noundef 0, i64 noundef 3)
          to label %65 unwind label %203

65:                                               ; preds = %61
  store float 0.000000e+00, ptr %64, align 4, !tbaa !19
  %66 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %67 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %66, i64 noundef 1, i64 noundef 0)
          to label %68 unwind label %203

68:                                               ; preds = %65
  %69 = load float, ptr %67, align 4, !tbaa !19
  %70 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %71 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %70, i64 noundef 1, i64 noundef 1)
          to label %72 unwind label %203

72:                                               ; preds = %68
  %73 = load float, ptr %71, align 4, !tbaa !19
  %74 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %74, i64 noundef 0, i64 noundef 4)
          to label %76 unwind label %203

76:                                               ; preds = %72
  %77 = fsub float %69, %73
  store float %77, ptr %75, align 4, !tbaa !19
  %78 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %79 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %78, i64 noundef 0, i64 noundef 5)
          to label %80 unwind label %203

80:                                               ; preds = %76
  store float 0.000000e+00, ptr %79, align 4, !tbaa !19
  %81 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %82 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %81, i64 noundef 1, i64 noundef 0)
          to label %83 unwind label %203

83:                                               ; preds = %80
  store float 0.000000e+00, ptr %82, align 4, !tbaa !19
  %84 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %85 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %84, i64 noundef 0, i64 noundef 2)
          to label %86 unwind label %203

86:                                               ; preds = %83
  %87 = load float, ptr %85, align 4, !tbaa !19
  %88 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %89 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %88, i64 noundef 0, i64 noundef 1)
          to label %90 unwind label %203

90:                                               ; preds = %86
  %91 = load float, ptr %89, align 4, !tbaa !19
  %92 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %93 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %92, i64 noundef 1, i64 noundef 1)
          to label %94 unwind label %203

94:                                               ; preds = %90
  %95 = fsub float %87, %91
  store float %95, ptr %93, align 4, !tbaa !19
  %96 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %97 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %96, i64 noundef 1, i64 noundef 2)
          to label %98 unwind label %203

98:                                               ; preds = %94
  store float 0.000000e+00, ptr %97, align 4, !tbaa !19
  %99 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %100 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %99, i64 noundef 0, i64 noundef 0)
          to label %101 unwind label %203

101:                                              ; preds = %98
  %102 = load float, ptr %100, align 4, !tbaa !19
  %103 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %104 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %103, i64 noundef 0, i64 noundef 2)
          to label %105 unwind label %203

105:                                              ; preds = %101
  %106 = load float, ptr %104, align 4, !tbaa !19
  %107 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %108 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %107, i64 noundef 1, i64 noundef 3)
          to label %109 unwind label %203

109:                                              ; preds = %105
  %110 = fsub float %102, %106
  store float %110, ptr %108, align 4, !tbaa !19
  %111 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %112 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %111, i64 noundef 1, i64 noundef 4)
          to label %113 unwind label %203

113:                                              ; preds = %109
  store float 0.000000e+00, ptr %112, align 4, !tbaa !19
  %114 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %115 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %114, i64 noundef 0, i64 noundef 1)
          to label %116 unwind label %203

116:                                              ; preds = %113
  %117 = load float, ptr %115, align 4, !tbaa !19
  %118 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %119 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %118, i64 noundef 0, i64 noundef 0)
          to label %120 unwind label %203

120:                                              ; preds = %116
  %121 = load float, ptr %119, align 4, !tbaa !19
  %122 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %123 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %122, i64 noundef 1, i64 noundef 5)
          to label %124 unwind label %203

124:                                              ; preds = %120
  %125 = fsub float %117, %121
  store float %125, ptr %123, align 4, !tbaa !19
  %126 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %127 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %126, i64 noundef 0, i64 noundef 2)
          to label %128 unwind label %203

128:                                              ; preds = %124
  %129 = load float, ptr %127, align 4, !tbaa !19
  %130 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %131 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %130, i64 noundef 0, i64 noundef 1)
          to label %132 unwind label %203

132:                                              ; preds = %128
  %133 = load float, ptr %131, align 4, !tbaa !19
  %134 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %135 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %134, i64 noundef 2, i64 noundef 0)
          to label %136 unwind label %203

136:                                              ; preds = %132
  %137 = fsub float %129, %133
  store float %137, ptr %135, align 4, !tbaa !19
  %138 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %139 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %138, i64 noundef 1, i64 noundef 1)
          to label %140 unwind label %203

140:                                              ; preds = %136
  %141 = load float, ptr %139, align 4, !tbaa !19
  %142 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %143 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %142, i64 noundef 1, i64 noundef 2)
          to label %144 unwind label %203

144:                                              ; preds = %140
  %145 = load float, ptr %143, align 4, !tbaa !19
  %146 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %147 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %146, i64 noundef 2, i64 noundef 1)
          to label %148 unwind label %203

148:                                              ; preds = %144
  %149 = fsub float %141, %145
  store float %149, ptr %147, align 4, !tbaa !19
  %150 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %151 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %150, i64 noundef 0, i64 noundef 0)
          to label %152 unwind label %203

152:                                              ; preds = %148
  %153 = load float, ptr %151, align 4, !tbaa !19
  %154 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %155 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %154, i64 noundef 0, i64 noundef 2)
          to label %156 unwind label %203

156:                                              ; preds = %152
  %157 = load float, ptr %155, align 4, !tbaa !19
  %158 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %159 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %158, i64 noundef 2, i64 noundef 2)
          to label %160 unwind label %203

160:                                              ; preds = %156
  %161 = fsub float %153, %157
  store float %161, ptr %159, align 4, !tbaa !19
  %162 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %163 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %162, i64 noundef 1, i64 noundef 2)
          to label %164 unwind label %203

164:                                              ; preds = %160
  %165 = load float, ptr %163, align 4, !tbaa !19
  %166 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %167 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %166, i64 noundef 1, i64 noundef 0)
          to label %168 unwind label %203

168:                                              ; preds = %164
  %169 = load float, ptr %167, align 4, !tbaa !19
  %170 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %171 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %170, i64 noundef 2, i64 noundef 3)
          to label %172 unwind label %203

172:                                              ; preds = %168
  %173 = fsub float %165, %169
  store float %173, ptr %171, align 4, !tbaa !19
  %174 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %175 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %174, i64 noundef 0, i64 noundef 1)
          to label %176 unwind label %203

176:                                              ; preds = %172
  %177 = load float, ptr %175, align 4, !tbaa !19
  %178 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %179 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %178, i64 noundef 0, i64 noundef 0)
          to label %180 unwind label %203

180:                                              ; preds = %176
  %181 = load float, ptr %179, align 4, !tbaa !19
  %182 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %183 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %182, i64 noundef 2, i64 noundef 4)
          to label %184 unwind label %203

184:                                              ; preds = %180
  %185 = fsub float %177, %181
  store float %185, ptr %183, align 4, !tbaa !19
  %186 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %187 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %186, i64 noundef 1, i64 noundef 0)
          to label %188 unwind label %203

188:                                              ; preds = %184
  %189 = load float, ptr %187, align 4, !tbaa !19
  %190 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  %191 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %190, i64 noundef 1, i64 noundef 1)
          to label %192 unwind label %203

192:                                              ; preds = %188
  %193 = load float, ptr %191, align 4, !tbaa !19
  %194 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNKSt10unique_ptrI6MatrixSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  %195 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixclEmm(ptr noundef nonnull align 8 dereferenceable(49) %194, i64 noundef 2, i64 noundef 5)
          to label %196 unwind label %203

196:                                              ; preds = %192
  %197 = fsub float %189, %193
  store float %197, ptr %195, align 4, !tbaa !19
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #4
  %198 = add nuw i64 %.079, 1
  %199 = load i64, ptr %4, align 8, !tbaa !5
  %200 = icmp ult i64 %198, %199
  br i1 %200, label %16, label %._crit_edge, !llvm.loop !21

201:                                              ; preds = %16
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %192, %188, %184, %180, %176, %172, %168, %164, %160, %156, %152, %148, %144, %140, %136, %132, %128, %124, %120, %116, %113, %109, %105, %101, %98, %94, %90, %86, %83, %80, %76, %72, %68, %65, %61, %57, %53, %50, %46, %42, %38, %35, %26, %19
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #4
  br label %205

205:                                              ; preds = %203, %201
  %.pn = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  call void @_ZNSt10unique_ptrI6MatrixSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #4
  resume { ptr, i32 } %.pn
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress 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 = { mustprogress 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, !7, i64 16}
!6 = !{!"_ZTS12ElementsData", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !12, i64 256, !11, i64 312, !11, i64 320, !11, i64 328}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS11DEVICE_NAME", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"_ZTS7CGMData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48}
!13 = !{!6, !11, i64 176}
!14 = !{!6, !11, i64 224}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !9, i64 0}
!17 = !{!6, !11, i64 240}
!18 = !{!6, !7, i64 8}
!19 = !{!20, !20, i64 0}
!20 = !{!"float", !8, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass