Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
Go
Haskell
HLSL
Hook
Hylo
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
; ModuleID = 'extract.ll' source_filename = "/home/lebedevri/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-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", %"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl_data" } %"class.rawspeed::DefaultInitAllocatorAdaptor" = type { %"class.std::allocator" } %"class.std::allocator" = type { i8 } %"struct.std::_Vector_base<short, rawspeed::DefaultInitAllocatorAdaptor<short, std::allocator<short>, void> >::_Vector_impl_data" = type { i16*, i16*, i16* } %"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 willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, 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 %this, %"class.rawspeed::Array2DRef.2"* nocapture readonly byval(%"class.rawspeed::Array2DRef.2") align 8 %dst, %"class.rawspeed::Array2DRef"* nocapture readonly byval(%"class.rawspeed::Array2DRef") align 8 %low, %"class.rawspeed::Array2DRef"* nocapture readonly byval(%"class.rawspeed::Array2DRef") align 8 %high, i32 %descaleShift, i1 zeroext %clampUint) local_unnamed_addr #1 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %.omp.lb = alloca i32, align 4 %.omp.ub = alloca i32, align 4 %.omp.stride = alloca i32, align 4 %.omp.is_last = alloca i32, align 4 %.kmpc_loc.addr = alloca %struct.ident_t, align 8 %0 = bitcast %struct.ident_t* %.kmpc_loc.addr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %0, i8* nonnull align 8 dereferenceable(24) bitcast (%struct.ident_t* @0 to i8*), i64 16, i1 false) %1 = getelementptr inbounds %struct.ident_t, %struct.ident_t* %.kmpc_loc.addr, i64 0, i32 4 store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %1, align 8, !tbaa !4 %2 = call i32 @__kmpc_global_thread_num(%struct.ident_t* nonnull %.kmpc_loc.addr) #2 %process.sroa.0.0..sroa_idx = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %low, i64 0, i32 0 %process.sroa.0.0.copyload = load i32, i32* %process.sroa.0.0..sroa_idx, align 8, !tbaa.struct !10 %process.sroa.6109.0..sroa_idx111 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %low, i64 0, i32 1 %process.sroa.6109.0.copyload = load i16*, i16** %process.sroa.6109.0..sroa_idx111, align 8, !tbaa.struct !10 %process.sroa.9115.24..sroa_idx = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %high, i64 0, i32 0 %process.sroa.9115.24.copyload = load i32, i32* %process.sroa.9115.24..sroa_idx, align 8, !tbaa.struct !10 %process.sroa.13118.24..sroa_idx120 = getelementptr inbounds %"class.rawspeed::Array2DRef", %"class.rawspeed::Array2DRef"* %high, i64 0, i32 1 %process.sroa.13118.24.copyload = load i16*, i16** %process.sroa.13118.24..sroa_idx120, align 8, !tbaa.struct !10 %process.sroa.21128.56..sroa_idx = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %dst, i64 0, i32 0 %process.sroa.21128.56.copyload = load i32, i32* %process.sroa.21128.56..sroa_idx, align 8, !tbaa.struct !10 %process.sroa.25133.56..sroa_idx135 = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %dst, i64 0, i32 1 %process.sroa.25133.56.copyload = load i16*, i16** %process.sroa.25133.56..sroa_idx135, align 8, !tbaa.struct !10 %height = getelementptr inbounds %"class.rawspeed::Array2DRef.2", %"class.rawspeed::Array2DRef.2"* %dst, i64 0, i32 3 %3 = load i32, i32* %height, align 4, !tbaa !13 %sub4 = add nsw i32 %3, -1 %cmp = icmp sgt i32 %3, 0 br i1 %cmp, label %omp.precond.then, label %omp.precond.end omp.precond.then: ; preds = %entry %4 = bitcast i32* %.omp.lb to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %4) #2 store i32 0, i32* %.omp.lb, align 4, !tbaa !11 %5 = bitcast i32* %.omp.ub to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %5) #2 store i32 %sub4, i32* %.omp.ub, align 4, !tbaa !11 %6 = bitcast i32* %.omp.stride to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %6) #2 store i32 1, i32* %.omp.stride, align 4, !tbaa !11 %7 = bitcast i32* %.omp.is_last to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %7) #2 store i32 0, i32* %.omp.is_last, align 4, !tbaa !11 store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %1, align 8, !tbaa !4 call void @__kmpc_for_static_init_4(%struct.ident_t* nonnull %.kmpc_loc.addr, i32 %2, i32 34, i32* nonnull %.omp.is_last, i32* nonnull %.omp.lb, i32* nonnull %.omp.ub, i32* nonnull %.omp.stride, i32 1, i32 1) #2 %8 = load i32, i32* %.omp.ub, align 4, !tbaa !11 %cmp7 = icmp slt i32 %8, %3 %cond = select i1 %cmp7, i32 %8, i32 %sub4 store i32 %cond, i32* %.omp.ub, align 4, !tbaa !11 %9 = load i32, i32* %.omp.lb, align 4, !tbaa !11 %cmp8155 = icmp sgt i32 %9, %cond br i1 %cmp8155, label %omp.loop.exit, label %omp.inner.for.body.lr.ph omp.inner.for.body.lr.ph: ; preds = %omp.precond.then %width = getelementptr inbounds %"class.rawspeed::VC5Decompressor::Wavelet", %"class.rawspeed::VC5Decompressor::Wavelet"* %this, i64 0, i32 0 %10 = load i32, i32* %width, align 8, !tbaa !15 %cmp11146 = icmp sgt i32 %10, 2 %11 = sext i32 %9 to i64 %12 = sext i32 %process.sroa.21128.56.copyload to i64 %13 = sext i32 %process.sroa.0.0.copyload to i64 %14 = sext i32 %process.sroa.9115.24.copyload to i64 %15 = sext i32 %cond to i64 %16 = zext i32 %10 to i64 br label %omp.inner.for.body omp.inner.for.body: ; preds = %invoke.cont15, %omp.inner.for.body.lr.ph %indvars.iv163 = phi i64 [ %indvars.iv.next164, %invoke.cont15 ], [ %11, %omp.inner.for.body.lr.ph ] %17 = mul nsw i64 %indvars.iv163, %14 %arrayidx.i.i1.i.i.i = getelementptr inbounds i16, i16* %process.sroa.13118.24.copyload, i64 %17 %18 = load i16, i16* %arrayidx.i.i1.i.i.i, align 2, !tbaa !19 %conv.i.i.i = sext i16 %18 to i32 %19 = mul nsw i64 %indvars.iv163, %13 %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds i16, i16* %process.sroa.6109.0.copyload, i64 %19 %20 = load i16, i16* %arrayidx.i.i.i.i.i.i.i, align 2, !tbaa !19 %conv3.i.i.i.i = sext i16 %20 to i32 %mul.i.i.i.i = mul nsw i32 %conv3.i.i.i.i, 11 %arrayidx.i.i11.1.i.i.i.i = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 1 %21 = load i16, i16* %arrayidx.i.i11.1.i.i.i.i, align 2, !tbaa !19 %conv3.1.i.i.i.i = sext i16 %21 to i32 %mul.1.i.i.i.i = mul nsw i32 %conv3.1.i.i.i.i, -4 %arrayidx.i.i11.2.i.i.i.i = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 2 %22 = load i16, i16* %arrayidx.i.i11.2.i.i.i.i, align 2, !tbaa !19 %conv3.2.i.i.i.i = sext i16 %22 to i32 %add4.1.i.i.i.i = add nsw i32 %mul.i.i.i.i, 4 %add4.2.i.i.i.i = add nsw i32 %add4.1.i.i.i.i, %mul.1.i.i.i.i %add.i.i.i = add nsw i32 %add4.2.i.i.i.i, %conv3.2.i.i.i.i %shr.i.i.i = ashr i32 %add.i.i.i, 3 %add4.i.i.i = add nsw i32 %shr.i.i.i, %conv.i.i.i %shl.i.i.i = shl i32 %add4.i.i.i, %descaleShift %23 = lshr i32 %shl.i.i.i, 1 %mul.i.i.i32.i = mul nsw i32 %conv3.i.i.i.i, 5 %mul.1.i.i.i35.i = shl nsw i32 %conv3.1.i.i.i.i, 2 %add4.1.i.i.i38.i = add nsw i32 %mul.i.i.i32.i, 4 %add4.2.i.i.i39.i = add nsw i32 %add4.1.i.i.i38.i, %mul.1.i.i.i35.i %add.i.i40.i = sub nsw i32 %add4.2.i.i.i39.i, %conv3.2.i.i.i.i %shr.i.i41.i = ashr i32 %add.i.i40.i, 3 %add4.i.i42.i = sub nsw i32 %shr.i.i41.i, %conv.i.i.i %shl.i.i43.i = shl i32 %add4.i.i42.i, %descaleShift %24 = lshr i32 %shl.i.i43.i, 1 %conv.i = trunc i32 %23 to i16 %25 = mul nsw i64 %indvars.iv163, %12 %arrayidx.i.i5.i = getelementptr inbounds i16, i16* %process.sroa.25133.56.copyload, i64 %25 store i16 %conv.i, i16* %arrayidx.i.i5.i, align 2, !tbaa !19 %conv5.i = trunc i32 %24 to i16 %arrayidx.i.i = getelementptr inbounds i16, i16* %arrayidx.i.i5.i, i64 1 store i16 %conv5.i, i16* %arrayidx.i.i, align 2, !tbaa !19 %arrayidx.i.i.i.i73147 = getelementptr inbounds i16, i16* %arrayidx.i.i1.i.i.i, i64 1 %26 = load i16, i16* %arrayidx.i.i.i.i73147, align 2, !tbaa !19 %conv.i.i.i74148 = sext i16 %26 to i32 br i1 %cmp11146, label %for.body, label %invoke.cont15 for.body: ; preds = %for.body, %omp.inner.for.body %indvars.iv158 = phi i64 [ %indvars.iv.next159, %for.body ], [ 1, %omp.inner.for.body ] %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 2, %omp.inner.for.body ] %conv.i.i.i74152 = phi i32 [ %conv.i.i.i74, %for.body ], [ %conv.i.i.i74148, %omp.inner.for.body ] %27 = add nsw i64 %indvars.iv158, -1 %arrayidx.i.i11.i.i.i.i80 = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %27 %28 = load i16, i16* %arrayidx.i.i11.i.i.i.i80, align 2, !tbaa !19 %conv3.i.i.i.i81 = sext i16 %28 to i32 %arrayidx.i.i11.1.i.i.i.i82 = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %indvars.iv158 %29 = load i16, i16* %arrayidx.i.i11.1.i.i.i.i82, align 2, !tbaa !19 %conv3.1.i.i.i.i83 = sext i16 %29 to i32 %mul.1.i.i.i.i84 = shl nsw i32 %conv3.1.i.i.i.i83, 3 %arrayidx.i.i11.2.i.i.i.i85 = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %indvars.iv %30 = load i16, i16* %arrayidx.i.i11.2.i.i.i.i85, align 2, !tbaa !19 %conv3.2.i.i.i.i86 = sext i16 %30 to i32 %add4.1.i.i.i.i87 = add nsw i32 %conv3.i.i.i.i81, 4 %add4.2.i.i.i.i88 = add nsw i32 %add4.1.i.i.i.i87, %mul.1.i.i.i.i84 %add.i.i.i89 = sub nsw i32 %add4.2.i.i.i.i88, %conv3.2.i.i.i.i86 %shr.i.i.i90 = ashr i32 %add.i.i.i89, 3 %add4.i.i.i91 = add nsw i32 %shr.i.i.i90, %conv.i.i.i74152 %shl.i.i.i92 = shl i32 %add4.i.i.i91, %descaleShift %31 = lshr i32 %shl.i.i.i92, 1 %add4.1.i.i.i60.i = sub nsw i32 4, %conv3.i.i.i.i81 %add4.2.i.i.i61.i = add nsw i32 %add4.1.i.i.i60.i, %mul.1.i.i.i.i84 %add.i.i62.i = add nsw i32 %add4.2.i.i.i61.i, %conv3.2.i.i.i.i86 %shr.i.i63.i = ashr i32 %add.i.i62.i, 3 %add4.i.i64.i = sub nsw i32 %shr.i.i63.i, %conv.i.i.i74152 %shl.i.i65.i = shl i32 %add4.i.i64.i, %descaleShift %32 = lshr i32 %shl.i.i65.i, 1 %conv.i93 = trunc i32 %31 to i16 %33 = shl nuw nsw i64 %indvars.iv158, 1 %arrayidx.i25.i101 = getelementptr inbounds i16, i16* %arrayidx.i.i5.i, i64 %33 store i16 %conv.i93, i16* %arrayidx.i25.i101, align 2, !tbaa !19 %conv5.i102 = trunc i32 %32 to i16 %34 = or i64 %33, 1 %arrayidx.i.i105 = getelementptr inbounds i16, i16* %arrayidx.i.i5.i, i64 %34 store i16 %conv5.i102, i16* %arrayidx.i.i105, align 2, !tbaa !19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp11 = icmp ult i64 %indvars.iv.next, %16 %arrayidx.i.i.i.i73 = getelementptr inbounds i16, i16* %arrayidx.i.i1.i.i.i, i64 %indvars.iv %35 = load i16, i16* %arrayidx.i.i.i.i73, align 2, !tbaa !19 %conv.i.i.i74 = sext i16 %35 to i32 %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 1 br i1 %cmp11, label %for.body, label %for.cond.invoke.cont15_crit_edge for.cond.invoke.cont15_crit_edge: ; preds = %for.body %conv.i.i.i74.le = sext i16 %35 to i32 %36 = trunc i64 %indvars.iv to i32 br label %invoke.cont15 invoke.cont15: ; preds = %for.cond.invoke.cont15_crit_edge, %omp.inner.for.body %col.0.lcssa = phi i32 [ %36, %for.cond.invoke.cont15_crit_edge ], [ 1, %omp.inner.for.body ] %idxprom.i.i.i.i72.lcssa = phi i64 [ %indvars.iv, %for.cond.invoke.cont15_crit_edge ], [ 1, %omp.inner.for.body ] %conv.i.i.i74.lcssa = phi i32 [ %conv.i.i.i74.le, %for.cond.invoke.cont15_crit_edge ], [ %conv.i.i.i74148, %omp.inner.for.body ] %add2.i.i.i.i.i = add i32 %col.0.lcssa, -2 %idxprom.i.i.i.i.i.i = sext i32 %add2.i.i.i.i.i to i64 %arrayidx.i.i11.i.i.i.i = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %idxprom.i.i.i.i.i.i %37 = load i16, i16* %arrayidx.i.i11.i.i.i.i, align 2, !tbaa !19 %conv3.i.i.i.i49 = sext i16 %37 to i32 %add2.i.1.i.i.i.i = add i32 %col.0.lcssa, -1 %idxprom.i.i.1.i.i.i.i = sext i32 %add2.i.1.i.i.i.i to i64 %arrayidx.i.i11.1.i.i.i.i50 = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %idxprom.i.i.1.i.i.i.i %38 = load i16, i16* %arrayidx.i.i11.1.i.i.i.i50, align 2, !tbaa !19 %conv3.1.i.i.i.i51 = sext i16 %38 to i32 %mul.1.i.i.i.i52 = shl nsw i32 %conv3.1.i.i.i.i51, 2 %arrayidx.i.i11.2.i.i.i.i53 = getelementptr inbounds i16, i16* %arrayidx.i.i.i.i.i.i.i, i64 %idxprom.i.i.i.i72.lcssa %39 = load i16, i16* %arrayidx.i.i11.2.i.i.i.i53, align 2, !tbaa !19 %conv3.2.i.i.i.i54 = sext i16 %39 to i32 %mul.2.i.i.i.i = mul nsw i32 %conv3.2.i.i.i.i54, 5 %add4.1.i.i.i.i55 = sub nsw i32 4, %conv3.i.i.i.i49 %add4.2.i.i.i.i56 = add nsw i32 %add4.1.i.i.i.i55, %mul.1.i.i.i.i52 %add.i.i.i57 = add nsw i32 %add4.2.i.i.i.i56, %mul.2.i.i.i.i %shr.i.i.i58 = ashr i32 %add.i.i.i57, 3 %add4.i.i.i59 = add nsw i32 %shr.i.i.i58, %conv.i.i.i74.lcssa %shl.i.i.i60 = shl i32 %add4.i.i.i59, %descaleShift %40 = lshr i32 %shl.i.i.i60, 1 %mul.1.i.i.i56.i = mul nsw i32 %conv3.1.i.i.i.i51, -4 %mul.2.i.i.i60.i = mul nsw i32 %conv3.2.i.i.i.i54, 11 %add4.1.i.i.i61.i = add nsw i32 %conv3.i.i.i.i49, 4 %add4.2.i.i.i62.i = add nsw i32 %add4.1.i.i.i61.i, %mul.1.i.i.i56.i %add.i.i63.i = add nsw i32 %add4.2.i.i.i62.i, %mul.2.i.i.i60.i %shr.i.i64.i = ashr i32 %add.i.i63.i, 3 %add4.i.i65.i = sub nsw i32 %shr.i.i64.i, %conv.i.i.i74.lcssa %shl.i.i66.i = shl i32 %add4.i.i65.i, %descaleShift %41 = lshr i32 %shl.i.i66.i, 1 %conv.i61 = trunc i32 %40 to i16 %mul.i = shl nsw i32 %col.0.lcssa, 1 %idxprom.i24.i = sext i32 %mul.i to i64 %arrayidx.i25.i = getelementptr inbounds i16, i16* %arrayidx.i.i5.i, i64 %idxprom.i24.i store i16 %conv.i61, i16* %arrayidx.i25.i, align 2, !tbaa !19 %conv5.i62 = trunc i32 %41 to i16 %add.i = or i32 %mul.i, 1 %idxprom.i.i = sext i32 %add.i to i64 %arrayidx.i.i63 = getelementptr inbounds i16, i16* %arrayidx.i.i5.i, i64 %idxprom.i.i store i16 %conv5.i62, i16* %arrayidx.i.i63, align 2, !tbaa !19 %indvars.iv.next164 = add nsw i64 %indvars.iv163, 1 %cmp8 = icmp slt i64 %indvars.iv163, %15 br i1 %cmp8, label %omp.inner.for.body, label %omp.loop.exit omp.loop.exit: ; preds = %invoke.cont15, %omp.precond.then store i8* getelementptr inbounds ([140 x i8], [140 x i8]* @2, i64 0, i64 0), i8** %1, align 8, !tbaa !4 call void @__kmpc_for_static_fini(%struct.ident_t* nonnull %.kmpc_loc.addr, i32 %2) #2 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %7) #2 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %6) #2 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %5) #2 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %4) #2 br label %omp.precond.end omp.precond.end: ; preds = %omp.loop.exit, %entry store i8* getelementptr inbounds ([139 x i8], [139 x i8]* @1, i64 0, i64 0), i8** %1, align 8, !tbaa !4 call void @__kmpc_barrier(%struct.ident_t* nonnull %.kmpc_loc.addr, i32 %2) #2 ret void } attributes #0 = { argmemonly nounwind willreturn } attributes #1 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "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,+cx8,+f16c,+fma,+fma4,+fxsr,+lwp,+lzcnt,+mmx,+pclmul,+popcnt,+prfchw,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+sse4a,+ssse3,+tbm,+x87,+xop,+xsave,-adx,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-bmi2,-cldemote,-clflushopt,-clwb,-clzero,-enqcmd,-fsgsbase,-gfni,-invpcid,-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.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} !0 = !{i32 2, !"Debug Info Version", i32 3} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{i32 7, !"PIC Level", i32 2} !3 = !{!"clang version 11.0.0 (git@github.com:LebedevRI/llvm-project.git cb297050bb029b147e3c31c4efbd5887f9500f5d)"} !4 = !{!5, !9, i64 16} !5 = !{!"_ZTS7ident_t", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !9, i64 16} !6 = !{!"int", !7, i64 0} !7 = !{!"omnipotent char", !8, i64 0} !8 = !{!"Simple C++ TBAA"} !9 = !{!"any pointer", !7, i64 0} !10 = !{i64 0, i64 4, !11, i64 8, i64 8, !12, i64 16, i64 4, !11, i64 20, i64 4, !11} !11 = !{!6, !6, i64 0} !12 = !{!9, !9, i64 0} !13 = !{!14, !6, i64 20} !14 = !{!"_ZTSN8rawspeed10Array2DRefIsEE", !6, i64 0, !9, i64 8, !6, i64 16, !6, i64 20} !15 = !{!16, !6, i64 0} !16 = !{!"_ZTSN8rawspeed15VC5Decompressor7WaveletE", !6, i64 0, !6, i64 4, !17, i64 8, !18, i64 16, !6, i64 48} !17 = !{!"short", !7, i64 0} !18 = !{!"_ZTSSt5arrayISt10unique_ptrIN8rawspeed15VC5Decompressor7Wavelet12AbstractBandESt14default_deleteIS4_EELm4EE", !7, i64 0} !19 = !{!17, !17, i64 0}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree