Skip to content

Instantly share code, notes, and snippets.

@LebedevRI
Last active January 4, 2019 07:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LebedevRI/288215590d46a8160742a21a4ab78749 to your computer and use it in GitHub Desktop.
Save LebedevRI/288215590d46a8160742a21a4ab78749 to your computer and use it in GitHub Desktop.
rawspeed VC5Decompressor wavelet vectorization
; ModuleID = '/tmp/full.ll'
source_filename = "/home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
%struct.ident_t = type { i32, i32, i32, i32, i8* }
%"class.rawspeed::VC5Decompressor::Wavelet" = type <{ i32, i32, i16, [6 x i8], %"struct.std::array", i32, [4 x i8] }>
%"struct.std::array" = type { [4 x %"class.std::unique_ptr"] }
%"class.std::unique_ptr" = 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.1" }
%"struct.std::_Head_base.1" = type { %"struct.rawspeed::VC5Decompressor::Wavelet::AbstractBand"* }
%"struct.rawspeed::VC5Decompressor::Wavelet::AbstractBand" = type { i32 (...)**, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl" }
%"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl" = type { %"class.rawspeed::DefaultInitAllocatorAdaptor", i16*, i16*, i16* }
%"class.rawspeed::DefaultInitAllocatorAdaptor" = type { %"class.std::allocator" }
%"class.std::allocator" = type { i8 }
%"class.rawspeed::Array2DRef.2" = type { i32, i16*, i32, i32 }
%"class.rawspeed::Array2DRef" = type { i32, i16*, i32, i32 }
@0 = external hidden unnamed_addr constant %struct.ident_t, align 8
@1 = external hidden unnamed_addr constant [139 x i8], align 1
@2 = external hidden unnamed_addr constant [140 x i8], align 1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #0
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
declare i32 @__kmpc_global_thread_num(%struct.ident_t*) local_unnamed_addr
declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) local_unnamed_addr
declare i32 @__gxx_personality_v0(...)
declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) local_unnamed_addr
declare void @__kmpc_barrier(%struct.ident_t*, i32) local_unnamed_addr
; Function Attrs: nounwind uwtable
define hidden void @_ZNK8rawspeed15VC5Decompressor7Wavelet18combineLowHighPassENS_10Array2DRefIsEENS2_IKsEES5_ib(%"class.rawspeed::VC5Decompressor::Wavelet"* nocapture readonly, %"class.rawspeed::Array2DRef.2"* byval nocapture readonly align 8, %"class.rawspeed::Array2DRef"* byval nocapture readonly align 8, %"class.rawspeed::Array2DRef"* byval nocapture readonly align 8, i32, i1 zeroext) local_unnamed_addr #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !7 {
%7 = alloca i32, align 4
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca %struct.ident_t, align 8
%12 = bitcast %struct.ident_t* %11 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %12, i8* align 8 bitcast (%struct.ident_t* @0 to i8*), i64 16, i1 false)
%13 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %11, i64 0, i32 4
store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %13, align 8, !tbaa !10
%14 = call i32 @__kmpc_global_thread_num(%struct.ident_t* nonnull %11) #2
%15 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %2, i64 0, i32 0, !dbg !16
%16 = load i32, i32* %15, align 8, !dbg !16
%17 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %2, i64 0, i32 1, !dbg !16
%18 = load i16*, i16** %17, align 8, !dbg !16
%19 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %3, i64 0, i32 0, !dbg !17
%20 = load i32, i32* %19, align 8, !dbg !17
%21 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %3, i64 0, i32 1, !dbg !17
%22 = load i16*, i16** %21, align 8, !dbg !17
%23 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %1, i64 0, i32 0, !dbg !18
%24 = load i32, i32* %23, align 8, !dbg !18
%25 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %1, i64 0, i32 1, !dbg !18
%26 = load i16*, i16** %25, align 8, !dbg !18
%27 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %1, i64 0, i32 3, !dbg !19
%28 = load i32, i32* %27, align 4, !dbg !19, !tbaa !20
%29 = add nsw i32 %28, -1, !dbg !22
%30 = icmp sgt i32 %28, 0, !dbg !22
br i1 %30, label %31, label %291, !dbg !23
; <label>:31: ; preds = %6
%32 = bitcast i32* %7 to i8*, !dbg !23
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %32) #2, !dbg !23
store i32 0, i32* %7, align 4, !dbg !24, !tbaa !25
%33 = bitcast i32* %8 to i8*, !dbg !23
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %33) #2, !dbg !23
store i32 %29, i32* %8, align 4, !dbg !24, !tbaa !25
%34 = bitcast i32* %9 to i8*, !dbg !23
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %34) #2, !dbg !23
store i32 1, i32* %9, align 4, !dbg !24, !tbaa !25
%35 = bitcast i32* %10 to i8*, !dbg !23
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %35) #2, !dbg !23
store i32 0, i32* %10, align 4, !dbg !24, !tbaa !25
store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %13, align 8, !dbg !23, !tbaa !10
call void @__kmpc_for_static_init_4(%struct.ident_t* nonnull %11, i32 %14, i32 34, i32* nonnull %10, i32* nonnull %7, i32* nonnull %8, i32* nonnull %9, i32 1, i32 1) #2, !dbg !23
%36 = load i32, i32* %8, align 4, !dbg !24, !tbaa !25
%37 = icmp sgt i32 %36, %29, !dbg !24
%38 = select i1 %37, i32 %29, i32 %36, !dbg !24
store i32 %38, i32* %8, align 4, !dbg !24, !tbaa !25
%39 = load i32, i32* %7, align 4, !dbg !24, !tbaa !25
%40 = icmp sgt i32 %39, %38, !dbg !22
br i1 %40, label %290, label %41, !dbg !23
; <label>:41: ; preds = %31
%42 = getelementptr inbounds %"class.rawspeed::VC5Decompressor::Wavelet", %"class.rawspeed::VC5Decompressor::Wavelet"* %0, i64 0, i32 0
%43 = load i32, i32* %42, align 8, !tbaa !26
%44 = icmp sgt i32 %43, 2
%45 = sext i32 %39 to i64, !dbg !23
%46 = sext i32 %24 to i64, !dbg !23
%47 = sext i32 %16 to i64, !dbg !23
%48 = sext i32 %20 to i64, !dbg !23
%49 = sext i32 %38 to i64, !dbg !23
%50 = sext i32 %43 to i64
%51 = sext i32 %43 to i64
br label %52, !dbg !23
; <label>:52: ; preds = %274, %41
%53 = phi i64 [ %288, %274 ], [ %45, %41 ]
%54 = mul nsw i64 %53, %48, !dbg !30
%55 = getelementptr inbounds i16, i16* %22, i64 %54, !dbg !40
%56 = load i16, i16* %55, align 2, !dbg !41, !tbaa !42
%57 = sext i16 %56 to i32, !dbg !41
%58 = mul nsw i64 %53, %47
%59 = getelementptr inbounds i16, i16* %18, i64 %58, !dbg !43
%60 = load i16, i16* %59, align 2, !dbg !49, !tbaa !42
%61 = sext i16 %60 to i32, !dbg !50
%62 = mul nsw i32 %61, 11, !dbg !51
%63 = add nsw i64 %58, 1, !dbg !52
%64 = getelementptr inbounds i16, i16* %18, i64 %63, !dbg !43
%65 = load i16, i16* %64, align 2, !dbg !49, !tbaa !42
%66 = sext i16 %65 to i32, !dbg !50
%67 = mul nsw i32 %66, -4, !dbg !51
%68 = add nsw i64 %58, 2, !dbg !52
%69 = getelementptr inbounds i16, i16* %18, i64 %68, !dbg !43
%70 = load i16, i16* %69, align 2, !dbg !49, !tbaa !42
%71 = sext i16 %70 to i32, !dbg !50
%72 = add nsw i32 %62, 4, !dbg !53
%73 = add nsw i32 %72, %67, !dbg !53
%74 = add nsw i32 %73, %71, !dbg !54
%75 = ashr i32 %74, 3, !dbg !55
%76 = add nsw i32 %75, %57, !dbg !56
%77 = shl i32 %76, %4, !dbg !57
%78 = ashr i32 %77, 1, !dbg !58
%79 = mul nsw i32 %61, 5, !dbg !59
%80 = shl nsw i32 %66, 2, !dbg !59
%81 = add nsw i32 %79, 4, !dbg !63
%82 = add nsw i32 %81, %80, !dbg !63
%83 = sub nsw i32 %82, %71, !dbg !64
%84 = ashr i32 %83, 3, !dbg !65
%85 = sub nsw i32 %84, %57, !dbg !66
%86 = shl i32 %85, %4, !dbg !67
%87 = ashr i32 %86, 1, !dbg !68
br i1 %5, label %88, label %97, !dbg !69
; <label>:88: ; preds = %52
%89 = icmp sgt i32 %78, 0, !dbg !70
%90 = select i1 %89, i32 %78, i32 0, !dbg !70
%91 = icmp ult i32 %90, 16383, !dbg !74
%92 = select i1 %91, i32 %90, i32 16383, !dbg !74
%93 = icmp sgt i32 %87, 0, !dbg !77
%94 = select i1 %93, i32 %87, i32 0, !dbg !77
%95 = icmp ult i32 %94, 16383, !dbg !79
%96 = select i1 %95, i32 %94, i32 16383, !dbg !79
br label %97, !dbg !81
; <label>:97: ; preds = %88, %52
%98 = phi i32 [ %96, %88 ], [ %87, %52 ], !dbg !82
%99 = phi i32 [ %92, %88 ], [ %78, %52 ], !dbg !82
%100 = trunc i32 %99 to i16, !dbg !83
%101 = mul nsw i64 %53, %46, !dbg !84
%102 = getelementptr inbounds i16, i16* %26, i64 %101, !dbg !87
store i16 %100, i16* %102, align 2, !dbg !88, !tbaa !42
%103 = trunc i32 %98 to i16, !dbg !89
%104 = add nsw i64 %101, 1, !dbg !90
%105 = getelementptr inbounds i16, i16* %26, i64 %104, !dbg !92
store i16 %103, i16* %105, align 2, !dbg !93, !tbaa !42
%106 = add nsw i64 %54, 1, !dbg !94
%107 = getelementptr inbounds i16, i16* %22, i64 %106, !dbg !94
%108 = load i16, i16* %107, align 2, !dbg !94, !tbaa !42
%109 = sext i16 %108 to i32, !dbg !94
%110 = trunc i64 %58 to i32, !dbg !94
%111 = add i32 %110, 1, !dbg !94
br i1 %44, label %112, label %229, !dbg !95
; <label>:112: ; preds = %97
br i1 %5, label %113, label %172, !dbg !95
; <label>:113: ; preds = %113, %112
%114 = phi i64 [ %171, %113 ], [ 1, %112 ]
%115 = phi i64 [ %163, %113 ], [ 2, %112 ]
%116 = phi i32 [ %170, %113 ], [ %111, %112 ]
%117 = phi i32 [ %168, %113 ], [ %109, %112 ]
%118 = add i32 %116, -1, !dbg !96
%119 = sext i32 %118 to i64, !dbg !108
%120 = getelementptr inbounds i16, i16* %18, i64 %119, !dbg !108
%121 = load i16, i16* %120, align 2, !dbg !109, !tbaa !42
%122 = sext i16 %121 to i32, !dbg !110
%123 = sext i32 %116 to i64, !dbg !108
%124 = getelementptr inbounds i16, i16* %18, i64 %123, !dbg !108
%125 = load i16, i16* %124, align 2, !dbg !109, !tbaa !42
%126 = sext i16 %125 to i32, !dbg !110
%127 = shl nsw i32 %126, 3, !dbg !111
%128 = add i32 %116, 1, !dbg !96
%129 = sext i32 %128 to i64, !dbg !108
%130 = getelementptr inbounds i16, i16* %18, i64 %129, !dbg !108
%131 = load i16, i16* %130, align 2, !dbg !109, !tbaa !42
%132 = sext i16 %131 to i32, !dbg !110
%133 = add nsw i32 %122, 4, !dbg !112
%134 = add nsw i32 %133, %127, !dbg !112
%135 = sub nsw i32 %134, %132, !dbg !113
%136 = ashr i32 %135, 3, !dbg !114
%137 = add nsw i32 %136, %117, !dbg !115
%138 = shl i32 %137, %4, !dbg !116
%139 = ashr i32 %138, 1, !dbg !117
%140 = sub nsw i32 4, %122, !dbg !118
%141 = add nsw i32 %140, %127, !dbg !118
%142 = add nsw i32 %141, %132, !dbg !122
%143 = ashr i32 %142, 3, !dbg !123
%144 = sub nsw i32 %143, %117, !dbg !124
%145 = shl i32 %144, %4, !dbg !125
%146 = ashr i32 %145, 1, !dbg !126
%147 = icmp sgt i32 %139, 0, !dbg !127
%148 = select i1 %147, i32 %139, i32 0, !dbg !127
%149 = icmp ult i32 %148, 16383, !dbg !129
%150 = select i1 %149, i32 %148, i32 16383, !dbg !129
%151 = icmp sgt i32 %146, 0, !dbg !131
%152 = select i1 %151, i32 %146, i32 0, !dbg !131
%153 = icmp ult i32 %152, 16383, !dbg !133
%154 = select i1 %153, i32 %152, i32 16383, !dbg !133
%155 = trunc i32 %150 to i16, !dbg !135
%156 = shl nuw nsw i64 %114, 1, !dbg !136
%157 = add nsw i64 %156, %101, !dbg !137
%158 = getelementptr inbounds i16, i16* %26, i64 %157, !dbg !139
store i16 %155, i16* %158, align 2, !dbg !140, !tbaa !42
%159 = trunc i32 %154 to i16, !dbg !141
%160 = or i64 %156, 1, !dbg !142
%161 = add nsw i64 %160, %101, !dbg !143
%162 = getelementptr inbounds i16, i16* %26, i64 %161, !dbg !145
store i16 %159, i16* %162, align 2, !dbg !146, !tbaa !42
%163 = add nuw nsw i64 %115, 1, !dbg !147
%164 = icmp slt i64 %163, %51, !dbg !148
%165 = add nsw i64 %115, %54, !dbg !94
%166 = getelementptr inbounds i16, i16* %22, i64 %165, !dbg !94
%167 = load i16, i16* %166, align 2, !dbg !94, !tbaa !42
%168 = sext i16 %167 to i32, !dbg !94
%169 = trunc i64 %115 to i32, !dbg !94
%170 = add i32 %169, %110, !dbg !94
%171 = add nuw nsw i64 %114, 1
br i1 %164, label %113, label %223, !dbg !95
; <label>:172: ; preds = %172, %112
%173 = phi i64 [ %222, %172 ], [ 1, %112 ]
%174 = phi i64 [ %214, %172 ], [ 2, %112 ]
%175 = phi i32 [ %221, %172 ], [ %111, %112 ]
%176 = phi i32 [ %219, %172 ], [ %109, %112 ]
%177 = add i32 %175, -1, !dbg !96
%178 = sext i32 %177 to i64, !dbg !108
%179 = getelementptr inbounds i16, i16* %18, i64 %178, !dbg !108
%180 = load i16, i16* %179, align 2, !dbg !109, !tbaa !42
%181 = sext i16 %180 to i32, !dbg !110
%182 = sext i32 %175 to i64, !dbg !108
%183 = getelementptr inbounds i16, i16* %18, i64 %182, !dbg !108
%184 = load i16, i16* %183, align 2, !dbg !109, !tbaa !42
%185 = sext i16 %184 to i32, !dbg !110
%186 = shl nsw i32 %185, 3, !dbg !111
%187 = add i32 %175, 1, !dbg !96
%188 = sext i32 %187 to i64, !dbg !108
%189 = getelementptr inbounds i16, i16* %18, i64 %188, !dbg !108
%190 = load i16, i16* %189, align 2, !dbg !109, !tbaa !42
%191 = sext i16 %190 to i32, !dbg !110
%192 = add nsw i32 %181, 4, !dbg !112
%193 = add nsw i32 %192, %186, !dbg !112
%194 = sub nsw i32 %193, %191, !dbg !113
%195 = ashr i32 %194, 3, !dbg !114
%196 = add nsw i32 %195, %176, !dbg !115
%197 = shl i32 %196, %4, !dbg !116
%198 = lshr i32 %197, 1, !dbg !117
%199 = sub nsw i32 4, %181, !dbg !118
%200 = add nsw i32 %199, %186, !dbg !118
%201 = add nsw i32 %200, %191, !dbg !122
%202 = ashr i32 %201, 3, !dbg !123
%203 = sub nsw i32 %202, %176, !dbg !124
%204 = shl i32 %203, %4, !dbg !125
%205 = lshr i32 %204, 1, !dbg !126
%206 = trunc i32 %198 to i16, !dbg !135
%207 = shl nuw nsw i64 %173, 1, !dbg !136
%208 = add nsw i64 %207, %101, !dbg !137
%209 = getelementptr inbounds i16, i16* %26, i64 %208, !dbg !139
store i16 %206, i16* %209, align 2, !dbg !140, !tbaa !42
%210 = trunc i32 %205 to i16, !dbg !141
%211 = or i64 %207, 1, !dbg !142
%212 = add nsw i64 %211, %101, !dbg !143
%213 = getelementptr inbounds i16, i16* %26, i64 %212, !dbg !145
store i16 %210, i16* %213, align 2, !dbg !146, !tbaa !42
%214 = add nuw nsw i64 %174, 1, !dbg !147
%215 = icmp slt i64 %214, %50, !dbg !148
%216 = add nsw i64 %174, %54, !dbg !94
%217 = getelementptr inbounds i16, i16* %22, i64 %216, !dbg !94
%218 = load i16, i16* %217, align 2, !dbg !94, !tbaa !42
%219 = sext i16 %218 to i32, !dbg !94
%220 = trunc i64 %174 to i32, !dbg !94
%221 = add i32 %220, %110, !dbg !94
%222 = add nuw nsw i64 %173, 1
br i1 %215, label %172, label %226, !dbg !95
; <label>:223: ; preds = %113
%224 = sext i16 %167 to i32, !dbg !94
%225 = trunc i64 %115 to i32, !dbg !94
br label %229, !dbg !149
; <label>:226: ; preds = %172
%227 = sext i16 %218 to i32, !dbg !94
%228 = trunc i64 %174 to i32, !dbg !94
br label %229, !dbg !149
; <label>:229: ; preds = %226, %223, %97
%230 = phi i32 [ 1, %97 ], [ %225, %223 ], [ %228, %226 ], !dbg !94
%231 = phi i32 [ %109, %97 ], [ %224, %223 ], [ %227, %226 ], !dbg !94
%232 = phi i32 [ %111, %97 ], [ %170, %223 ], [ %221, %226 ], !dbg !94
%233 = add i32 %232, -2, !dbg !149
%234 = sext i32 %233 to i64, !dbg !161
%235 = getelementptr inbounds i16, i16* %18, i64 %234, !dbg !161
%236 = load i16, i16* %235, align 2, !dbg !162, !tbaa !42
%237 = sext i16 %236 to i32, !dbg !163
%238 = add i32 %232, -1, !dbg !149
%239 = sext i32 %238 to i64, !dbg !161
%240 = getelementptr inbounds i16, i16* %18, i64 %239, !dbg !161
%241 = load i16, i16* %240, align 2, !dbg !162, !tbaa !42
%242 = sext i16 %241 to i32, !dbg !163
%243 = shl nsw i32 %242, 2, !dbg !164
%244 = sext i32 %232 to i64, !dbg !161
%245 = getelementptr inbounds i16, i16* %18, i64 %244, !dbg !161
%246 = load i16, i16* %245, align 2, !dbg !162, !tbaa !42
%247 = sext i16 %246 to i32, !dbg !163
%248 = mul nsw i32 %247, 5, !dbg !164
%249 = sub nsw i32 4, %237, !dbg !165
%250 = add nsw i32 %249, %243, !dbg !165
%251 = add nsw i32 %250, %248, !dbg !166
%252 = ashr i32 %251, 3, !dbg !167
%253 = add nsw i32 %252, %231, !dbg !168
%254 = shl i32 %253, %4, !dbg !169
%255 = ashr i32 %254, 1, !dbg !170
%256 = mul nsw i32 %242, -4, !dbg !171
%257 = mul nsw i32 %247, 11, !dbg !171
%258 = add nsw i32 %237, 4, !dbg !175
%259 = add nsw i32 %258, %256, !dbg !175
%260 = add nsw i32 %259, %257, !dbg !176
%261 = ashr i32 %260, 3, !dbg !177
%262 = sub nsw i32 %261, %231, !dbg !178
%263 = shl i32 %262, %4, !dbg !179
%264 = ashr i32 %263, 1, !dbg !180
br i1 %5, label %265, label %274, !dbg !181
; <label>:265: ; preds = %229
%266 = icmp sgt i32 %255, 0, !dbg !182
%267 = select i1 %266, i32 %255, i32 0, !dbg !182
%268 = icmp ult i32 %267, 16383, !dbg !184
%269 = select i1 %268, i32 %267, i32 16383, !dbg !184
%270 = icmp sgt i32 %264, 0, !dbg !186
%271 = select i1 %270, i32 %264, i32 0, !dbg !186
%272 = icmp ult i32 %271, 16383, !dbg !188
%273 = select i1 %272, i32 %271, i32 16383, !dbg !188
br label %274, !dbg !190
; <label>:274: ; preds = %265, %229
%275 = phi i32 [ %273, %265 ], [ %264, %229 ], !dbg !191
%276 = phi i32 [ %269, %265 ], [ %255, %229 ], !dbg !191
%277 = trunc i32 %276 to i16, !dbg !192
%278 = shl nuw nsw i32 %230, 1, !dbg !193
%279 = trunc i64 %101 to i32, !dbg !194
%280 = add nsw i32 %278, %279, !dbg !194
%281 = sext i32 %280 to i64, !dbg !196
%282 = getelementptr inbounds i16, i16* %26, i64 %281, !dbg !196
store i16 %277, i16* %282, align 2, !dbg !197, !tbaa !42
%283 = trunc i32 %275 to i16, !dbg !198
%284 = or i32 %278, 1, !dbg !199
%285 = add nsw i32 %284, %279, !dbg !200
%286 = sext i32 %285 to i64, !dbg !202
%287 = getelementptr inbounds i16, i16* %26, i64 %286, !dbg !202
store i16 %283, i16* %287, align 2, !dbg !203, !tbaa !42
%288 = add nsw i64 %53, 1, !dbg !22
%289 = icmp slt i64 %53, %49, !dbg !22
br i1 %289, label %52, label %290, !dbg !23, !llvm.loop !204
; <label>:290: ; preds = %274, %31
store i8* getelementptr inbounds ([140 x i8], [140 x i8]* @2, i64 0, i64 0), i8** %13, align 8, !dbg !23, !tbaa !10
call void @__kmpc_for_static_fini(%struct.ident_t* nonnull %11, i32 %14) #2, !dbg !23
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %35) #2, !dbg !23
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %34) #2, !dbg !23
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %33) #2, !dbg !23
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %32) #2, !dbg !23
br label %291, !dbg !23
; <label>:291: ; preds = %290, %6
store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %13, align 8, !dbg !205, !tbaa !10
call void @__kmpc_barrier(%struct.ident_t* nonnull %11, i32 %14) #2, !dbg !205
ret void, !dbg !206
}
attributes #0 = { argmemonly nounwind }
attributes #1 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="bdver2" "target-features"="+64bit,+aes,+avx,+bmi,+cmov,+cx16,+f16c,+fma,+fma4,+fxsr,+lzcnt,+mmx,+pclmul,+popcnt,+prfchw,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+sse4a,+ssse3,+tbm,+x87,+xop,+xsave,-adx,-avx2,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vpopcntdq,-bmi2,-cldemote,-clflushopt,-clwb,-clzero,-fsgsbase,-gfni,-invpcid,-lwp,-movbe,-movdir64b,-movdiri,-mwaitx,-pconfig,-pku,-prefetchwt1,-ptwrite,-rdpid,-rdrnd,-rdseed,-rtm,-sgx,-sha,-shstk,-vaes,-vpclmulqdq,-waitpkg,-wbnoinvd,-xsavec,-xsaveopt,-xsaves" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
!llvm.ident = !{!6}
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0-svn350198-1~exp1+0~20190101210959.2235~1.gbpd712dd (trunk)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, nameTableKind: None)
!1 = !DIFile(filename: "/home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp", directory: "/home/lebedevri/rawspeed/build-Clang-Release")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
!4 = !{i32 1, !"wchar_size", i32 4}
!5 = !{i32 7, !"PIC Level", i32 2}
!6 = !{!"clang version 8.0.0-svn350198-1~exp1+0~20190101210959.2235~1.gbpd712dd (trunk)"}
!7 = distinct !DISubprogram(name: "combineLowHighPass", scope: !8, file: !8, line: 217, type: !9, scopeLine: 220, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!8 = !DIFile(filename: "src/librawspeed/decompressors/VC5Decompressor.cpp", directory: "/home/lebedevri/rawspeed")
!9 = !DISubroutineType(types: !2)
!10 = !{!11, !15, i64 16}
!11 = !{!"_ZTS7ident_t", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !15, i64 16}
!12 = !{!"int", !13, i64 0}
!13 = !{!"omnipotent char", !14, i64 0}
!14 = !{!"Simple C++ TBAA"}
!15 = !{!"any pointer", !13, i64 0}
!16 = !DILocation(line: 221, column: 19, scope: !7)
!17 = !DILocation(line: 221, column: 24, scope: !7)
!18 = !DILocation(line: 221, column: 55, scope: !7)
!19 = !DILocation(line: 246, column: 27, scope: !7)
!20 = !{!21, !12, i64 20}
!21 = !{!"_ZTSN8rawspeed10Array2DRefIsEE", !12, i64 0, !15, i64 8, !12, i64 16, !12, i64 20}
!22 = !DILocation(line: 246, column: 3, scope: !7)
!23 = !DILocation(line: 244, column: 9, scope: !7)
!24 = !DILocation(line: 246, column: 8, scope: !7)
!25 = !{!12, !12, i64 0}
!26 = !{!27, !12, i64 0}
!27 = !{!"_ZTSN8rawspeed15VC5Decompressor7WaveletE", !12, i64 0, !12, i64 4, !28, i64 8, !29, i64 16, !12, i64 48}
!28 = !{!"short", !13, i64 0}
!29 = !{!"_ZTSSt5arrayISt10unique_ptrIN8rawspeed15VC5Decompressor7Wavelet12AbstractBandESt14default_deleteIS4_EELm4EE", !13, i64 0}
!30 = !DILocation(line: 84, column: 18, scope: !31, inlinedAt: !33)
!31 = distinct !DISubprogram(name: "operator()", scope: !32, file: !32, line: 78, type: !9, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!32 = !DIFile(filename: "../src/librawspeed/common/Array2DRef.h", directory: "/home/lebedevri/rawspeed/build-Clang-Release")
!33 = distinct !DILocation(line: 125, column: 33, scope: !34, inlinedAt: !35)
!34 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:223:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!35 = distinct !DILocation(line: 228, column: 14, scope: !36, inlinedAt: !37)
!36 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 226, type: !9, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!37 = distinct !DILocation(line: 231, column: 16, scope: !38, inlinedAt: !39)
!38 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::First>", scope: !8, file: !8, line: 221, type: !9, scopeLine: 222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!39 = distinct !DILocation(line: 249, column: 5, scope: !7)
!40 = !DILocation(line: 84, column: 10, scope: !31, inlinedAt: !33)
!41 = !DILocation(line: 125, column: 33, scope: !34, inlinedAt: !35)
!42 = !{!28, !28, i64 0}
!43 = !DILocation(line: 84, column: 10, scope: !31, inlinedAt: !44)
!44 = distinct !DILocation(line: 224, column: 14, scope: !45, inlinedAt: !46)
!45 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 223, type: !9, scopeLine: 223, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!46 = distinct !DILocation(line: 129, column: 29, scope: !47, inlinedAt: !48)
!47 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!48 = distinct !DILocation(line: 126, column: 23, scope: !34, inlinedAt: !35)
!49 = !DILocation(line: 224, column: 14, scope: !45, inlinedAt: !46)
!50 = !DILocation(line: 129, column: 29, scope: !47, inlinedAt: !48)
!51 = !DILocation(line: 129, column: 27, scope: !47, inlinedAt: !48)
!52 = !DILocation(line: 84, column: 27, scope: !31, inlinedAt: !44)
!53 = !DILocation(line: 129, column: 12, scope: !47, inlinedAt: !48)
!54 = !DILocation(line: 133, column: 16, scope: !34, inlinedAt: !35)
!55 = !DILocation(line: 135, column: 35, scope: !34, inlinedAt: !35)
!56 = !DILocation(line: 136, column: 29, scope: !34, inlinedAt: !35)
!57 = !DILocation(line: 138, column: 9, scope: !34, inlinedAt: !35)
!58 = !DILocation(line: 140, column: 9, scope: !34, inlinedAt: !35)
!59 = !DILocation(line: 129, column: 27, scope: !47, inlinedAt: !60)
!60 = distinct !DILocation(line: 126, column: 23, scope: !34, inlinedAt: !61)
!61 = distinct !DILocation(line: 228, column: 14, scope: !36, inlinedAt: !62)
!62 = distinct !DILocation(line: 232, column: 15, scope: !38, inlinedAt: !39)
!63 = !DILocation(line: 129, column: 12, scope: !47, inlinedAt: !60)
!64 = !DILocation(line: 133, column: 16, scope: !34, inlinedAt: !61)
!65 = !DILocation(line: 135, column: 35, scope: !34, inlinedAt: !61)
!66 = !DILocation(line: 136, column: 29, scope: !34, inlinedAt: !61)
!67 = !DILocation(line: 138, column: 9, scope: !34, inlinedAt: !61)
!68 = !DILocation(line: 140, column: 9, scope: !34, inlinedAt: !61)
!69 = !DILocation(line: 234, column: 9, scope: !38, inlinedAt: !39)
!70 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !73)
!71 = distinct !DISubprogram(name: "clampBits<int>", scope: !72, file: !72, line: 151, type: !9, scopeLine: 153, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!72 = !DIFile(filename: "../src/librawspeed/common/Common.h", directory: "/home/lebedevri/rawspeed/build-Clang-Release")
!73 = distinct !DILocation(line: 235, column: 14, scope: !38, inlinedAt: !39)
!74 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !76)
!75 = distinct !DISubprogram(name: "clampBits<unsigned int>", scope: !72, file: !72, line: 133, type: !9, scopeLine: 136, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!76 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !73)
!77 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !78)
!78 = distinct !DILocation(line: 236, column: 13, scope: !38, inlinedAt: !39)
!79 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !80)
!80 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !78)
!81 = !DILocation(line: 237, column: 5, scope: !38, inlinedAt: !39)
!82 = !DILocation(line: 0, scope: !38, inlinedAt: !39)
!83 = !DILocation(line: 238, column: 42, scope: !38, inlinedAt: !39)
!84 = !DILocation(line: 84, column: 18, scope: !85, inlinedAt: !86)
!85 = distinct !DISubprogram(name: "operator()", scope: !32, file: !32, line: 78, type: !9, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!86 = distinct !DILocation(line: 238, column: 5, scope: !38, inlinedAt: !39)
!87 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !86)
!88 = !DILocation(line: 238, column: 19, scope: !38, inlinedAt: !39)
!89 = !DILocation(line: 239, column: 46, scope: !38, inlinedAt: !39)
!90 = !DILocation(line: 84, column: 27, scope: !85, inlinedAt: !91)
!91 = distinct !DILocation(line: 239, column: 5, scope: !38, inlinedAt: !39)
!92 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !91)
!93 = !DILocation(line: 239, column: 23, scope: !38, inlinedAt: !39)
!94 = !DILocation(line: 0, scope: !7)
!95 = !DILocation(line: 251, column: 5, scope: !7)
!96 = !DILocation(line: 84, column: 27, scope: !31, inlinedAt: !97)
!97 = distinct !DILocation(line: 224, column: 14, scope: !98, inlinedAt: !99)
!98 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 223, type: !9, scopeLine: 223, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!99 = distinct !DILocation(line: 129, column: 29, scope: !100, inlinedAt: !101)
!100 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!101 = distinct !DILocation(line: 126, column: 23, scope: !102, inlinedAt: !103)
!102 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:223:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!103 = distinct !DILocation(line: 228, column: 14, scope: !104, inlinedAt: !105)
!104 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 226, type: !9, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!105 = distinct !DILocation(line: 231, column: 16, scope: !106, inlinedAt: !107)
!106 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::Middle>", scope: !8, file: !8, line: 221, type: !9, scopeLine: 222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!107 = distinct !DILocation(line: 252, column: 7, scope: !7)
!108 = !DILocation(line: 84, column: 10, scope: !31, inlinedAt: !97)
!109 = !DILocation(line: 224, column: 14, scope: !98, inlinedAt: !99)
!110 = !DILocation(line: 129, column: 29, scope: !100, inlinedAt: !101)
!111 = !DILocation(line: 129, column: 27, scope: !100, inlinedAt: !101)
!112 = !DILocation(line: 129, column: 12, scope: !100, inlinedAt: !101)
!113 = !DILocation(line: 133, column: 16, scope: !102, inlinedAt: !103)
!114 = !DILocation(line: 135, column: 35, scope: !102, inlinedAt: !103)
!115 = !DILocation(line: 136, column: 29, scope: !102, inlinedAt: !103)
!116 = !DILocation(line: 138, column: 9, scope: !102, inlinedAt: !103)
!117 = !DILocation(line: 140, column: 9, scope: !102, inlinedAt: !103)
!118 = !DILocation(line: 129, column: 12, scope: !100, inlinedAt: !119)
!119 = distinct !DILocation(line: 126, column: 23, scope: !102, inlinedAt: !120)
!120 = distinct !DILocation(line: 228, column: 14, scope: !104, inlinedAt: !121)
!121 = distinct !DILocation(line: 232, column: 15, scope: !106, inlinedAt: !107)
!122 = !DILocation(line: 133, column: 16, scope: !102, inlinedAt: !120)
!123 = !DILocation(line: 135, column: 35, scope: !102, inlinedAt: !120)
!124 = !DILocation(line: 136, column: 29, scope: !102, inlinedAt: !120)
!125 = !DILocation(line: 138, column: 9, scope: !102, inlinedAt: !120)
!126 = !DILocation(line: 140, column: 9, scope: !102, inlinedAt: !120)
!127 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !128)
!128 = distinct !DILocation(line: 235, column: 14, scope: !106, inlinedAt: !107)
!129 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !130)
!130 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !128)
!131 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !132)
!132 = distinct !DILocation(line: 236, column: 13, scope: !106, inlinedAt: !107)
!133 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !134)
!134 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !132)
!135 = !DILocation(line: 238, column: 42, scope: !106, inlinedAt: !107)
!136 = !DILocation(line: 238, column: 11, scope: !106, inlinedAt: !107)
!137 = !DILocation(line: 84, column: 27, scope: !85, inlinedAt: !138)
!138 = distinct !DILocation(line: 238, column: 5, scope: !106, inlinedAt: !107)
!139 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !138)
!140 = !DILocation(line: 238, column: 19, scope: !106, inlinedAt: !107)
!141 = !DILocation(line: 239, column: 46, scope: !106, inlinedAt: !107)
!142 = !DILocation(line: 239, column: 15, scope: !106, inlinedAt: !107)
!143 = !DILocation(line: 84, column: 27, scope: !85, inlinedAt: !144)
!144 = distinct !DILocation(line: 239, column: 5, scope: !106, inlinedAt: !107)
!145 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !144)
!146 = !DILocation(line: 239, column: 23, scope: !106, inlinedAt: !107)
!147 = !DILocation(line: 251, column: 19, scope: !7)
!148 = !DILocation(line: 251, column: 23, scope: !7)
!149 = !DILocation(line: 84, column: 27, scope: !31, inlinedAt: !150)
!150 = distinct !DILocation(line: 224, column: 14, scope: !151, inlinedAt: !152)
!151 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 223, type: !9, scopeLine: 223, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!152 = distinct !DILocation(line: 129, column: 29, scope: !153, inlinedAt: !154)
!153 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!154 = distinct !DILocation(line: 126, column: 23, scope: !155, inlinedAt: !156)
!155 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:223:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!156 = distinct !DILocation(line: 228, column: 14, scope: !157, inlinedAt: !158)
!157 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 226, type: !9, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!158 = distinct !DILocation(line: 231, column: 16, scope: !159, inlinedAt: !160)
!159 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::Last>", scope: !8, file: !8, line: 221, type: !9, scopeLine: 222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!160 = distinct !DILocation(line: 255, column: 5, scope: !7)
!161 = !DILocation(line: 84, column: 10, scope: !31, inlinedAt: !150)
!162 = !DILocation(line: 224, column: 14, scope: !151, inlinedAt: !152)
!163 = !DILocation(line: 129, column: 29, scope: !153, inlinedAt: !154)
!164 = !DILocation(line: 129, column: 27, scope: !153, inlinedAt: !154)
!165 = !DILocation(line: 129, column: 12, scope: !153, inlinedAt: !154)
!166 = !DILocation(line: 133, column: 16, scope: !155, inlinedAt: !156)
!167 = !DILocation(line: 135, column: 35, scope: !155, inlinedAt: !156)
!168 = !DILocation(line: 136, column: 29, scope: !155, inlinedAt: !156)
!169 = !DILocation(line: 138, column: 9, scope: !155, inlinedAt: !156)
!170 = !DILocation(line: 140, column: 9, scope: !155, inlinedAt: !156)
!171 = !DILocation(line: 129, column: 27, scope: !153, inlinedAt: !172)
!172 = distinct !DILocation(line: 126, column: 23, scope: !155, inlinedAt: !173)
!173 = distinct !DILocation(line: 228, column: 14, scope: !157, inlinedAt: !174)
!174 = distinct !DILocation(line: 232, column: 15, scope: !159, inlinedAt: !160)
!175 = !DILocation(line: 129, column: 12, scope: !153, inlinedAt: !172)
!176 = !DILocation(line: 133, column: 16, scope: !155, inlinedAt: !173)
!177 = !DILocation(line: 135, column: 35, scope: !155, inlinedAt: !173)
!178 = !DILocation(line: 136, column: 29, scope: !155, inlinedAt: !173)
!179 = !DILocation(line: 138, column: 9, scope: !155, inlinedAt: !173)
!180 = !DILocation(line: 140, column: 9, scope: !155, inlinedAt: !173)
!181 = !DILocation(line: 234, column: 9, scope: !159, inlinedAt: !160)
!182 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !183)
!183 = distinct !DILocation(line: 235, column: 14, scope: !159, inlinedAt: !160)
!184 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !185)
!185 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !183)
!186 = !DILocation(line: 155, column: 11, scope: !71, inlinedAt: !187)
!187 = distinct !DILocation(line: 236, column: 13, scope: !159, inlinedAt: !160)
!188 = !DILocation(line: 145, column: 10, scope: !75, inlinedAt: !189)
!189 = distinct !DILocation(line: 158, column: 10, scope: !71, inlinedAt: !187)
!190 = !DILocation(line: 237, column: 5, scope: !159, inlinedAt: !160)
!191 = !DILocation(line: 0, scope: !159, inlinedAt: !160)
!192 = !DILocation(line: 238, column: 42, scope: !159, inlinedAt: !160)
!193 = !DILocation(line: 238, column: 11, scope: !159, inlinedAt: !160)
!194 = !DILocation(line: 84, column: 27, scope: !85, inlinedAt: !195)
!195 = distinct !DILocation(line: 238, column: 5, scope: !159, inlinedAt: !160)
!196 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !195)
!197 = !DILocation(line: 238, column: 19, scope: !159, inlinedAt: !160)
!198 = !DILocation(line: 239, column: 46, scope: !159, inlinedAt: !160)
!199 = !DILocation(line: 239, column: 15, scope: !159, inlinedAt: !160)
!200 = !DILocation(line: 84, column: 27, scope: !85, inlinedAt: !201)
!201 = distinct !DILocation(line: 239, column: 5, scope: !159, inlinedAt: !160)
!202 = !DILocation(line: 84, column: 10, scope: !85, inlinedAt: !201)
!203 = !DILocation(line: 239, column: 23, scope: !159, inlinedAt: !160)
!204 = distinct !{!204, !23, !205}
!205 = !DILocation(line: 244, column: 33, scope: !7)
!206 = !DILocation(line: 257, column: 1, scope: !7)
; ModuleID = '/tmp/full.ll'
source_filename = "/home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
%struct.ident_t = type { i32, i32, i32, i32, i8* }
%"class.rawspeed::VC5Decompressor::Wavelet" = type <{ i32, i32, i16, [6 x i8], %"struct.std::array", i32, [4 x i8] }>
%"struct.std::array" = type { [4 x %"class.std::unique_ptr"] }
%"class.std::unique_ptr" = 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.1" }
%"struct.std::_Head_base.1" = type { %"struct.rawspeed::VC5Decompressor::Wavelet::AbstractBand"* }
%"struct.rawspeed::VC5Decompressor::Wavelet::AbstractBand" = type { i32 (...)**, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl" }
%"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl" = type { %"class.rawspeed::DefaultInitAllocatorAdaptor", i16*, i16*, i16* }
%"class.rawspeed::DefaultInitAllocatorAdaptor" = type { %"class.std::allocator" }
%"class.std::allocator" = type { i8 }
%"class.rawspeed::Array2DRef.2" = type { i32, i16*, i32, i32 }
%"class.rawspeed::Array2DRef" = type { i32, i16*, i32, i32 }
@0 = external hidden unnamed_addr constant %struct.ident_t, align 8
@1 = external hidden unnamed_addr constant [136 x i8], align 1
@2 = external hidden unnamed_addr constant [137 x i8], align 1
; Function Attrs: nounwind uwtable
define hidden void @_ZNK8rawspeed15VC5Decompressor7Wavelet15reconstructPassENS_10Array2DRefIsEENS2_IKsEES5_(%"class.rawspeed::VC5Decompressor::Wavelet"* nocapture readonly, %"class.rawspeed::Array2DRef.2"* byval nocapture readonly align 8, %"class.rawspeed::Array2DRef"* byval nocapture readonly align 8, %"class.rawspeed::Array2DRef"* byval nocapture readonly align 8) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !7 {
%5 = alloca i32, align 4
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca i32, align 4
%9 = alloca %struct.ident_t, align 8
%10 = bitcast %struct.ident_t* %9 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %10, i8* align 8 bitcast (%struct.ident_t* @0 to i8*), i64 16, i1 false)
%11 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %9, i64 0, i32 4
store i8* getelementptr inbounds ([136 x i8], [136 x i8]* @1, i64 0, i64 0), i8** %11, align 8, !tbaa !10
%12 = call i32 @__kmpc_global_thread_num(%struct.ident_t* nonnull %9) #2
%13 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %3, i64 0, i32 0, !dbg !16
%14 = load i32, i32* %13, align 8, !dbg !16
%15 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %3, i64 0, i32 1, !dbg !16
%16 = load i16*, i16** %15, align 8, !dbg !16
%17 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %2, i64 0, i32 0, !dbg !17
%18 = load i32, i32* %17, align 8, !dbg !17
%19 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %2, i64 0, i32 1, !dbg !17
%20 = load i16*, i16** %19, align 8, !dbg !17
%21 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %1, i64 0, i32 0, !dbg !18
%22 = load i32, i32* %21, align 8, !dbg !18
%23 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %1, i64 0, i32 1, !dbg !18
%24 = load i16*, i16** %23, align 8, !dbg !18
%25 = getelementptr inbounds %"class.rawspeed::VC5Decompressor::Wavelet", %"class.rawspeed::VC5Decompressor::Wavelet"* %0, i64 0, i32 1, !dbg !19
%26 = load i32, i32* %25, align 4, !dbg !19, !tbaa !20
%27 = add nsw i32 %26, -1, !dbg !24
%28 = icmp sgt i32 %26, 0, !dbg !24
br i1 %28, label %29, label %219, !dbg !25
; <label>:29: ; preds = %4
%30 = bitcast i32* %5 to i8*, !dbg !25
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %30) #2, !dbg !25
store i32 0, i32* %5, align 4, !dbg !26, !tbaa !27
%31 = bitcast i32* %6 to i8*, !dbg !25
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %31) #2, !dbg !25
store i32 %27, i32* %6, align 4, !dbg !26, !tbaa !27
%32 = bitcast i32* %7 to i8*, !dbg !25
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %32) #2, !dbg !25
store i32 1, i32* %7, align 4, !dbg !26, !tbaa !27
%33 = bitcast i32* %8 to i8*, !dbg !25
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %33) #2, !dbg !25
store i32 0, i32* %8, align 4, !dbg !26, !tbaa !27
store i8* getelementptr inbounds ([136 x i8], [136 x i8]* @1, i64 0, i64 0), i8** %11, align 8, !dbg !25, !tbaa !10
call void @__kmpc_for_static_init_4(%struct.ident_t* nonnull %9, i32 %12, i32 34, i32* nonnull %8, i32* nonnull %5, i32* nonnull %6, i32* nonnull %7, i32 1, i32 1) #2, !dbg !25
%34 = load i32, i32* %6, align 4, !dbg !26, !tbaa !27
%35 = icmp sgt i32 %34, %27, !dbg !26
%36 = select i1 %35, i32 %27, i32 %34, !dbg !26
store i32 %36, i32* %6, align 4, !dbg !26, !tbaa !27
%37 = load i32, i32* %5, align 4, !dbg !26, !tbaa !27
%38 = icmp sgt i32 %37, %36, !dbg !24
br i1 %38, label %218, label %39, !dbg !25
; <label>:39: ; preds = %29
%40 = getelementptr inbounds %"class.rawspeed::VC5Decompressor::Wavelet", %"class.rawspeed::VC5Decompressor::Wavelet"* %0, i64 0, i32 0
%41 = sext i32 %14 to i64
%42 = shl nsw i64 %41, 1
%43 = sext i32 %22 to i64, !dbg !25
%44 = sext i32 %37 to i64, !dbg !25
%45 = sext i32 %18 to i64, !dbg !25
%46 = sext i32 %36 to i64, !dbg !25
br label %47, !dbg !25
; <label>:47: ; preds = %215, %39
%48 = phi i64 [ %216, %215 ], [ %44, %39 ]
%49 = icmp eq i64 %48, 0
br i1 %49, label %50, label %94, !dbg !28
; <label>:50: ; preds = %47
%51 = load i32, i32* %40, align 8, !dbg !29, !tbaa !30
%52 = icmp sgt i32 %51, 0, !dbg !31
br i1 %52, label %53, label %215, !dbg !32
; <label>:53: ; preds = %50
%54 = sext i32 %51 to i64, !dbg !32
br label %55, !dbg !32
; <label>:55: ; preds = %55, %53
%56 = phi i64 [ 0, %53 ], [ %92, %55 ]
%57 = getelementptr inbounds i16, i16* %20, i64 %56, !dbg !33
%58 = load i16, i16* %57, align 2, !dbg !43, !tbaa !44
%59 = sext i16 %58 to i32, !dbg !43
%60 = getelementptr inbounds i16, i16* %16, i64 %56, !dbg !45
%61 = load i16, i16* %60, align 2, !dbg !51, !tbaa !44
%62 = sext i16 %61 to i32, !dbg !52
%63 = mul nsw i32 %62, 11, !dbg !53
%64 = add nsw i64 %56, %41, !dbg !54
%65 = getelementptr inbounds i16, i16* %16, i64 %64, !dbg !45
%66 = load i16, i16* %65, align 2, !dbg !51, !tbaa !44
%67 = sext i16 %66 to i32, !dbg !52
%68 = mul nsw i32 %67, -4, !dbg !53
%69 = add nsw i64 %42, %56, !dbg !54
%70 = getelementptr inbounds i16, i16* %16, i64 %69, !dbg !45
%71 = load i16, i16* %70, align 2, !dbg !51, !tbaa !44
%72 = sext i16 %71 to i32, !dbg !52
%73 = add nsw i32 %63, 4, !dbg !55
%74 = add nsw i32 %73, %68, !dbg !55
%75 = add nsw i32 %74, %72, !dbg !56
%76 = lshr i32 %75, 3, !dbg !57
%77 = add nsw i32 %76, %59, !dbg !58
%78 = lshr i32 %77, 1, !dbg !59
%79 = mul nsw i32 %62, 5, !dbg !60
%80 = shl nsw i32 %67, 2, !dbg !60
%81 = add nsw i32 %79, 4, !dbg !64
%82 = add nsw i32 %81, %80, !dbg !64
%83 = sub nsw i32 %82, %72, !dbg !65
%84 = lshr i32 %83, 3, !dbg !66
%85 = sub nsw i32 %84, %59, !dbg !67
%86 = lshr i32 %85, 1, !dbg !68
%87 = trunc i32 %78 to i16, !dbg !69
%88 = getelementptr inbounds i16, i16* %24, i64 %56, !dbg !70
store i16 %87, i16* %88, align 2, !dbg !73, !tbaa !44
%89 = trunc i32 %86 to i16, !dbg !74
%90 = add nsw i64 %56, %43, !dbg !75
%91 = getelementptr inbounds i16, i16* %24, i64 %90, !dbg !77
store i16 %89, i16* %91, align 2, !dbg !78, !tbaa !44
%92 = add nuw nsw i64 %56, 1, !dbg !79
%93 = icmp slt i64 %92, %54, !dbg !31
br i1 %93, label %55, label %215, !dbg !32, !llvm.loop !80
; <label>:94: ; preds = %47
%95 = trunc i64 %48 to i32, !dbg !82
%96 = add i32 %95, 1, !dbg !82
%97 = load i32, i32* %25, align 4, !dbg !83, !tbaa !20
%98 = icmp slt i32 %96, %97, !dbg !84
%99 = load i32, i32* %40, align 8, !dbg !85, !tbaa !30
%100 = icmp sgt i32 %99, 0, !dbg !85
br i1 %98, label %118, label %101, !dbg !86
; <label>:101: ; preds = %94
br i1 %100, label %102, label %215, !dbg !87
; <label>:102: ; preds = %101
%103 = mul nsw i64 %48, %45
%104 = add i32 %95, -2
%105 = mul nsw i32 %104, %14
%106 = add i32 %95, -1
%107 = mul nsw i32 %106, %14
%108 = mul nsw i64 %48, %41
%109 = shl nsw i32 %95, 1
%110 = mul nsw i32 %109, %22
%111 = or i32 %109, 1
%112 = mul nsw i32 %111, %22
%113 = sext i32 %112 to i64, !dbg !87
%114 = sext i32 %110 to i64, !dbg !87
%115 = sext i32 %107 to i64, !dbg !87
%116 = sext i32 %105 to i64, !dbg !87
%117 = sext i32 %99 to i64, !dbg !87
br label %173, !dbg !87
; <label>:118: ; preds = %94
br i1 %100, label %119, label %215, !dbg !88
; <label>:119: ; preds = %118
%120 = mul nsw i64 %48, %45
%121 = add i32 %95, -1
%122 = mul nsw i32 %121, %14
%123 = mul nsw i64 %48, %41
%124 = mul nsw i32 %96, %14
%125 = shl nsw i32 %95, 1
%126 = mul nsw i32 %125, %22
%127 = or i32 %125, 1
%128 = mul nsw i32 %127, %22
%129 = sext i32 %128 to i64, !dbg !88
%130 = sext i32 %126 to i64, !dbg !88
%131 = sext i32 %124 to i64, !dbg !88
%132 = sext i32 %122 to i64, !dbg !88
%133 = sext i32 %99 to i64, !dbg !88
br label %134, !dbg !88
; <label>:134: ; preds = %134, %119
%135 = phi i64 [ 0, %119 ], [ %171, %134 ]
%136 = add nsw i64 %135, %120, !dbg !89
%137 = getelementptr inbounds i16, i16* %20, i64 %136, !dbg !97
%138 = load i16, i16* %137, align 2, !dbg !98, !tbaa !44
%139 = sext i16 %138 to i32, !dbg !98
%140 = add nsw i64 %135, %132, !dbg !99
%141 = getelementptr inbounds i16, i16* %16, i64 %140, !dbg !105
%142 = load i16, i16* %141, align 2, !dbg !106, !tbaa !44
%143 = sext i16 %142 to i32, !dbg !107
%144 = add nsw i64 %135, %123, !dbg !99
%145 = getelementptr inbounds i16, i16* %16, i64 %144, !dbg !105
%146 = load i16, i16* %145, align 2, !dbg !106, !tbaa !44
%147 = sext i16 %146 to i32, !dbg !107
%148 = shl nsw i32 %147, 3, !dbg !108
%149 = add nsw i64 %135, %131, !dbg !99
%150 = getelementptr inbounds i16, i16* %16, i64 %149, !dbg !105
%151 = load i16, i16* %150, align 2, !dbg !106, !tbaa !44
%152 = sext i16 %151 to i32, !dbg !107
%153 = add nsw i32 %143, 4, !dbg !109
%154 = add nsw i32 %153, %148, !dbg !109
%155 = sub nsw i32 %154, %152, !dbg !110
%156 = lshr i32 %155, 3, !dbg !111
%157 = add nsw i32 %156, %139, !dbg !112
%158 = lshr i32 %157, 1, !dbg !113
%159 = sub nsw i32 4, %143, !dbg !114
%160 = add nsw i32 %159, %148, !dbg !114
%161 = add nsw i32 %160, %152, !dbg !118
%162 = lshr i32 %161, 3, !dbg !119
%163 = sub nsw i32 %162, %139, !dbg !120
%164 = lshr i32 %163, 1, !dbg !121
%165 = trunc i32 %158 to i16, !dbg !122
%166 = add nsw i64 %135, %130, !dbg !123
%167 = getelementptr inbounds i16, i16* %24, i64 %166, !dbg !125
store i16 %165, i16* %167, align 2, !dbg !126, !tbaa !44
%168 = trunc i32 %164 to i16, !dbg !127
%169 = add nsw i64 %135, %129, !dbg !128
%170 = getelementptr inbounds i16, i16* %24, i64 %169, !dbg !130
store i16 %168, i16* %170, align 2, !dbg !131, !tbaa !44
%171 = add nuw nsw i64 %135, 1, !dbg !132
%172 = icmp slt i64 %171, %133, !dbg !133
br i1 %172, label %134, label %215, !dbg !88, !llvm.loop !134
; <label>:173: ; preds = %173, %102
%174 = phi i64 [ 0, %102 ], [ %213, %173 ]
%175 = add nsw i64 %174, %103, !dbg !136
%176 = getelementptr inbounds i16, i16* %20, i64 %175, !dbg !144
%177 = load i16, i16* %176, align 2, !dbg !145, !tbaa !44
%178 = sext i16 %177 to i32, !dbg !145
%179 = add nsw i64 %174, %116, !dbg !146
%180 = getelementptr inbounds i16, i16* %16, i64 %179, !dbg !152
%181 = load i16, i16* %180, align 2, !dbg !153, !tbaa !44
%182 = sext i16 %181 to i32, !dbg !154
%183 = add nsw i64 %174, %115, !dbg !146
%184 = getelementptr inbounds i16, i16* %16, i64 %183, !dbg !152
%185 = load i16, i16* %184, align 2, !dbg !153, !tbaa !44
%186 = sext i16 %185 to i32, !dbg !154
%187 = shl nsw i32 %186, 2, !dbg !155
%188 = add nsw i64 %174, %108, !dbg !146
%189 = getelementptr inbounds i16, i16* %16, i64 %188, !dbg !152
%190 = load i16, i16* %189, align 2, !dbg !153, !tbaa !44
%191 = sext i16 %190 to i32, !dbg !154
%192 = mul nsw i32 %191, 5, !dbg !155
%193 = sub nsw i32 4, %182, !dbg !156
%194 = add nsw i32 %193, %187, !dbg !156
%195 = add nsw i32 %194, %192, !dbg !157
%196 = lshr i32 %195, 3, !dbg !158
%197 = add nsw i32 %196, %178, !dbg !159
%198 = lshr i32 %197, 1, !dbg !160
%199 = mul nsw i32 %186, -4, !dbg !161
%200 = mul nsw i32 %191, 11, !dbg !161
%201 = add nsw i32 %182, 4, !dbg !165
%202 = add nsw i32 %201, %199, !dbg !165
%203 = add nsw i32 %202, %200, !dbg !166
%204 = lshr i32 %203, 3, !dbg !167
%205 = sub nsw i32 %204, %178, !dbg !168
%206 = lshr i32 %205, 1, !dbg !169
%207 = trunc i32 %198 to i16, !dbg !170
%208 = add nsw i64 %174, %114, !dbg !171
%209 = getelementptr inbounds i16, i16* %24, i64 %208, !dbg !173
store i16 %207, i16* %209, align 2, !dbg !174, !tbaa !44
%210 = trunc i32 %206 to i16, !dbg !175
%211 = add nsw i64 %174, %113, !dbg !176
%212 = getelementptr inbounds i16, i16* %24, i64 %211, !dbg !178
store i16 %210, i16* %212, align 2, !dbg !179, !tbaa !44
%213 = add nuw nsw i64 %174, 1, !dbg !180
%214 = icmp slt i64 %213, %117, !dbg !181
br i1 %214, label %173, label %215, !dbg !87, !llvm.loop !182
; <label>:215: ; preds = %173, %134, %118, %101, %55, %50
%216 = add nsw i64 %48, 1, !dbg !24
%217 = icmp slt i64 %48, %46, !dbg !24
br i1 %217, label %47, label %218, !dbg !25, !llvm.loop !184
; <label>:218: ; preds = %215, %29
store i8* getelementptr inbounds ([137 x i8], [137 x i8]* @2, i64 0, i64 0), i8** %11, align 8, !dbg !25, !tbaa !10
call void @__kmpc_for_static_fini(%struct.ident_t* nonnull %9, i32 %12) #2, !dbg !25
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %33) #2, !dbg !25
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %32) #2, !dbg !25
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %31) #2, !dbg !25
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %30) #2, !dbg !25
br label %219, !dbg !25
; <label>:219: ; preds = %218, %4
store i8* getelementptr inbounds ([136 x i8], [136 x i8]* @1, i64 0, i64 0), i8** %11, align 8, !dbg !185, !tbaa !10
call void @__kmpc_barrier(%struct.ident_t* nonnull %9, i32 %12) #2, !dbg !185
ret void, !dbg !186
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare i32 @__kmpc_global_thread_num(%struct.ident_t*) local_unnamed_addr
declare void @__kmpc_for_static_init_4(%struct.ident_t*, i32, i32, i32*, i32*, i32*, i32*, i32, i32) local_unnamed_addr
declare i32 @__gxx_personality_v0(...)
declare void @__kmpc_for_static_fini(%struct.ident_t*, i32) local_unnamed_addr
declare void @__kmpc_barrier(%struct.ident_t*, i32) local_unnamed_addr
attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="bdver2" "target-features"="+64bit,+aes,+avx,+bmi,+cmov,+cx16,+f16c,+fma,+fma4,+fxsr,+lzcnt,+mmx,+pclmul,+popcnt,+prfchw,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+sse4a,+ssse3,+tbm,+x87,+xop,+xsave,-adx,-avx2,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vpopcntdq,-bmi2,-cldemote,-clflushopt,-clwb,-clzero,-fsgsbase,-gfni,-invpcid,-lwp,-movbe,-movdir64b,-movdiri,-mwaitx,-pconfig,-pku,-prefetchwt1,-ptwrite,-rdpid,-rdrnd,-rdseed,-rtm,-sgx,-sha,-shstk,-vaes,-vpclmulqdq,-waitpkg,-wbnoinvd,-xsavec,-xsaveopt,-xsaves" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
attributes #2 = { nounwind }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
!llvm.ident = !{!6}
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0-svn350198-1~exp1+0~20190101210959.2235~1.gbpd712dd (trunk)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, nameTableKind: None)
!1 = !DIFile(filename: "/home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp", directory: "/home/lebedevri/rawspeed/build-Clang-Release")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
!4 = !{i32 1, !"wchar_size", i32 4}
!5 = !{i32 7, !"PIC Level", i32 2}
!6 = !{!"clang version 8.0.0-svn350198-1~exp1+0~20190101210959.2235~1.gbpd712dd (trunk)"}
!7 = distinct !DISubprogram(name: "reconstructPass", scope: !8, file: !8, line: 178, type: !9, scopeLine: 180, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!8 = !DIFile(filename: "src/librawspeed/decompressors/VC5Decompressor.cpp", directory: "/home/lebedevri/rawspeed")
!9 = !DISubroutineType(types: !2)
!10 = !{!11, !15, i64 16}
!11 = !{!"_ZTS7ident_t", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !15, i64 16}
!12 = !{!"int", !13, i64 0}
!13 = !{!"omnipotent char", !14, i64 0}
!14 = !{!"Simple C++ TBAA"}
!15 = !{!"any pointer", !13, i64 0}
!16 = !DILocation(line: 181, column: 19, scope: !7)
!17 = !DILocation(line: 181, column: 24, scope: !7)
!18 = !DILocation(line: 181, column: 30, scope: !7)
!19 = !DILocation(line: 200, column: 23, scope: !7)
!20 = !{!21, !12, i64 4}
!21 = !{!"_ZTSN8rawspeed15VC5Decompressor7WaveletE", !12, i64 0, !12, i64 4, !22, i64 8, !23, i64 16, !12, i64 48}
!22 = !{!"short", !13, i64 0}
!23 = !{!"_ZTSSt5arrayISt10unique_ptrIN8rawspeed15VC5Decompressor7Wavelet12AbstractBandESt14default_deleteIS4_EELm4EE", !13, i64 0}
!24 = !DILocation(line: 200, column: 3, scope: !7)
!25 = !DILocation(line: 198, column: 9, scope: !7)
!26 = !DILocation(line: 200, column: 8, scope: !7)
!27 = !{!12, !12, i64 0}
!28 = !DILocation(line: 201, column: 9, scope: !7)
!29 = !DILocation(line: 203, column: 27, scope: !7)
!30 = !{!21, !12, i64 0}
!31 = !DILocation(line: 203, column: 25, scope: !7)
!32 = !DILocation(line: 203, column: 7, scope: !7)
!33 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !36)
!34 = distinct !DISubprogram(name: "operator()", scope: !35, file: !35, line: 78, type: !9, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!35 = !DIFile(filename: "../src/librawspeed/common/Array2DRef.h", directory: "/home/lebedevri/rawspeed/build-Clang-Release")
!36 = distinct !DILocation(line: 125, column: 33, scope: !37, inlinedAt: !38)
!37 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:182:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!38 = distinct !DILocation(line: 186, column: 14, scope: !39, inlinedAt: !40)
!39 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 185, type: !9, scopeLine: 185, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!40 = distinct !DILocation(line: 189, column: 16, scope: !41, inlinedAt: !42)
!41 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::First>", scope: !8, file: !8, line: 181, type: !9, scopeLine: 181, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!42 = distinct !DILocation(line: 204, column: 9, scope: !7)
!43 = !DILocation(line: 125, column: 33, scope: !37, inlinedAt: !38)
!44 = !{!22, !22, i64 0}
!45 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !46)
!46 = distinct !DILocation(line: 183, column: 14, scope: !47, inlinedAt: !48)
!47 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 182, type: !9, scopeLine: 182, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!48 = distinct !DILocation(line: 129, column: 29, scope: !49, inlinedAt: !50)
!49 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!50 = distinct !DILocation(line: 126, column: 23, scope: !37, inlinedAt: !38)
!51 = !DILocation(line: 183, column: 14, scope: !47, inlinedAt: !48)
!52 = !DILocation(line: 129, column: 29, scope: !49, inlinedAt: !50)
!53 = !DILocation(line: 129, column: 27, scope: !49, inlinedAt: !50)
!54 = !DILocation(line: 84, column: 27, scope: !34, inlinedAt: !46)
!55 = !DILocation(line: 129, column: 12, scope: !49, inlinedAt: !50)
!56 = !DILocation(line: 133, column: 16, scope: !37, inlinedAt: !38)
!57 = !DILocation(line: 135, column: 35, scope: !37, inlinedAt: !38)
!58 = !DILocation(line: 136, column: 29, scope: !37, inlinedAt: !38)
!59 = !DILocation(line: 140, column: 9, scope: !37, inlinedAt: !38)
!60 = !DILocation(line: 129, column: 27, scope: !49, inlinedAt: !61)
!61 = distinct !DILocation(line: 126, column: 23, scope: !37, inlinedAt: !62)
!62 = distinct !DILocation(line: 186, column: 14, scope: !39, inlinedAt: !63)
!63 = distinct !DILocation(line: 190, column: 15, scope: !41, inlinedAt: !42)
!64 = !DILocation(line: 129, column: 12, scope: !49, inlinedAt: !61)
!65 = !DILocation(line: 133, column: 16, scope: !37, inlinedAt: !62)
!66 = !DILocation(line: 135, column: 35, scope: !37, inlinedAt: !62)
!67 = !DILocation(line: 136, column: 29, scope: !37, inlinedAt: !62)
!68 = !DILocation(line: 140, column: 9, scope: !37, inlinedAt: !62)
!69 = !DILocation(line: 192, column: 42, scope: !41, inlinedAt: !42)
!70 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !72)
!71 = distinct !DISubprogram(name: "operator()", scope: !35, file: !35, line: 78, type: !9, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!72 = distinct !DILocation(line: 192, column: 5, scope: !41, inlinedAt: !42)
!73 = !DILocation(line: 192, column: 19, scope: !41, inlinedAt: !42)
!74 = !DILocation(line: 193, column: 46, scope: !41, inlinedAt: !42)
!75 = !DILocation(line: 84, column: 27, scope: !71, inlinedAt: !76)
!76 = distinct !DILocation(line: 193, column: 5, scope: !41, inlinedAt: !42)
!77 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !76)
!78 = !DILocation(line: 193, column: 23, scope: !41, inlinedAt: !42)
!79 = !DILocation(line: 203, column: 34, scope: !7)
!80 = distinct !{!80, !32, !81}
!81 = !DILocation(line: 204, column: 47, scope: !7)
!82 = !DILocation(line: 205, column: 18, scope: !7)
!83 = !DILocation(line: 205, column: 24, scope: !7)
!84 = !DILocation(line: 205, column: 22, scope: !7)
!85 = !DILocation(line: 0, scope: !7)
!86 = !DILocation(line: 205, column: 16, scope: !7)
!87 = !DILocation(line: 211, column: 7, scope: !7)
!88 = !DILocation(line: 207, column: 7, scope: !7)
!89 = !DILocation(line: 84, column: 27, scope: !34, inlinedAt: !90)
!90 = distinct !DILocation(line: 125, column: 33, scope: !91, inlinedAt: !92)
!91 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:182:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!92 = distinct !DILocation(line: 186, column: 14, scope: !93, inlinedAt: !94)
!93 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 185, type: !9, scopeLine: 185, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!94 = distinct !DILocation(line: 189, column: 16, scope: !95, inlinedAt: !96)
!95 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::Middle>", scope: !8, file: !8, line: 181, type: !9, scopeLine: 181, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!96 = distinct !DILocation(line: 208, column: 9, scope: !7)
!97 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !90)
!98 = !DILocation(line: 125, column: 33, scope: !91, inlinedAt: !92)
!99 = !DILocation(line: 84, column: 27, scope: !34, inlinedAt: !100)
!100 = distinct !DILocation(line: 183, column: 14, scope: !101, inlinedAt: !102)
!101 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 182, type: !9, scopeLine: 182, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!102 = distinct !DILocation(line: 129, column: 29, scope: !103, inlinedAt: !104)
!103 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!104 = distinct !DILocation(line: 126, column: 23, scope: !91, inlinedAt: !92)
!105 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !100)
!106 = !DILocation(line: 183, column: 14, scope: !101, inlinedAt: !102)
!107 = !DILocation(line: 129, column: 29, scope: !103, inlinedAt: !104)
!108 = !DILocation(line: 129, column: 27, scope: !103, inlinedAt: !104)
!109 = !DILocation(line: 129, column: 12, scope: !103, inlinedAt: !104)
!110 = !DILocation(line: 133, column: 16, scope: !91, inlinedAt: !92)
!111 = !DILocation(line: 135, column: 35, scope: !91, inlinedAt: !92)
!112 = !DILocation(line: 136, column: 29, scope: !91, inlinedAt: !92)
!113 = !DILocation(line: 140, column: 9, scope: !91, inlinedAt: !92)
!114 = !DILocation(line: 129, column: 12, scope: !103, inlinedAt: !115)
!115 = distinct !DILocation(line: 126, column: 23, scope: !91, inlinedAt: !116)
!116 = distinct !DILocation(line: 186, column: 14, scope: !93, inlinedAt: !117)
!117 = distinct !DILocation(line: 190, column: 15, scope: !95, inlinedAt: !96)
!118 = !DILocation(line: 133, column: 16, scope: !91, inlinedAt: !116)
!119 = !DILocation(line: 135, column: 35, scope: !91, inlinedAt: !116)
!120 = !DILocation(line: 136, column: 29, scope: !91, inlinedAt: !116)
!121 = !DILocation(line: 140, column: 9, scope: !91, inlinedAt: !116)
!122 = !DILocation(line: 192, column: 42, scope: !95, inlinedAt: !96)
!123 = !DILocation(line: 84, column: 27, scope: !71, inlinedAt: !124)
!124 = distinct !DILocation(line: 192, column: 5, scope: !95, inlinedAt: !96)
!125 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !124)
!126 = !DILocation(line: 192, column: 19, scope: !95, inlinedAt: !96)
!127 = !DILocation(line: 193, column: 46, scope: !95, inlinedAt: !96)
!128 = !DILocation(line: 84, column: 27, scope: !71, inlinedAt: !129)
!129 = distinct !DILocation(line: 193, column: 5, scope: !95, inlinedAt: !96)
!130 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !129)
!131 = !DILocation(line: 193, column: 23, scope: !95, inlinedAt: !96)
!132 = !DILocation(line: 207, column: 34, scope: !7)
!133 = !DILocation(line: 207, column: 25, scope: !7)
!134 = distinct !{!134, !88, !135}
!135 = !DILocation(line: 208, column: 48, scope: !7)
!136 = !DILocation(line: 84, column: 27, scope: !34, inlinedAt: !137)
!137 = distinct !DILocation(line: 125, column: 33, scope: !138, inlinedAt: !139)
!138 = distinct !DISubprogram(name: "operator()<(lambda at /home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp:182:22)>", scope: !8, file: !8, line: 122, type: !9, scopeLine: 124, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!139 = distinct !DILocation(line: 186, column: 14, scope: !140, inlinedAt: !141)
!140 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 185, type: !9, scopeLine: 185, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!141 = distinct !DILocation(line: 189, column: 16, scope: !142, inlinedAt: !143)
!142 = distinct !DISubprogram(name: "operator()<rawspeed::(anonymous namespace)::ConvolutionParams::Last>", scope: !8, file: !8, line: 181, type: !9, scopeLine: 181, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!143 = distinct !DILocation(line: 212, column: 9, scope: !7)
!144 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !137)
!145 = !DILocation(line: 125, column: 33, scope: !138, inlinedAt: !139)
!146 = !DILocation(line: 84, column: 27, scope: !34, inlinedAt: !147)
!147 = distinct !DILocation(line: 183, column: 14, scope: !148, inlinedAt: !149)
!148 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 182, type: !9, scopeLine: 182, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!149 = distinct !DILocation(line: 129, column: 29, scope: !150, inlinedAt: !151)
!150 = distinct !DISubprogram(name: "operator()", scope: !8, file: !8, line: 126, type: !9, scopeLine: 126, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!151 = distinct !DILocation(line: 126, column: 23, scope: !138, inlinedAt: !139)
!152 = !DILocation(line: 84, column: 10, scope: !34, inlinedAt: !147)
!153 = !DILocation(line: 183, column: 14, scope: !148, inlinedAt: !149)
!154 = !DILocation(line: 129, column: 29, scope: !150, inlinedAt: !151)
!155 = !DILocation(line: 129, column: 27, scope: !150, inlinedAt: !151)
!156 = !DILocation(line: 129, column: 12, scope: !150, inlinedAt: !151)
!157 = !DILocation(line: 133, column: 16, scope: !138, inlinedAt: !139)
!158 = !DILocation(line: 135, column: 35, scope: !138, inlinedAt: !139)
!159 = !DILocation(line: 136, column: 29, scope: !138, inlinedAt: !139)
!160 = !DILocation(line: 140, column: 9, scope: !138, inlinedAt: !139)
!161 = !DILocation(line: 129, column: 27, scope: !150, inlinedAt: !162)
!162 = distinct !DILocation(line: 126, column: 23, scope: !138, inlinedAt: !163)
!163 = distinct !DILocation(line: 186, column: 14, scope: !140, inlinedAt: !164)
!164 = distinct !DILocation(line: 190, column: 15, scope: !142, inlinedAt: !143)
!165 = !DILocation(line: 129, column: 12, scope: !150, inlinedAt: !162)
!166 = !DILocation(line: 133, column: 16, scope: !138, inlinedAt: !163)
!167 = !DILocation(line: 135, column: 35, scope: !138, inlinedAt: !163)
!168 = !DILocation(line: 136, column: 29, scope: !138, inlinedAt: !163)
!169 = !DILocation(line: 140, column: 9, scope: !138, inlinedAt: !163)
!170 = !DILocation(line: 192, column: 42, scope: !142, inlinedAt: !143)
!171 = !DILocation(line: 84, column: 27, scope: !71, inlinedAt: !172)
!172 = distinct !DILocation(line: 192, column: 5, scope: !142, inlinedAt: !143)
!173 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !172)
!174 = !DILocation(line: 192, column: 19, scope: !142, inlinedAt: !143)
!175 = !DILocation(line: 193, column: 46, scope: !142, inlinedAt: !143)
!176 = !DILocation(line: 84, column: 27, scope: !71, inlinedAt: !177)
!177 = distinct !DILocation(line: 193, column: 5, scope: !142, inlinedAt: !143)
!178 = !DILocation(line: 84, column: 10, scope: !71, inlinedAt: !177)
!179 = !DILocation(line: 193, column: 23, scope: !142, inlinedAt: !143)
!180 = !DILocation(line: 211, column: 34, scope: !7)
!181 = !DILocation(line: 211, column: 25, scope: !7)
!182 = distinct !{!182, !87, !183}
!183 = !DILocation(line: 212, column: 46, scope: !7)
!184 = distinct !{!184, !25, !185}
!185 = !DILocation(line: 198, column: 33, scope: !7)
!186 = !DILocation(line: 215, column: 1, scope: !7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment