; ModuleID = '../src/obu.c' source_filename = "../src/obu.c" target datalayout = "e-m:w-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" target triple = "thumbv7-w64-windows-gnu" %struct.Dav1dLoopfilterModeRefDeltas = type { [2 x i32], [8 x i32] } %struct.Dav1dWarpedMotionParams = type { i32, [6 x i32], %union.anon } %union.anon = type { %struct.anon.10 } %struct.anon.10 = type { i16, i16, i16, i16 } %struct.Dav1dContext = type { %struct.Dav1dFrameContext*, i32, %struct.Dav1dTileGroup*, i32, i32, i32, %struct.Dav1dRef*, %struct.Dav1dSequenceHeader*, %struct.Dav1dRef*, %struct.Dav1dFrameHeader*, %struct.Dav1dRef*, %struct.Dav1dContentLightLevel*, %struct.Dav1dRef*, %struct.Dav1dMasteringDisplay*, %struct.Dav1dRef*, %struct.Dav1dITUTT35*, %struct.Dav1dData, %struct.Dav1dPicture, %struct.anon.39, [8 x %struct.anon.40], [8 x %struct.CdfThreadContext], [3 x %struct.Dav1dDSPContext], %struct.anon.41, %struct.Dav1dPicAllocator, i32, i32, i32, i32, i32, i32, %struct.Dav1dLogger } %struct.Dav1dFrameContext = type { %struct.Dav1dRef*, %struct.Dav1dSequenceHeader*, %struct.Dav1dRef*, %struct.Dav1dFrameHeader*, [7 x %struct.Dav1dThreadPicture], %struct.Dav1dPicture, %struct.Dav1dThreadPicture, %struct.Dav1dRef*, %struct.refmvs_temporal_block*, [7 x %struct.refmvs_temporal_block*], [7 x %struct.Dav1dRef*], %struct.Dav1dRef*, %struct.Dav1dRef*, i8*, i8*, [7 x i32], [7 x [7 x i32]], [7 x i8], %struct.CdfThreadContext, %struct.CdfThreadContext, %struct.Dav1dTileGroup*, i32, i32, [7 x [2 x %struct.ScalableMotionParams]], [2 x i32], [2 x i32], %struct.Dav1dContext*, %struct.Dav1dTileContext*, i32, %struct.Dav1dTileState*, i32, %struct.Dav1dDSPContext*, %struct.anon.30, i32, [3 x i8*], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x [3 x [2 x i16]]], [2 x [19 x [3 x i8*]]], %struct.BlockContext*, i32, %struct.refmvs_frame, [7 x [7 x i8]], i32, %struct.anon.37, %struct.anon.38, %struct.FrameTileThreadData, [8 x i8] } %struct.Dav1dThreadPicture = type { %struct.Dav1dPicture, i32, %struct.thread_data*, i32* } %struct.thread_data = type { %struct.pthread_t, %struct._RTL_CONDITION_VARIABLE, %struct._RTL_SRWLOCK, i32 } %struct.pthread_t = type { i8*, i8* (i8*)*, i8* } %struct._RTL_CONDITION_VARIABLE = type { i8* } %struct._RTL_SRWLOCK = type { i8* } %struct.refmvs_temporal_block = type { %union.mv, i8 } %union.mv = type { i32 } %struct.CdfThreadContext = type { %struct.Dav1dRef*, %union.anon.12, %struct.thread_data*, i32* } %union.anon.12 = type { %struct.CdfContext* } %struct.CdfContext = type { %struct.CdfModeContext, [5 x [5 x [16 x i16]]], %struct.CdfCoefContext, %struct.CdfMvContext, %struct.CdfMvContext } %struct.CdfModeContext = type { [4 x [16 x i16]], [2 x [13 x [16 x i16]]], [9 x [16 x i16]], [5 x [4 x [16 x i16]]], [6 x [16 x i16]], [2 x [16 x i16]], [16 x i16], [2 x [13 x [8 x i16]]], [3 x [13 x [8 x i16]]], [8 x i16], [8 x [8 x i16]], [8 x i16], [8 x [8 x i16]], [3 x [8 x i16]], [2 x [7 x [8 x i16]]], [2 x [7 x [5 x [8 x i16]]]], [2 x [8 x [4 x i16]]], [4 x [3 x [4 x i16]]], [22 x [4 x i16]], [4 x i16], [5 x [4 x i16]], [4 x [4 x i16]], [4 x i16], [2 x i16], [2 x i16], [7 x [2 x i16]], [7 x [2 x i16]], [4 x [2 x i16]], [22 x [2 x i16]], [6 x [2 x i16]], [2 x [2 x i16]], [6 x [2 x i16]], [3 x [2 x i16]], [4 x [2 x i16]], [5 x [2 x i16]], [5 x [2 x i16]], [6 x [2 x i16]], [6 x [2 x i16]], [9 x [2 x i16]], [6 x [3 x [2 x i16]]], [3 x [3 x [2 x i16]]], [2 x [3 x [2 x i16]]], [3 x [3 x [2 x i16]]], [7 x [3 x [2 x i16]]], [3 x [2 x i16]], [3 x [2 x i16]], [3 x [2 x i16]], [22 x [2 x i16]], [7 x [3 x [2 x i16]]], [2 x [2 x i16]], [2 x i16], [8 x i8] } %struct.CdfCoefContext = type { [2 x [2 x [8 x i16]]], [2 x [2 x [8 x i16]]], [2 x [2 x [8 x i16]]], [2 x [2 x [8 x i16]]], [2 x [2 x [16 x i16]]], [2 x [16 x i16]], [2 x [16 x i16]], [5 x [2 x [4 x [4 x i16]]]], [5 x [2 x [41 x [4 x i16]]]], [4 x [2 x [21 x [4 x i16]]]], [5 x [2 x [11 x [2 x i16]]]], [5 x [13 x [2 x i16]]], [2 x [3 x [2 x i16]]], [28 x i8] } %struct.CdfMvContext = type { [2 x %struct.CdfMvComponent], [4 x i16], [24 x i8] } %struct.CdfMvComponent = type { [16 x i16], [2 x [4 x i16]], [4 x i16], [2 x i16], [2 x i16], [2 x i16], [10 x [2 x i16]], [2 x i16], [16 x i8] } %struct.ScalableMotionParams = type { i32, i32 } %struct.Dav1dTileContext = type { %struct.Dav1dFrameContext*, %struct.Dav1dTileState*, i32, i32, %struct.BlockContext, %struct.BlockContext*, [28 x i8], %union.anon.16, [2 x [32 x [3 x [8 x i16]]]], [2 x [32 x i8]], [1024 x i8], %struct.refmvs_tile, [52 x i8], %union.anon.18, %struct.Dav1dWarpedMotionParams, %struct.Av1Filter*, i8*, i32, %struct.anon.29, [48 x i8] } %struct.BlockContext = type { [32 x i8], [32 x i8], [2 x [32 x i8]], [32 x i8], [32 x i8], [32 x i8], [32 x i8], [32 x i8], [2 x [32 x i8]], [2 x [32 x i8]], [32 x i8], [32 x i8], [32 x i8], [32 x i8], [16 x i8], [32 x i8], [32 x i8] } %union.anon.16 = type { [1024 x i32] } %struct.refmvs_tile = type { %struct.refmvs_frame*, [37 x %struct.refmvs_block*], %struct.refmvs_temporal_block*, %struct.anon.17, %struct.anon.17 } %struct.refmvs_block = type { %union.refmvs_mvpair, %union.refmvs_refpair, i8, i8 } %union.refmvs_mvpair = type { i64 } %union.refmvs_refpair = type { i16 } %struct.anon.17 = type { i32, i32 } %union.anon.18 = type { %struct.anon.19 } %struct.anon.19 = type { %union.anon.20, %union.anon.22 } %union.anon.20 = type { %struct.anon.21 } %struct.anon.21 = type { [2 x [16384 x i16]], [16384 x i8] } %union.anon.22 = type { [84160 x i16] } %struct.Av1Filter = type { [2 x [32 x [3 x [2 x i16]]]], [2 x [32 x [2 x [2 x i16]]]], [4 x i8], [32 x [2 x i16]] } %struct.anon.29 = type { %struct.thread_data, %struct.FrameTileThreadData*, i32 } %struct.Dav1dTileState = type { %struct.CdfContext, %struct.MsacContext, %struct.anon.13, i32, %struct.anon.14, %struct.anon.15, [8 x [3 x [2 x i16]]], [3 x [2 x i16]]*, i32, [4 x i8], [8 x [4 x [8 x [2 x i8]]]], [4 x [8 x [2 x i8]]]*, [3 x %struct.Av1RestorationUnit*] } %struct.MsacContext = type { i8*, i8*, i32, i32, i32, i32 } %struct.anon.13 = type { i32, i32, i32, i32, i32, i32 } %struct.anon.14 = type { %struct._RTL_SRWLOCK, %struct._RTL_CONDITION_VARIABLE } %struct.anon.15 = type { i8*, i8* } %struct.Av1RestorationUnit = type { i32, [3 x i16], [3 x i16], i8, [2 x i16] } %struct.Dav1dDSPContext = type { %struct.Dav1dFilmGrainDSPContext, %struct.Dav1dIntraPredDSPContext, %struct.Dav1dMCDSPContext, %struct.Dav1dInvTxfmDSPContext, %struct.Dav1dLoopFilterDSPContext, %struct.Dav1dCdefDSPContext, %struct.Dav1dLoopRestorationDSPContext } %struct.Dav1dFilmGrainDSPContext = type { void ([82 x i8]*, %struct.Dav1dFilmGrainData*)*, [3 x void ([82 x i8]*, [82 x i8]*, %struct.Dav1dFilmGrainData*, i32)*], void (i8*, i8*, i32, %struct.Dav1dFilmGrainData*, i32, i8*, [82 x i8]*, i32, i32)*, [3 x void (i8*, i8*, i32, %struct.Dav1dFilmGrainData*, i32, i8*, [82 x i8]*, i32, i32, i8*, i32, i32, i32)*] } %struct.Dav1dFilmGrainData = type { i32, i32, [14 x [2 x i8]], i32, [2 x i32], [2 x [10 x [2 x i8]]], i32, i32, [24 x i8], [2 x [28 x i8]], i64, i32, [2 x i32], [2 x i32], [2 x i32], i32, i32 } %struct.Dav1dIntraPredDSPContext = type { [14 x void (i8*, i32, i8*, i32, i32, i32, i32, i32)*], [3 x void (i16*, i8*, i32, i32, i32, i32, i32)*], [6 x void (i8*, i32, i8*, i32, i32, i16*, i32)*], void (i8*, i32, i16*, i8*, i32, i32)* } %struct.Dav1dMCDSPContext = type { [10 x void (i8*, i32, i8*, i32, i32, i32, i32, i32)*], [10 x void (i8*, i32, i8*, i32, i32, i32, i32, i32, i32, i32)*], [10 x void (i16*, i8*, i32, i32, i32, i32, i32)*], [10 x void (i16*, i8*, i32, i32, i32, i32, i32, i32, i32)*], void (i8*, i32, i16*, i16*, i32, i32)*, void (i8*, i32, i16*, i16*, i32, i32, i32)*, void (i8*, i32, i16*, i16*, i32, i32, i8*)*, [3 x void (i8*, i32, i16*, i16*, i32, i32, i8*, i32)*], void (i8*, i32, i8*, i32, i32, i8*)*, void (i8*, i32, i8*, i32, i32)*, void (i8*, i32, i8*, i32, i32)*, void (i8*, i32, i8*, i32, i16*, i32, i32)*, void (i16*, i32, i8*, i32, i16*, i32, i32)*, void (i32, i32, i32, i32, i32, i32, i8*, i32, i8*, i32)*, void (i8*, i32, i8*, i32, i32, i32, i32, i32, i32)* } %struct.Dav1dInvTxfmDSPContext = type { [19 x [17 x void (i8*, i32, i8*, i32)*]] } %struct.Dav1dLoopFilterDSPContext = type { [2 x [2 x void (i8*, i32, i32*, [4 x i8]*, i32, %struct.Av1FilterLUT*, i32)*]] } %struct.Av1FilterLUT = type { [64 x i8], [64 x i8], [2 x i64] } %struct.Dav1dCdefDSPContext = type { i32 (i8*, i32, i32*)*, [3 x void (i8*, i32, i8*, i8*, i32, i32, i32, i32, i32)*] } %struct.Dav1dLoopRestorationDSPContext = type { void (i8*, i32, i8*, i8*, i32, i32, i32, i16*, i16*, i32)*, void (i8*, i32, i8*, i8*, i32, i32, i32, i32, i16*, i32)* } %struct.anon.30 = type { void (%struct.Dav1dTileContext*, i32, i32, %struct.Av1Block*)*, i32 (%struct.Dav1dTileContext*, i32, %struct.Av1Block*)*, void (%struct.Dav1dFrameContext*, i32)*, void (%struct.Dav1dTileContext*)*, void (%struct.Dav1dTileContext*, i32, %struct.Av1Block*)* } %struct.Av1Block = type { i8, i8, i8, i8, i8, i8, i8, i8, %union.anon.31 } %union.anon.31 = type { %struct.anon.33 } %struct.anon.33 = type { %union.anon.34, i8, i8, i8, i8, [2 x i8], i8, i8, i8, i8, i16 } %union.anon.34 = type { %struct.anon.35 } %struct.anon.35 = type { [2 x %union.mv], i8, i8, i8 } %struct.refmvs_frame = type { %struct.Dav1dFrameHeader*, i32, i32, i32, i32, i32, i32, [7 x i8], [7 x i8], [7 x i8], [3 x i8], [3 x i32], [3 x [7 x i32]], i32, %struct.refmvs_temporal_block*, %struct.refmvs_temporal_block**, %struct.refmvs_temporal_block*, i32, %struct.refmvs_block*, i32, i32, i32 } %struct.anon.37 = type { %struct.thread_data, i32, i32, %struct.Av1Block*, %struct.CodedBlockInfo*, [3 x [8 x i16]]*, i8*, i8*, i32, i32, i32, i32* } %struct.CodedBlockInfo = type { [3 x i16], [3 x i8] } %struct.anon.38 = type { [4 x i8]*, %struct.Av1Filter*, %struct.Av1Restoration*, i32, i32, i32, [2 x i32], i32, i32, [8 x i8], %struct.Av1FilterLUT, i32, [8 x [4 x [8 x [2 x i8]]]], [2 x i8*], i8*, [2 x [3 x i8*]], [3 x i8*], i32, [3 x i8*], [3 x i8*], %struct.Av1Filter*, %struct.Av1Filter*, i32 } %struct.Av1Restoration = type { [3 x [4 x %struct.Av1RestorationUnit]] } %struct.FrameTileThreadData = type { i64, %struct._RTL_SRWLOCK, %struct._RTL_CONDITION_VARIABLE, %struct._RTL_CONDITION_VARIABLE, i32, i32, [2 x i32]*, i32, [2 x i32], [65 x i16], i32 } %struct.Dav1dTileGroup = type { %struct.Dav1dData, i32, i32 } %struct.Dav1dSequenceHeader = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x %struct.Dav1dSequenceHeaderOperatingPoint], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x %struct.Dav1dSequenceHeaderOperatingParameterInfo] } %struct.Dav1dSequenceHeaderOperatingPoint = type { i32, i32, i32, i32, i32, i32, i32 } %struct.Dav1dSequenceHeaderOperatingParameterInfo = type { i32, i32, i32 } %struct.Dav1dFrameHeader = type { %struct.anon, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x %struct.Dav1dFrameHeaderOperatingPoint], i32, i32, i32, %struct.anon.0, i32, i32, i32, [7 x i32], i32, i32, i32, i32, i32, %struct.anon.1, %struct.anon.2, %struct.anon.3, %struct.anon.4, i32, %struct.anon.7, %struct.anon.8, %struct.anon.9, i32, i32, i32, i32, [2 x i32], i32, i32, [7 x %struct.Dav1dWarpedMotionParams] } %struct.anon = type { %struct.Dav1dFilmGrainData, i32, i32 } %struct.Dav1dFrameHeaderOperatingPoint = type { i32 } %struct.anon.0 = type { i32, i32 } %struct.anon.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [65 x i16], [65 x i16], i32 } %struct.anon.2 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %struct.anon.3 = type { i32, i32, i32, i32, %struct.Dav1dSegmentationDataSet, [8 x i32], [8 x i32] } %struct.Dav1dSegmentationDataSet = type { [8 x %struct.Dav1dSegmentationData], i32, i32 } %struct.Dav1dSegmentationData = type { i32, i32, i32, i32, i32, i32, i32, i32 } %struct.anon.4 = type { %struct.anon.5, %struct.anon.6 } %struct.anon.5 = type { i32, i32 } %struct.anon.6 = type { i32, i32, i32 } %struct.anon.7 = type { [2 x i32], i32, i32, i32, i32, %struct.Dav1dLoopfilterModeRefDeltas, i32 } %struct.anon.8 = type { i32, i32, [8 x i32], [8 x i32] } %struct.anon.9 = type { [3 x i32], [2 x i32] } %struct.Dav1dContentLightLevel = type { i32, i32 } %struct.Dav1dMasteringDisplay = type { [3 x [2 x i16]], [2 x i16], i32, i32 } %struct.Dav1dRef = type { i8*, i8*, i32, void (i8*, i8*)*, i8* } %struct.Dav1dITUTT35 = type { i8, i8, i32, i8* } %struct.Dav1dData = type { i8*, i32, %struct.Dav1dRef*, %struct.Dav1dDataProps } %struct.Dav1dDataProps = type { i64, i64, i64, i32, %struct.Dav1dUserData } %struct.Dav1dUserData = type { i8*, %struct.Dav1dRef* } %struct.Dav1dPicture = type { %struct.Dav1dSequenceHeader*, %struct.Dav1dFrameHeader*, [3 x i8*], [2 x i32], %struct.Dav1dPictureParameters, %struct.Dav1dDataProps, %struct.Dav1dContentLightLevel*, %struct.Dav1dMasteringDisplay*, %struct.Dav1dITUTT35*, [4 x i32], %struct.Dav1dRef*, %struct.Dav1dRef*, %struct.Dav1dRef*, %struct.Dav1dRef*, %struct.Dav1dRef*, [4 x i32], %struct.Dav1dRef*, i8* } %struct.Dav1dPictureParameters = type { i32, i32, i32, i32 } %struct.anon.39 = type { %struct.Dav1dThreadPicture*, i32, i32, i32* } %struct.anon.40 = type { %struct.Dav1dThreadPicture, %struct.Dav1dRef*, %struct.Dav1dRef*, [7 x i32] } %struct.anon.41 = type { [2 x %struct.EdgeNode*], [85 x %struct.EdgeBranch], [21 x %struct.EdgeBranch], [256 x %struct.EdgeTip], [64 x %struct.EdgeTip] } %struct.EdgeNode = type { i32, [2 x i32], [2 x i32] } %struct.EdgeBranch = type { %struct.EdgeNode, [3 x i32], [3 x i32], [3 x i32], [3 x i32], [4 x i32], [4 x i32], [4 x %struct.EdgeNode*] } %struct.EdgeTip = type { %struct.EdgeNode, [4 x i32] } %struct.Dav1dPicAllocator = type { i8*, i32 (%struct.Dav1dPicture*, i8*)*, void (%struct.Dav1dPicture*, i8*)* } %struct.Dav1dLogger = type { i8*, void (i8*, i8*, i8*)* } %struct.GetBits = type { i32, i32, i64, i32, i8*, i8*, i8* } @.str = private unnamed_addr constant [35 x i8] c"Frame size %dx%d exceeds limit %u\0A\00", align 1 @.str.1 = private unnamed_addr constant [46 x i8] c"Malformed ITU-T T.35 metadata message format\0A\00", align 1 @.str.2 = private unnamed_addr constant [30 x i8] c"Unknown Metadata OBU type %d\0A\00", align 1 @.str.3 = private unnamed_addr constant [32 x i8] c"Unknown OBU type %d of size %u\0A\00", align 1 @.str.4 = private unnamed_addr constant [24 x i8] c"Error parsing OBU data\0A\00", align 1 @.str.5 = private unnamed_addr constant [31 x i8] c"Error parsing sequence header\0A\00", align 1 @.str.6 = private unnamed_addr constant [27 x i8] c"Overrun in OBU bit buffer\0A\00", align 1 @.str.7 = private unnamed_addr constant [41 x i8] c"Overrun in OBU bit buffer into next OBU\0A\00", align 1 @default_mode_ref_deltas = internal unnamed_addr constant %struct.Dav1dLoopfilterModeRefDeltas { [2 x i32] zeroinitializer, [8 x i32] [i32 1, i32 0, i32 0, i32 0, i32 -1, i32 0, i32 -1, i32 -1] }, align 4 @dav1d_default_wm_params = external local_unnamed_addr constant %struct.Dav1dWarpedMotionParams, align 4 @.str.8 = private unnamed_addr constant [28 x i8] c"Error parsing frame header\0A\00", align 1 ; Function Attrs: nounwind define hidden arm_aapcs_vfpcc i32 @dav1d_parse_obus(%struct.Dav1dContext* %c, %struct.Dav1dData* %in, i32 %global) local_unnamed_addr #0 { entry: %gb = alloca %struct.GetBits, align 8 %ref = alloca %struct.Dav1dRef*, align 4 %ref314 = alloca %struct.Dav1dRef*, align 4 %0 = bitcast %struct.GetBits* %gb to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %0) #7 %data = getelementptr inbounds %struct.Dav1dData, %struct.Dav1dData* %in, i32 0, i32 0 %1 = load i8*, i8** %data, align 8, !tbaa !3 %sz = getelementptr inbounds %struct.Dav1dData, %struct.Dav1dData* %in, i32 0, i32 1 %2 = load i32, i32* %sz, align 4, !tbaa !12 call arm_aapcs_vfpcc void @dav1d_init_get_bits(%struct.GetBits* nonnull %gb, i8* %1, i32 %2) #7 %call = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %call1 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 4) #7 %call2 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %call3 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %call4 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool = icmp ne i32 %call2, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %call5 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %call6 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 2) #7 %call7 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 br label %if.end if.end: ; preds = %if.then, %entry %spatial_id.0 = phi i32 [ %call6, %if.then ], [ 0, %entry ] %temporal_id.0 = phi i32 [ %call5, %if.then ], [ 0, %entry ] %tobool8.not = icmp eq i32 %call3, 0 br i1 %tobool8.not, label %cond.false, label %cond.true cond.true: ; preds = %if.end %call9 = call arm_aapcs_vfpcc i32 @dav1d_get_uleb128(%struct.GetBits* nonnull %gb) #7 br label %cond.end cond.false: ; preds = %if.end %3 = load i32, i32* %sz, align 4, !tbaa !12 %4 = xor i32 %call2, -1 %sub11 = add i32 %3, %4 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ %call9, %cond.true ], [ %sub11, %cond.false ] %error = getelementptr inbounds %struct.GetBits, %struct.GetBits* %gb, i32 0, i32 0 %5 = load i32, i32* %error, align 8, !tbaa !13 %tobool12.not = icmp eq i32 %5, 0 br i1 %tobool12.not, label %if.end14, label %error636 if.end14: ; preds = %cond.end %ptr.i = getelementptr inbounds %struct.GetBits, %struct.GetBits* %gb, i32 0, i32 4 %6 = bitcast i8** %ptr.i to i32* %7 = load i32, i32* %6, align 4, !tbaa !15 %ptr_start.i = getelementptr inbounds %struct.GetBits, %struct.GetBits* %gb, i32 0, i32 5 %8 = bitcast i8** %ptr_start.i to i32* %9 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i = sub i32 %7, %9 %mul.i = shl i32 %sub.ptr.sub.i, 3 %bits_left.i = getelementptr inbounds %struct.GetBits, %struct.GetBits* %gb, i32 0, i32 3 %10 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i = sub i32 %mul.i, %10 %shr = lshr exact i32 %sub.i, 3 %add = add i32 %shr, %cond %and = and i32 %sub.i, 7 %cmp = icmp eq i32 %and, 0 call void @llvm.assume(i1 %cmp) %11 = load i32, i32* %sz, align 4, !tbaa !12 %cmp20 = icmp uge i32 %11, %shr call void @llvm.assume(i1 %cmp20) %sub26 = sub i32 %11, %shr %cmp27 = icmp ugt i32 %cond, %sub26 br i1 %cmp27, label %error636, label %if.end29 if.end29: ; preds = %if.end14 %12 = add i32 %call1, -1 %13 = icmp ugt i32 %12, 1 %or.cond648 = and i1 %13, %tobool br i1 %or.cond648, label %land.lhs.true34, label %if.end50 land.lhs.true34: ; preds = %if.end29 %operating_point_idc = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 26 %14 = load i32, i32* %operating_point_idc, align 4, !tbaa !18 %cmp35.not = icmp eq i32 %14, 0 br i1 %cmp35.not, label %if.end50, label %if.then36 if.then36: ; preds = %land.lhs.true34 %add41 = add nsw i32 %spatial_id.0, 8 %15 = shl nuw i32 1, %temporal_id.0 %16 = shl nuw i32 1, %add41 %17 = or i32 %15, %16 %18 = and i32 %14, %17 %19 = icmp eq i32 %18, %17 br i1 %19, label %if.end50, label %cleanup637 if.end50: ; preds = %if.then36, %land.lhs.true34, %if.end29 switch i32 %call1, label %sw.default438 [ i32 1, label %sw.bb i32 7, label %sw.bb95 i32 6, label %sw.bb100 i32 3, label %sw.bb100 i32 4, label %sw.bb178 i32 5, label %sw.bb305 i32 15, label %sw.epilog439 i32 2, label %sw.epilog439 ] sw.bb: ; preds = %if.end50 %20 = bitcast %struct.Dav1dRef** %ref to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %20) #7 %call51 = call arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32 1484) #7 store %struct.Dav1dRef* %call51, %struct.Dav1dRef** %ref, align 4, !tbaa !26 %tobool52.not = icmp eq %struct.Dav1dRef* %call51, null br i1 %tobool52.not, label %cleanup93.thread, label %if.end54 if.end54: ; preds = %sw.bb %data55 = getelementptr inbounds %struct.Dav1dRef, %struct.Dav1dRef* %call51, i32 0, i32 0 %21 = load i8*, i8** %data55, align 4, !tbaa !27 %22 = bitcast i8* %21 to %struct.Dav1dSequenceHeader* call void @llvm.memset.p0i8.i32(i8* nonnull align 4 dereferenceable(1484) %21, i8 0, i32 1484, i1 false) %call.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %profile.i = bitcast i8* %21 to i32* store i32 %call.i, i32* %profile.i, align 4, !tbaa !29 %cmp.i = icmp sgt i32 %call.i, 2 br i1 %cmp.i, label %cleanup93.thread.sink.split, label %if.end.i if.end.i: ; preds = %if.end54 %call2.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %still_picture.i = getelementptr inbounds i8, i8* %21, i32 940 %23 = bitcast i8* %still_picture.i to i32* store i32 %call2.i, i32* %23, align 4, !tbaa !31 %call3.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %reduced_still_picture_header.i = getelementptr inbounds i8, i8* %21, i32 944 %24 = bitcast i8* %reduced_still_picture_header.i to i32* store i32 %call3.i, i32* %24, align 4, !tbaa !32 %tobool.not.i = icmp eq i32 %call3.i, 0 br i1 %tobool.not.i, label %if.else.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %if.end.i %25 = load i32, i32* %23, align 4, !tbaa !31 %tobool6.not.i = icmp eq i32 %25, 0 br i1 %tobool6.not.i, label %cleanup93.thread.sink.split, label %if.then11.i if.then11.i: ; preds = %land.lhs.true.i %timing_info_present.i = getelementptr inbounds i8, i8* %21, i32 948 %26 = bitcast i8* %timing_info_present.i to i32* store i32 0, i32* %26, align 4, !tbaa !33 %decoder_model_info_present.i = getelementptr inbounds i8, i8* %21, i32 968 %27 = bitcast i8* %decoder_model_info_present.i to i32* store i32 0, i32* %27, align 4, !tbaa !34 %display_model_info_present.i = getelementptr inbounds i8, i8* %21, i32 988 %28 = bitcast i8* %display_model_info_present.i to i32* store i32 0, i32* %28, align 4, !tbaa !35 %num_operating_points.i = getelementptr inbounds i8, i8* %21, i32 40 %29 = bitcast i8* %num_operating_points.i to i32* store i32 1, i32* %29, align 4, !tbaa !36 %idc.i = getelementptr inbounds i8, i8* %21, i32 56 %30 = bitcast i8* %idc.i to i32* store i32 0, i32* %30, align 4, !tbaa !37 %call12.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %major_level.i = getelementptr inbounds i8, i8* %21, i32 44 %31 = bitcast i8* %major_level.i to i32* store i32 %call12.i, i32* %31, align 4, !tbaa !39 %call15.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 2) #7 %minor_level.i = getelementptr inbounds i8, i8* %21, i32 48 %32 = bitcast i8* %minor_level.i to i32* store i32 %call15.i, i32* %32, align 4, !tbaa !40 %tier.i = getelementptr inbounds i8, i8* %21, i32 60 %33 = bitcast i8* %tier.i to i32* store i32 0, i32* %33, align 4, !tbaa !41 %decoder_model_param_present.i = getelementptr inbounds i8, i8* %21, i32 64 %34 = bitcast i8* %decoder_model_param_present.i to i32* store i32 0, i32* %34, align 4, !tbaa !42 %display_model_param_present.i = getelementptr inbounds i8, i8* %21, i32 68 %35 = bitcast i8* %display_model_param_present.i to i32* store i32 0, i32* %35, align 4, !tbaa !43 br label %if.end117.i if.else.i: ; preds = %if.end.i %call24.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %timing_info_present25.i = getelementptr inbounds i8, i8* %21, i32 948 %36 = bitcast i8* %timing_info_present25.i to i32* store i32 %call24.i, i32* %36, align 4, !tbaa !33 %tobool27.not.i = icmp eq i32 %call24.i, 0 br i1 %tobool27.not.i, label %if.end56.i.sink.split, label %if.then28.i if.then28.i: ; preds = %if.else.i %call29.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 32) #7 %num_units_in_tick.i = getelementptr inbounds i8, i8* %21, i32 952 %37 = bitcast i8* %num_units_in_tick.i to i32* store i32 %call29.i, i32* %37, align 4, !tbaa !44 %call30.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 32) #7 %time_scale.i = getelementptr inbounds i8, i8* %21, i32 956 %38 = bitcast i8* %time_scale.i to i32* store i32 %call30.i, i32* %38, align 4, !tbaa !45 %call31.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %equal_picture_interval.i = getelementptr inbounds i8, i8* %21, i32 960 %39 = bitcast i8* %equal_picture_interval.i to i32* store i32 %call31.i, i32* %39, align 4, !tbaa !46 %tobool33.not.i = icmp eq i32 %call31.i, 0 br i1 %tobool33.not.i, label %if.end40.i, label %if.then34.i if.then34.i: ; preds = %if.then28.i %call35.i = call arm_aapcs_vfpcc i32 @dav1d_get_vlc(%struct.GetBits* nonnull %gb) #7 %cmp36.i = icmp eq i32 %call35.i, -1 br i1 %cmp36.i, label %cleanup93.thread.sink.split, label %if.end38.i if.end38.i: ; preds = %if.then34.i %add.i = add nuw i32 %call35.i, 1 %num_ticks_per_picture39.i = getelementptr inbounds i8, i8* %21, i32 964 %40 = bitcast i8* %num_ticks_per_picture39.i to i32* store i32 %add.i, i32* %40, align 4, !tbaa !47 br label %if.end40.i if.end40.i: ; preds = %if.end38.i, %if.then28.i %call41.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %decoder_model_info_present42.i = getelementptr inbounds i8, i8* %21, i32 968 %41 = bitcast i8* %decoder_model_info_present42.i to i32* store i32 %call41.i, i32* %41, align 4, !tbaa !34 %tobool44.not.i = icmp eq i32 %call41.i, 0 br i1 %tobool44.not.i, label %if.end56.i, label %if.then45.i if.then45.i: ; preds = %if.end40.i %call46.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 5) #7 %add47.i = add i32 %call46.i, 1 %encoder_decoder_buffer_delay_length.i = getelementptr inbounds i8, i8* %21, i32 972 %42 = bitcast i8* %encoder_decoder_buffer_delay_length.i to i32* store i32 %add47.i, i32* %42, align 4, !tbaa !48 %call48.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 32) #7 %num_units_in_decoding_tick.i = getelementptr inbounds i8, i8* %21, i32 976 %43 = bitcast i8* %num_units_in_decoding_tick.i to i32* store i32 %call48.i, i32* %43, align 4, !tbaa !49 %call49.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 5) #7 %add50.i = add i32 %call49.i, 1 %buffer_removal_delay_length.i = getelementptr inbounds i8, i8* %21, i32 980 %44 = bitcast i8* %buffer_removal_delay_length.i to i32* store i32 %add50.i, i32* %44, align 4, !tbaa !50 %call51.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 5) #7 %add52.i = add i32 %call51.i, 1 br label %if.end56.i.sink.split if.end56.i.sink.split: ; preds = %if.else.i, %if.then45.i %.sink1129 = phi i32 [ 984, %if.then45.i ], [ 968, %if.else.i ] %.sink = phi i32 [ %add52.i, %if.then45.i ], [ 0, %if.else.i ] %decoder_model_info_present55.i = getelementptr inbounds i8, i8* %21, i32 %.sink1129 %45 = bitcast i8* %decoder_model_info_present55.i to i32* store i32 %.sink, i32* %45, align 4, !tbaa !51 br label %if.end56.i if.end56.i: ; preds = %if.end56.i.sink.split, %if.end40.i %call57.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %display_model_info_present58.i = getelementptr inbounds i8, i8* %21, i32 988 %46 = bitcast i8* %display_model_info_present58.i to i32* store i32 %call57.i, i32* %46, align 4, !tbaa !35 %call59.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 5) #7 %add60.i = add i32 %call59.i, 1 %num_operating_points61.i = getelementptr inbounds i8, i8* %21, i32 40 %47 = bitcast i8* %num_operating_points61.i to i32* store i32 %add60.i, i32* %47, align 4, !tbaa !36 %cmp63570.i = icmp sgt i32 %add60.i, 0 br i1 %cmp63570.i, label %for.body.lr.ph.i, label %for.cond.cleanup.i for.body.lr.ph.i: ; preds = %if.end56.i %decoder_model_info_present77.i = getelementptr inbounds i8, i8* %21, i32 968 %48 = bitcast i8* %decoder_model_info_present77.i to i32* %encoder_decoder_buffer_delay_length86.i = getelementptr inbounds i8, i8* %21, i32 972 %49 = bitcast i8* %encoder_decoder_buffer_delay_length86.i to i32* br label %for.body.i for.cond.cleanup.i: ; preds = %if.end105.i, %if.end56.i %.lcssa.i = phi i32 [ %add60.i, %if.end56.i ], [ %57, %if.end105.i ] %operating_point.i = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 25 %50 = load i32, i32* %operating_point.i, align 8, !tbaa !52 %cmp108.i = icmp slt i32 %50, %.lcssa.i %spec.select.i = select i1 %cmp108.i, i32 %50, i32 0 %idc116.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %spec.select.i, i32 3 %51 = load i32, i32* %idc116.i, align 4, !tbaa !37 %operating_point_idc.i = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 26 store i32 %51, i32* %operating_point_idc.i, align 4, !tbaa !18 br label %if.end117.i for.body.i: ; preds = %if.end105.i, %for.body.lr.ph.i %i.0571.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i, %if.end105.i ] %call66.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 12) #7 %idc67.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 3 store i32 %call66.i, i32* %idc67.i, align 4, !tbaa !37 %call68.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %add69.i = add i32 %call68.i, 2 %major_level70.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 0 store i32 %add69.i, i32* %major_level70.i, align 4, !tbaa !39 %call71.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 2) #7 %minor_level72.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 1 store i32 %call71.i, i32* %minor_level72.i, align 4, !tbaa !40 %52 = load i32, i32* %major_level70.i, align 4, !tbaa !39 %cmp74.i = icmp sgt i32 %52, 3 br i1 %cmp74.i, label %cond.true.i, label %cond.end.i cond.true.i: ; preds = %for.body.i %call75.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 br label %cond.end.i cond.end.i: ; preds = %cond.true.i, %for.body.i %cond.i = phi i32 [ %call75.i, %cond.true.i ], [ 0, %for.body.i ] %tier76.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 4 store i32 %cond.i, i32* %tier76.i, align 4, !tbaa !41 %53 = load i32, i32* %48, align 4, !tbaa !34 %tobool78.not.i = icmp eq i32 %53, 0 br i1 %tobool78.not.i, label %land.end.thread.i, label %land.end.i land.end.thread.i: ; preds = %cond.end.i %decoder_model_param_present81561.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 5 store i32 0, i32* %decoder_model_param_present81561.i, align 4, !tbaa !42 br label %if.end91.i land.end.i: ; preds = %cond.end.i %call79.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool80.i = icmp ne i32 %call79.i, 0 %land.ext.i = zext i1 %tobool80.i to i32 %decoder_model_param_present81.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 5 store i32 %land.ext.i, i32* %decoder_model_param_present81.i, align 4, !tbaa !42 br i1 %tobool80.i, label %if.then84.i, label %if.end91.i if.then84.i: ; preds = %land.end.i %54 = load i32, i32* %49, align 4, !tbaa !48 %call87.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %54) #7 %decoder_buffer_delay.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 52, i32 %i.0571.i, i32 0 store i32 %call87.i, i32* %decoder_buffer_delay.i, align 4, !tbaa !53 %55 = load i32, i32* %49, align 4, !tbaa !48 %call89.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %55) #7 %encoder_buffer_delay.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 52, i32 %i.0571.i, i32 1 store i32 %call89.i, i32* %encoder_buffer_delay.i, align 4, !tbaa !55 %call90.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %low_delay_mode.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 52, i32 %i.0571.i, i32 2 store i32 %call90.i, i32* %low_delay_mode.i, align 4, !tbaa !56 br label %if.end91.i if.end91.i: ; preds = %if.then84.i, %land.end.i, %land.end.thread.i %56 = load i32, i32* %46, align 4, !tbaa !35 %tobool93.not.i = icmp eq i32 %56, 0 br i1 %tobool93.not.i, label %land.end97.thread.i, label %land.end97.i land.end97.thread.i: ; preds = %if.end91.i %display_model_param_present99563.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 6 store i32 0, i32* %display_model_param_present99563.i, align 4, !tbaa !43 br label %if.end105.i land.end97.i: ; preds = %if.end91.i %call95.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool96.i = icmp ne i32 %call95.i, 0 %land.ext98.i = zext i1 %tobool96.i to i32 %display_model_param_present99.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 6 store i32 %land.ext98.i, i32* %display_model_param_present99.i, align 4, !tbaa !43 br i1 %tobool96.i, label %if.then102.i, label %if.end105.i if.then102.i: ; preds = %land.end97.i %call103.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 4) #7 %add104.i = add i32 %call103.i, 1 %initial_display_delay.i = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %22, i32 0, i32 11, i32 %i.0571.i, i32 2 store i32 %add104.i, i32* %initial_display_delay.i, align 4, !tbaa !57 br label %if.end105.i if.end105.i: ; preds = %if.then102.i, %land.end97.i, %land.end97.thread.i %inc.i = add nuw nsw i32 %i.0571.i, 1 %57 = load i32, i32* %47, align 4, !tbaa !36 %cmp63.i = icmp slt i32 %inc.i, %57 br i1 %cmp63.i, label %for.body.i, label %for.cond.cleanup.i if.end117.i: ; preds = %for.cond.cleanup.i, %if.then11.i %call118.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 4) #7 %add119.i = add i32 %call118.i, 1 %width_n_bits.i = getelementptr inbounds i8, i8* %21, i32 992 %58 = bitcast i8* %width_n_bits.i to i32* store i32 %add119.i, i32* %58, align 4, !tbaa !58 %call120.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 4) #7 %add121.i = add i32 %call120.i, 1 %height_n_bits.i = getelementptr inbounds i8, i8* %21, i32 996 %59 = bitcast i8* %height_n_bits.i to i32* store i32 %add121.i, i32* %59, align 4, !tbaa !59 %60 = load i32, i32* %58, align 4, !tbaa !58 %call123.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %60) #7 %add124.i = add i32 %call123.i, 1 %max_width.i = getelementptr inbounds i8, i8* %21, i32 4 %61 = bitcast i8* %max_width.i to i32* store i32 %add124.i, i32* %61, align 4, !tbaa !60 %62 = load i32, i32* %59, align 4, !tbaa !59 %call126.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %62) #7 %add127.i = add i32 %call126.i, 1 %max_height.i = getelementptr inbounds i8, i8* %21, i32 8 %63 = bitcast i8* %max_height.i to i32* store i32 %add127.i, i32* %63, align 4, !tbaa !61 %64 = load i32, i32* %24, align 4, !tbaa !32 %tobool129.not.i = icmp eq i32 %64, 0 br i1 %tobool129.not.i, label %cond.end133.i, label %if.end144.i.sink.split cond.end133.i: ; preds = %if.end117.i %call132.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %frame_id_numbers_present.i = getelementptr inbounds i8, i8* %21, i32 1000 %65 = bitcast i8* %frame_id_numbers_present.i to i32* store i32 %call132.i, i32* %65, align 4, !tbaa !62 %tobool136.not.i = icmp eq i32 %call132.i, 0 br i1 %tobool136.not.i, label %if.end144.i, label %if.then137.i if.then137.i: ; preds = %cond.end133.i %call138.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 4) #7 %add139.i = add i32 %call138.i, 2 %delta_frame_id_n_bits.i = getelementptr inbounds i8, i8* %21, i32 1004 %66 = bitcast i8* %delta_frame_id_n_bits.i to i32* store i32 %add139.i, i32* %66, align 4, !tbaa !63 %call140.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %67 = load i32, i32* %66, align 4, !tbaa !63 %add142.i = add i32 %call140.i, 1 %add143.i = add i32 %add142.i, %67 br label %if.end144.i.sink.split if.end144.i.sink.split: ; preds = %if.end117.i, %if.then137.i %.sink1131 = phi i32 [ 1008, %if.then137.i ], [ 1000, %if.end117.i ] %add143.i.sink = phi i32 [ %add143.i, %if.then137.i ], [ 0, %if.end117.i ] %frame_id_n_bits.i = getelementptr inbounds i8, i8* %21, i32 %.sink1131 %68 = bitcast i8* %frame_id_n_bits.i to i32* store i32 %add143.i.sink, i32* %68, align 4, !tbaa !51 br label %if.end144.i if.end144.i: ; preds = %if.end144.i.sink.split, %cond.end133.i %call145.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %sb128.i = getelementptr inbounds i8, i8* %21, i32 1012 %69 = bitcast i8* %sb128.i to i32* store i32 %call145.i, i32* %69, align 4, !tbaa !64 %call146.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %filter_intra.i = getelementptr inbounds i8, i8* %21, i32 1016 %70 = bitcast i8* %filter_intra.i to i32* store i32 %call146.i, i32* %70, align 4, !tbaa !65 %call147.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %intra_edge_filter.i = getelementptr inbounds i8, i8* %21, i32 1020 %71 = bitcast i8* %intra_edge_filter.i to i32* store i32 %call147.i, i32* %71, align 4, !tbaa !66 %72 = load i32, i32* %24, align 4, !tbaa !32 %tobool149.not.i = icmp eq i32 %72, 0 br i1 %tobool149.not.i, label %if.else151.i, label %if.then150.i if.then150.i: ; preds = %if.end144.i %inter_intra.i = getelementptr inbounds i8, i8* %21, i32 1024 %order_hint_n_bits.i = getelementptr inbounds i8, i8* %21, i32 1060 %73 = bitcast i8* %order_hint_n_bits.i to i32* store i32 0, i32* %73, align 4, !tbaa !67 %screen_content_tools.i = getelementptr inbounds i8, i8* %21, i32 1052 %74 = bitcast i8* %screen_content_tools.i to i32* call void @llvm.memset.p0i8.i64(i8* nonnull align 4 dereferenceable(28) %inter_intra.i, i8 0, i64 28, i1 false) #7 store i32 2, i32* %74, align 4, !tbaa !68 br label %if.end203.i.sink.split if.else151.i: ; preds = %if.end144.i %call152.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %inter_intra153.i = getelementptr inbounds i8, i8* %21, i32 1024 %75 = bitcast i8* %inter_intra153.i to i32* store i32 %call152.i, i32* %75, align 4, !tbaa !69 %call154.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %masked_compound155.i = getelementptr inbounds i8, i8* %21, i32 1028 %76 = bitcast i8* %masked_compound155.i to i32* store i32 %call154.i, i32* %76, align 4, !tbaa !70 %call156.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %warped_motion157.i = getelementptr inbounds i8, i8* %21, i32 1032 %77 = bitcast i8* %warped_motion157.i to i32* store i32 %call156.i, i32* %77, align 4, !tbaa !71 %call158.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %dual_filter159.i = getelementptr inbounds i8, i8* %21, i32 1036 %78 = bitcast i8* %dual_filter159.i to i32* store i32 %call158.i, i32* %78, align 4, !tbaa !72 %call160.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %order_hint161.i = getelementptr inbounds i8, i8* %21, i32 1040 %79 = bitcast i8* %order_hint161.i to i32* store i32 %call160.i, i32* %79, align 4, !tbaa !73 %tobool163.not.i = icmp eq i32 %call160.i, 0 br i1 %tobool163.not.i, label %if.else169.i, label %if.then164.i if.then164.i: ; preds = %if.else151.i %call165.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %jnt_comp166.i = getelementptr inbounds i8, i8* %21, i32 1044 %80 = bitcast i8* %jnt_comp166.i to i32* store i32 %call165.i, i32* %80, align 4, !tbaa !74 %call167.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 br label %if.end173.i if.else169.i: ; preds = %if.else151.i %jnt_comp170.i = getelementptr inbounds i8, i8* %21, i32 1044 %81 = bitcast i8* %jnt_comp170.i to i32* store i32 0, i32* %81, align 4, !tbaa !74 %order_hint_n_bits172.i = getelementptr inbounds i8, i8* %21, i32 1060 %82 = bitcast i8* %order_hint_n_bits172.i to i32* store i32 0, i32* %82, align 4, !tbaa !67 br label %if.end173.i if.end173.i: ; preds = %if.else169.i, %if.then164.i %call167.sink.i = phi i32 [ 0, %if.else169.i ], [ %call167.i, %if.then164.i ] %83 = getelementptr inbounds i8, i8* %21, i32 1048 %84 = bitcast i8* %83 to i32* store i32 %call167.sink.i, i32* %84, align 4 %call174.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool175.not.i = icmp eq i32 %call174.i, 0 br i1 %tobool175.not.i, label %cond.end179.i, label %cond.end179.thread.i cond.end179.thread.i: ; preds = %if.end173.i %screen_content_tools181568.i = getelementptr inbounds i8, i8* %21, i32 1052 %85 = bitcast i8* %screen_content_tools181568.i to i32* store i32 2, i32* %85, align 4, !tbaa !68 br label %cond.true184.i cond.end179.i: ; preds = %if.end173.i %call178.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %screen_content_tools181.i = getelementptr inbounds i8, i8* %21, i32 1052 %86 = bitcast i8* %screen_content_tools181.i to i32* store i32 %call178.i, i32* %86, align 4, !tbaa !68 %tobool183.not.i = icmp eq i32 %call178.i, 0 br i1 %tobool183.not.i, label %cond.end193.i, label %cond.true184.i cond.true184.i: ; preds = %cond.end179.i, %cond.end179.thread.i %call185.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool186.not.i = icmp eq i32 %call185.i, 0 br i1 %tobool186.not.i, label %cond.false188.i, label %cond.end193.i cond.false188.i: ; preds = %cond.true184.i %call189.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 br label %cond.end193.i cond.end193.i: ; preds = %cond.false188.i, %cond.true184.i, %cond.end179.i %cond194.i = phi i32 [ %call189.i, %cond.false188.i ], [ 2, %cond.true184.i ], [ 2, %cond.end179.i ] %force_integer_mv195.i = getelementptr inbounds i8, i8* %21, i32 1056 %87 = bitcast i8* %force_integer_mv195.i to i32* store i32 %cond194.i, i32* %87, align 4, !tbaa !75 %88 = load i32, i32* %79, align 4, !tbaa !73 %tobool197.not.i = icmp eq i32 %88, 0 br i1 %tobool197.not.i, label %if.end203.i, label %if.then198.i if.then198.i: ; preds = %cond.end193.i %call199.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 3) #7 %add200.i = add i32 %call199.i, 1 br label %if.end203.i.sink.split if.end203.i.sink.split: ; preds = %if.then150.i, %if.then198.i %.sink1133 = phi i32 [ 1060, %if.then198.i ], [ 1056, %if.then150.i ] %add200.i.sink = phi i32 [ %add200.i, %if.then198.i ], [ 2, %if.then150.i ] %order_hint_n_bits201.i = getelementptr inbounds i8, i8* %21, i32 %.sink1133 %89 = bitcast i8* %order_hint_n_bits201.i to i32* store i32 %add200.i.sink, i32* %89, align 4, !tbaa !76 br label %if.end203.i if.end203.i: ; preds = %if.end203.i.sink.split, %cond.end193.i %call204.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %super_res.i = getelementptr inbounds i8, i8* %21, i32 1064 %90 = bitcast i8* %super_res.i to i32* store i32 %call204.i, i32* %90, align 4, !tbaa !77 %call205.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %cdef.i = getelementptr inbounds i8, i8* %21, i32 1068 %91 = bitcast i8* %cdef.i to i32* store i32 %call205.i, i32* %91, align 4, !tbaa !78 %call206.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %restoration.i = getelementptr inbounds i8, i8* %21, i32 1072 %92 = bitcast i8* %restoration.i to i32* store i32 %call206.i, i32* %92, align 4, !tbaa !79 %call207.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %hbd.i = getelementptr inbounds i8, i8* %21, i32 32 %93 = bitcast i8* %hbd.i to i32* store i32 %call207.i, i32* %93, align 4, !tbaa !80 %94 = load i32, i32* %profile.i, align 4, !tbaa !29 %cmp209.i = icmp ne i32 %94, 2 %tobool212.not.i = icmp eq i32 %call207.i, 0 %or.cond.i = or i1 %tobool212.not.i, %cmp209.i br i1 %or.cond.i, label %if.end217.i, label %if.then213.i if.then213.i: ; preds = %if.end203.i %call214.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %95 = load i32, i32* %93, align 4, !tbaa !80 %add216.i = add i32 %95, %call214.i store i32 %add216.i, i32* %93, align 4, !tbaa !80 %.pr.i = load i32, i32* %profile.i, align 4, !tbaa !29 br label %if.end217.i if.end217.i: ; preds = %if.then213.i, %if.end203.i %96 = phi i32 [ %.pr.i, %if.then213.i ], [ %94, %if.end203.i ] %cmp219.not.i = icmp eq i32 %96, 1 br i1 %cmp219.not.i, label %cond.end223.i, label %cond.true220.i cond.true220.i: ; preds = %if.end217.i %call221.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 br label %cond.end223.i cond.end223.i: ; preds = %cond.true220.i, %if.end217.i %cond224.i = phi i32 [ %call221.i, %cond.true220.i ], [ 0, %if.end217.i ] %monochrome.i = getelementptr inbounds i8, i8* %21, i32 1084 %97 = bitcast i8* %monochrome.i to i32* store i32 %cond224.i, i32* %97, align 4, !tbaa !81 %call225.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %color_description_present.i = getelementptr inbounds i8, i8* %21, i32 1088 %98 = bitcast i8* %color_description_present.i to i32* store i32 %call225.i, i32* %98, align 4, !tbaa !82 %tobool227.not.i = icmp eq i32 %call225.i, 0 br i1 %tobool227.not.i, label %if.else232.i, label %if.then228.i if.then228.i: ; preds = %cond.end223.i %call229.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 %pri.i = getelementptr inbounds i8, i8* %21, i32 16 %99 = bitcast i8* %pri.i to i32* store i32 %call229.i, i32* %99, align 4, !tbaa !83 %call230.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 %trc.i = getelementptr inbounds i8, i8* %21, i32 20 %100 = bitcast i8* %trc.i to i32* store i32 %call230.i, i32* %100, align 4, !tbaa !84 %call231.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 br label %if.end236.i if.else232.i: ; preds = %cond.end223.i %pri233.i = getelementptr inbounds i8, i8* %21, i32 16 %101 = bitcast i8* %pri233.i to i32* store i32 2, i32* %101, align 4, !tbaa !83 %trc234.i = getelementptr inbounds i8, i8* %21, i32 20 %102 = bitcast i8* %trc234.i to i32* store i32 2, i32* %102, align 4, !tbaa !84 br label %if.end236.i if.end236.i: ; preds = %if.else232.i, %if.then228.i %103 = phi i32 [ 2, %if.else232.i ], [ %call231.i, %if.then228.i ] %104 = getelementptr inbounds i8, i8* %21, i32 24 %105 = bitcast i8* %104 to i32* store i32 %103, i32* %105, align 4 %106 = load i32, i32* %97, align 4, !tbaa !81 %tobool238.not.i = icmp eq i32 %106, 0 br i1 %tobool238.not.i, label %if.else241.i, label %if.then239.i if.then239.i: ; preds = %if.end236.i %call240.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %color_range.i = getelementptr inbounds i8, i8* %21, i32 36 %107 = bitcast i8* %color_range.i to i32* store i32 %call240.i, i32* %107, align 4, !tbaa !85 %layout.i = getelementptr inbounds i8, i8* %21, i32 12 %108 = bitcast i8* %layout.i to i32* store i32 0, i32* %108, align 4, !tbaa !86 %ss_ver.i = getelementptr inbounds i8, i8* %21, i32 1080 %109 = bitcast i8* %ss_ver.i to i32* store i32 1, i32* %109, align 4, !tbaa !87 %ss_hor.i = getelementptr inbounds i8, i8* %21, i32 1076 %110 = bitcast i8* %ss_hor.i to i32* store i32 1, i32* %110, align 4, !tbaa !88 %chr.i = getelementptr inbounds i8, i8* %21, i32 28 %111 = bitcast i8* %chr.i to i32* store i32 0, i32* %111, align 4, !tbaa !89 %separate_uv_delta_q.i = getelementptr inbounds i8, i8* %21, i32 1092 %112 = bitcast i8* %separate_uv_delta_q.i to i32* store i32 0, i32* %112, align 4, !tbaa !90 br label %if.end316.i if.else241.i: ; preds = %if.end236.i %pri242.i = getelementptr inbounds i8, i8* %21, i32 16 %113 = bitcast i8* %pri242.i to i32* %114 = load i32, i32* %113, align 4, !tbaa !83 %cmp243.i = icmp eq i32 %114, 1 br i1 %cmp243.i, label %land.lhs.true244.i, label %if.else265.i land.lhs.true244.i: ; preds = %if.else241.i %trc245.i = getelementptr inbounds i8, i8* %21, i32 20 %115 = bitcast i8* %trc245.i to i32* %116 = load i32, i32* %115, align 4, !tbaa !84 %cmp246.i = icmp eq i32 %116, 13 %cmp249.i = icmp eq i32 %103, 0 %or.cond586.i = and i1 %cmp249.i, %cmp246.i br i1 %or.cond586.i, label %if.then250.i, label %if.else265.i if.then250.i: ; preds = %land.lhs.true244.i %layout251.i = getelementptr inbounds i8, i8* %21, i32 12 %117 = bitcast i8* %layout251.i to i32* store i32 3, i32* %117, align 4, !tbaa !86 %ss_ver252.i = getelementptr inbounds i8, i8* %21, i32 1080 %118 = bitcast i8* %ss_ver252.i to i32* store i32 0, i32* %118, align 4, !tbaa !87 %ss_hor253.i = getelementptr inbounds i8, i8* %21, i32 1076 %119 = bitcast i8* %ss_hor253.i to i32* store i32 0, i32* %119, align 4, !tbaa !88 %color_range254.i = getelementptr inbounds i8, i8* %21, i32 36 %120 = bitcast i8* %color_range254.i to i32* store i32 1, i32* %120, align 4, !tbaa !85 %121 = load i32, i32* %profile.i, align 4, !tbaa !29 switch i32 %121, label %cleanup93.thread.sink.split [ i32 1, label %if.end316.i i32 2, label %land.lhs.true260.i ] land.lhs.true260.i: ; preds = %if.then250.i %122 = load i32, i32* %93, align 4, !tbaa !80 %cmp262.i = icmp eq i32 %122, 2 br i1 %cmp262.i, label %if.end316.i, label %cleanup93.thread.sink.split if.else265.i: ; preds = %land.lhs.true244.i, %if.else241.i %call266.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %color_range267.i = getelementptr inbounds i8, i8* %21, i32 36 %123 = bitcast i8* %color_range267.i to i32* store i32 %call266.i, i32* %123, align 4, !tbaa !85 %124 = load i32, i32* %profile.i, align 4, !tbaa !29 switch i32 %124, label %if.else265.sw.epilog_crit_edge.i [ i32 0, label %land.lhs.true306.i.thread i32 1, label %sw.epilog.thread583.i i32 2, label %sw.bb276.i ] if.else265.sw.epilog_crit_edge.i: ; preds = %if.else265.i %ss_hor304.phi.trans.insert.i = getelementptr inbounds i8, i8* %21, i32 1076 %125 = bitcast i8* %ss_hor304.phi.trans.insert.i to i32* %.pre574.i = load i32, i32* %125, align 4, !tbaa !88 br label %sw.epilog.i land.lhs.true306.i.thread: ; preds = %if.else265.i %layout269.i = getelementptr inbounds i8, i8* %21, i32 12 %126 = bitcast i8* %layout269.i to i32* store i32 1, i32* %126, align 4, !tbaa !86 %ss_ver270.i = getelementptr inbounds i8, i8* %21, i32 1080 %127 = bitcast i8* %ss_ver270.i to i32* store i32 1, i32* %127, align 4, !tbaa !87 %ss_hor271.i = getelementptr inbounds i8, i8* %21, i32 1076 %128 = bitcast i8* %ss_hor271.i to i32* store i32 1, i32* %128, align 4, !tbaa !88 br label %cond.true309.i sw.epilog.thread583.i: ; preds = %if.else265.i %layout273.i = getelementptr inbounds i8, i8* %21, i32 12 %129 = bitcast i8* %layout273.i to i32* store i32 3, i32* %129, align 4, !tbaa !86 %ss_ver274.i = getelementptr inbounds i8, i8* %21, i32 1080 %130 = bitcast i8* %ss_ver274.i to i32* store i32 0, i32* %130, align 4, !tbaa !87 %ss_hor275.i = getelementptr inbounds i8, i8* %21, i32 1076 %131 = bitcast i8* %ss_hor275.i to i32* store i32 0, i32* %131, align 4, !tbaa !88 br label %cond.end312.i sw.bb276.i: ; preds = %if.else265.i %132 = load i32, i32* %93, align 4, !tbaa !80 %cmp278.i = icmp eq i32 %132, 2 br i1 %cmp278.i, label %if.then279.i, label %cond.true296.thread.i if.then279.i: ; preds = %sw.bb276.i %call280.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %ss_hor281.i = getelementptr inbounds i8, i8* %21, i32 1076 %133 = bitcast i8* %ss_hor281.i to i32* store i32 %call280.i, i32* %133, align 4, !tbaa !88 %tobool283.not.i = icmp eq i32 %call280.i, 0 br i1 %tobool283.not.i, label %if.end293.thread577.i, label %if.end293.i if.end293.thread577.i: ; preds = %if.then279.i %ss_ver289579.i = getelementptr inbounds i8, i8* %21, i32 1080 %134 = bitcast i8* %ss_ver289579.i to i32* store i32 0, i32* %134, align 4, !tbaa !87 br label %cond.end301.i cond.true296.thread.i: ; preds = %sw.bb276.i %ss_hor291.i = getelementptr inbounds i8, i8* %21, i32 1076 %135 = bitcast i8* %ss_hor291.i to i32* store i32 1, i32* %135, align 4, !tbaa !88 %ss_ver292.i = getelementptr inbounds i8, i8* %21, i32 1080 %136 = bitcast i8* %ss_ver292.i to i32* store i32 0, i32* %136, align 4, !tbaa !87 br label %138 if.end293.i: ; preds = %if.then279.i %call285.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool286.i = icmp ne i32 %call285.i, 0 %phi.cast559.i = zext i1 %tobool286.i to i32 %.pre.pre.i = load i32, i32* %133, align 4, !tbaa !88 %ss_ver289.i = getelementptr inbounds i8, i8* %21, i32 1080 %137 = bitcast i8* %ss_ver289.i to i32* store i32 %phi.cast559.i, i32* %137, align 4, !tbaa !87 %tobool295.not.i = icmp eq i32 %.pre.pre.i, 0 %brmerge = or i1 %tobool286.i, %tobool295.not.i %.mux1095 = select i1 %tobool295.not.i, i32 3, i32 1 br i1 %brmerge, label %cond.end301.i, label %138 138: ; preds = %if.end293.i, %cond.true296.thread.i %139 = phi i32 [ 1, %cond.true296.thread.i ], [ %.pre.pre.i, %if.end293.i ] br label %cond.end301.i cond.end301.i: ; preds = %if.end293.i, %138, %if.end293.thread577.i %140 = phi i32 [ %.pre.pre.i, %if.end293.i ], [ 0, %if.end293.thread577.i ], [ %139, %138 ] %cond302.i = phi i32 [ %.mux1095, %if.end293.i ], [ 3, %if.end293.thread577.i ], [ 2, %138 ] %layout303.i = getelementptr inbounds i8, i8* %21, i32 12 %141 = bitcast i8* %layout303.i to i32* store i32 %cond302.i, i32* %141, align 4, !tbaa !86 br label %sw.epilog.i sw.epilog.i: ; preds = %cond.end301.i, %if.else265.sw.epilog_crit_edge.i %142 = phi i32 [ %.pre574.i, %if.else265.sw.epilog_crit_edge.i ], [ %140, %cond.end301.i ] %cmp305.i = icmp eq i32 %142, 1 br i1 %cmp305.i, label %land.lhs.true306.i, label %cond.end312.i land.lhs.true306.i: ; preds = %sw.epilog.i %ss_ver307.i.phi.trans.insert = getelementptr inbounds i8, i8* %21, i32 1080 %.phi.trans.insert = bitcast i8* %ss_ver307.i.phi.trans.insert to i32* %.pre1116 = load i32, i32* %.phi.trans.insert, align 4, !tbaa !87 %cmp308.i = icmp eq i32 %.pre1116, 1 br i1 %cmp308.i, label %cond.true309.i, label %cond.end312.i cond.true309.i: ; preds = %land.lhs.true306.i.thread, %land.lhs.true306.i %call310.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 2) #7 br label %cond.end312.i cond.end312.i: ; preds = %cond.true309.i, %land.lhs.true306.i, %sw.epilog.i, %sw.epilog.thread583.i %cond313.i = phi i32 [ %call310.i, %cond.true309.i ], [ 0, %land.lhs.true306.i ], [ 0, %sw.epilog.i ], [ 0, %sw.epilog.thread583.i ] %chr314.i = getelementptr inbounds i8, i8* %21, i32 28 %143 = bitcast i8* %chr314.i to i32* store i32 %cond313.i, i32* %143, align 4, !tbaa !89 br label %if.end316.i if.end316.i: ; preds = %cond.end312.i, %land.lhs.true260.i, %if.then250.i, %if.then239.i %144 = load i32, i32* %97, align 4, !tbaa !81 %tobool318.not.i = icmp eq i32 %144, 0 br i1 %tobool318.not.i, label %land.rhs319.i, label %if.end59 land.rhs319.i: ; preds = %if.end316.i %call320.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %tobool321.i = icmp ne i32 %call320.i, 0 %phi.cast.i = zext i1 %tobool321.i to i32 br label %if.end59 if.end59: ; preds = %land.rhs319.i, %if.end316.i %145 = phi i32 [ 0, %if.end316.i ], [ %phi.cast.i, %land.rhs319.i ] %separate_uv_delta_q324.i = getelementptr inbounds i8, i8* %21, i32 1092 %146 = bitcast i8* %separate_uv_delta_q324.i to i32* store i32 %145, i32* %146, align 4, !tbaa !90 %call325.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %film_grain_present.i = getelementptr inbounds i8, i8* %21, i32 1096 %147 = bitcast i8* %film_grain_present.i to i32* store i32 %call325.i, i32* %147, align 4, !tbaa !91 %call326.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %148 = load i32, i32* %error, align 8, !tbaa !13 %tobool.not.i962 = icmp eq i32 %148, 0 br i1 %tobool.not.i962, label %if.end.i966, label %cleanup93.thread.sink.split if.end.i966: ; preds = %if.end59 %149 = load i32, i32* %6, align 4, !tbaa !15 %150 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i.i = sub i32 %149, %150 %mul.i.i = shl i32 %sub.ptr.sub.i.i, 3 %151 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i.i = sub i32 %mul.i.i, %151 %cmp.i963 = icmp uge i32 %sub.i.i, %sub.i call void @llvm.assume(i1 %cmp.i963) #7 %sub.i964 = sub i32 %sub.i.i, %sub.i %mul.i965 = shl i32 %cond, 3 %cmp3.i = icmp ugt i32 %sub.i964, %mul.i965 br i1 %cmp3.i, label %cleanup93.thread.sink.split, label %if.end63 if.end63: ; preds = %if.end.i966 %seq_hdr64 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 7 %152 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr64, align 4, !tbaa !92 %tobool65.not = icmp eq %struct.Dav1dSequenceHeader* %152, null br i1 %tobool65.not, label %if.then66, label %if.else if.then66: ; preds = %if.end63 %frame_hdr = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr, align 4, !tbaa !93 br label %cleanup93 if.else: ; preds = %if.end63 %153 = bitcast %struct.Dav1dSequenceHeader* %152 to i8* %call68 = call arm_aapcs_vfpcc i32 @memcmp(i8* nonnull dereferenceable(1100) %21, i8* nonnull dereferenceable(1100) %153, i32 1100) %tobool69.not = icmp eq i32 %call68, 0 br i1 %tobool69.not, label %cleanup93, label %if.then70 if.then70: ; preds = %if.else %frame_hdr71 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr71, align 4, !tbaa !93 %mastering_display = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 13 store %struct.Dav1dMasteringDisplay* null, %struct.Dav1dMasteringDisplay** %mastering_display, align 4, !tbaa !94 %content_light = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 11 store %struct.Dav1dContentLightLevel* null, %struct.Dav1dContentLightLevel** %content_light, align 4, !tbaa !95 %mastering_display_ref = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 12 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %mastering_display_ref) #7 %content_light_ref = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 10 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %content_light_ref) #7 %arrayidx75 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 0, i32 0, i32 2, i32 0 %154 = load i8*, i8** %arrayidx75, align 8, !tbaa !26 %tobool76.not = icmp eq i8* %154, null br i1 %tobool76.not, label %if.end81, label %if.then77 if.then77: ; preds = %if.then70 %p = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p) #7 br label %if.end81 if.end81: ; preds = %if.then77, %if.then70 %segmap = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap) #7 %refmvs = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs) #7 %arrayidx86 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 0 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86) #7 %arrayidx75.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0, i32 0, i32 2, i32 0 %155 = load i8*, i8** %arrayidx75.1, align 8, !tbaa !26 %tobool76.not.1 = icmp eq i8* %155, null br i1 %tobool76.not.1, label %if.end81.1, label %if.then77.1 cleanup93.thread.sink.split: ; preds = %if.end59, %if.end.i966, %land.lhs.true260.i, %if.then250.i, %if.then34.i, %land.lhs.true.i, %if.end54 %.sink1135 = phi i8* [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i32 0, i32 0), %if.end54 ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i32 0, i32 0), %land.lhs.true.i ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i32 0, i32 0), %if.then34.i ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i32 0, i32 0), %if.then250.i ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i32 0, i32 0), %land.lhs.true260.i ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i32 0, i32 0), %if.end59 ], [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0), %if.end.i966 ] call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* %.sink1135) #7 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %ref) #7 br label %cleanup93.thread cleanup93.thread: ; preds = %cleanup93.thread.sink.split, %sw.bb %retval.3.ph = phi i32 [ -12, %sw.bb ], [ -22, %cleanup93.thread.sink.split ] call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %20) #7 br label %cleanup637 cleanup93: ; preds = %if.end81.7, %if.then66, %if.else %seq_hdr_ref = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 6 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %seq_hdr_ref) #7 %156 = bitcast %struct.Dav1dRef** %ref to i32* %157 = load i32, i32* %156, align 4, !tbaa !26 %158 = bitcast %struct.Dav1dRef** %seq_hdr_ref to i32* store i32 %157, i32* %158, align 8, !tbaa !96 %159 = bitcast %struct.Dav1dSequenceHeader** %seq_hdr64 to i8** store i8* %21, i8** %159, align 4, !tbaa !92 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %20) #7 br label %sw.epilog439 sw.bb95: ; preds = %if.end50 %frame_hdr96 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %160 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr96, align 4, !tbaa !93 %tobool97.not = icmp eq %struct.Dav1dFrameHeader* %160, null %tobool101.not = icmp eq i32 %global, 0 %or.cond = and i1 %tobool101.not, %tobool97.not br i1 %or.cond, label %if.end103, label %sw.epilog439 sw.bb100: ; preds = %if.end50, %if.end50 %tobool101.not.old = icmp eq i32 %global, 0 br i1 %tobool101.not.old, label %if.end103, label %sw.epilog439 if.end103: ; preds = %sw.bb95, %sw.bb100 %seq_hdr104 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 7 %161 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr104, align 4, !tbaa !92 %tobool105.not = icmp eq %struct.Dav1dSequenceHeader* %161, null br i1 %tobool105.not, label %error636, label %if.end107 if.end107: ; preds = %if.end103 %frame_hdr_ref = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 8 %162 = load %struct.Dav1dRef*, %struct.Dav1dRef** %frame_hdr_ref, align 8, !tbaa !97 %tobool108.not = icmp eq %struct.Dav1dRef* %162, null br i1 %tobool108.not, label %if.then109, label %if.end116 if.then109: ; preds = %if.end107 %call110 = call arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32 1680) #7 store %struct.Dav1dRef* %call110, %struct.Dav1dRef** %frame_hdr_ref, align 8, !tbaa !97 %tobool113.not = icmp eq %struct.Dav1dRef* %call110, null br i1 %tobool113.not, label %cleanup637, label %if.end116 if.end116: ; preds = %if.then109, %if.end107 %163 = phi %struct.Dav1dRef* [ %call110, %if.then109 ], [ %162, %if.end107 ] %data118 = getelementptr inbounds %struct.Dav1dRef, %struct.Dav1dRef* %163, i32 0, i32 0 %164 = load i8*, i8** %data118, align 4, !tbaa !27 %frame_hdr119 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %165 = bitcast %struct.Dav1dFrameHeader** %frame_hdr119 to i8** store i8* %164, i8** %165, align 4, !tbaa !93 call void @llvm.memset.p0i8.i32(i8* nonnull align 8 dereferenceable(1680) %164, i8 0, i32 1680, i1 false) %166 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 %temporal_id122 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %166, i32 0, i32 5 store i32 %temporal_id.0, i32* %temporal_id122, align 4, !tbaa !98 %spatial_id124 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %166, i32 0, i32 6 store i32 %spatial_id.0, i32* %spatial_id124, align 8, !tbaa !113 %call125 = call arm_aapcs_vfpcc i32 @parse_frame_hdr(%struct.Dav1dContext* nonnull %c, %struct.GetBits* nonnull %gb) %cmp126 = icmp slt i32 %call125, 0 br i1 %cmp126, label %if.then127, label %for.cond130.preheader for.cond130.preheader: ; preds = %if.end116 %n_tile_data = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 4 %167 = load i32, i32* %n_tile_data, align 8, !tbaa !114 %cmp1311105 = icmp sgt i32 %167, 0 br i1 %cmp1311105, label %for.body133.lr.ph, label %for.cond.cleanup132 for.body133.lr.ph: ; preds = %for.cond130.preheader %tile = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 2 br label %for.body133 if.then127: ; preds = %if.end116 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 br label %cleanup637 for.cond.cleanup132: ; preds = %for.body133, %for.cond130.preheader store i32 0, i32* %n_tile_data, align 8, !tbaa !114 %n_tiles = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 5 store i32 0, i32* %n_tiles, align 4, !tbaa !115 %cmp141.not = icmp eq i32 %call1, 6 br i1 %cmp141.not, label %if.end149, label %if.then142 for.body133: ; preds = %for.body133.lr.ph, %for.body133 %n.01106 = phi i32 [ 0, %for.body133.lr.ph ], [ %inc137, %for.body133 ] %168 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile, align 8, !tbaa !116 %data135 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %168, i32 %n.01106, i32 0 call arm_aapcs_vfpcc void @dav1d_data_unref_internal(%struct.Dav1dData* %data135) #7 %inc137 = add nuw nsw i32 %n.01106, 1 %169 = load i32, i32* %n_tile_data, align 8, !tbaa !114 %cmp131 = icmp slt i32 %inc137, %169 br i1 %cmp131, label %for.body133, label %for.cond.cleanup132 if.then142: ; preds = %for.cond.cleanup132 %call143 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %170 = load i32, i32* %error, align 8, !tbaa !13 %tobool.not.i968 = icmp eq i32 %170, 0 br i1 %tobool.not.i968, label %if.end.i980, label %if.then146 if.end.i980: ; preds = %if.then142 %171 = load i32, i32* %6, align 4, !tbaa !15 %172 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i.i972 = sub i32 %171, %172 %mul.i.i973 = shl i32 %sub.ptr.sub.i.i972, 3 %173 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i.i975 = sub i32 %mul.i.i973, %173 %cmp.i976 = icmp uge i32 %sub.i.i975, %sub.i call void @llvm.assume(i1 %cmp.i976) #7 %sub.i977 = sub i32 %sub.i.i975, %sub.i %mul.i978 = shl i32 %cond, 3 %cmp3.i979 = icmp ugt i32 %sub.i977, %mul.i978 br i1 %cmp3.i979, label %if.then146, label %if.end149 if.then146: ; preds = %if.end.i980, %if.then142 %.sink1136 = phi i8* [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i32 0, i32 0), %if.then142 ], [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0), %if.end.i980 ] call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* nonnull %c, i8* %.sink1136) #7 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 br label %cleanup637 if.end149: ; preds = %if.end.i980, %for.cond.cleanup132 %frame_size_limit = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 28 %174 = load i32, i32* %frame_size_limit, align 4, !tbaa !117 %tobool150.not = icmp eq i32 %174, 0 br i1 %tobool150.not, label %if.end168, label %land.lhs.true151 land.lhs.true151: ; preds = %if.end149 %175 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 %arrayidx153 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %175, i32 0, i32 2, i32 1 %176 = load i32, i32* %arrayidx153, align 4, !tbaa !51 %conv = sext i32 %176 to i64 %height = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %175, i32 0, i32 3 %177 = load i32, i32* %height, align 4, !tbaa !118 %conv155 = sext i32 %177 to i64 %mul = mul nsw i64 %conv155, %conv %conv157 = zext i32 %174 to i64 %cmp158 = icmp sgt i64 %mul, %conv157 br i1 %cmp158, label %if.then160, label %if.end168 if.then160: ; preds = %land.lhs.true151 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* nonnull %c, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i32 0, i32 0), i32 %176, i32 %177, i32 %174) #7 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 br label %cleanup637 if.end168: ; preds = %land.lhs.true151, %if.end149 br i1 %cmp141.not, label %if.end172, label %sw.epilog439 if.end172: ; preds = %if.end168 %178 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 %show_existing_frame = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %178, i32 0, i32 7 %179 = load i32, i32* %show_existing_frame, align 4, !tbaa !119 %tobool174.not = icmp eq i32 %179, 0 br i1 %tobool174.not, label %if.end177, label %if.then175 if.then175: ; preds = %if.end172 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr119, align 4, !tbaa !93 br label %error636 if.end177: ; preds = %if.end172 call arm_aapcs_vfpcc void @dav1d_bytealign_get_bits(%struct.GetBits* nonnull %gb) #7 br label %sw.bb178 sw.bb178: ; preds = %if.end50, %if.end177 %tobool179.not = icmp eq i32 %global, 0 br i1 %tobool179.not, label %if.end181, label %sw.epilog439 if.end181: ; preds = %sw.bb178 %frame_hdr182 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %180 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr182, align 4, !tbaa !93 %tobool183.not = icmp eq %struct.Dav1dFrameHeader* %180, null br i1 %tobool183.not, label %error636, label %if.end185 if.end185: ; preds = %if.end181 %n_tile_data_alloc = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 3 %181 = load i32, i32* %n_tile_data_alloc, align 4, !tbaa !120 %n_tile_data186 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 4 %182 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %cmp188.not = icmp sgt i32 %181, %182 br i1 %cmp188.not, label %if.end215, label %if.then190 if.then190: ; preds = %if.end185 %cmp193 = icmp sgt i32 %182, 33554430 br i1 %cmp193, label %error636, label %if.end196 if.end196: ; preds = %if.then190 %tile198 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 2 %183 = bitcast %struct.Dav1dTileGroup** %tile198 to i8** %184 = load i8*, i8** %183, align 8, !tbaa !116 %add187 = shl i32 %182, 6 %mul201 = add i32 %add187, 64 %call202 = call arm_aapcs_vfpcc i8* @realloc(i8* %184, i32 %mul201) %tobool203.not = icmp eq i8* %call202, null br i1 %tobool203.not, label %error636, label %cleanup212.thread cleanup212.thread: ; preds = %if.end196 %185 = bitcast i8* %call202 to %struct.Dav1dTileGroup* store i8* %call202, i8** %183, align 8, !tbaa !116 %186 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %add.ptr = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %185, i32 %186 %187 = bitcast %struct.Dav1dTileGroup* %add.ptr to i8* call void @llvm.memset.p0i8.i32(i8* nonnull align 8 dereferenceable(64) %187, i8 0, i32 64, i1 false) %add210 = add nsw i32 %186, 1 store i32 %add210, i32* %n_tile_data_alloc, align 4, !tbaa !120 %.pre = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr182, align 4, !tbaa !93 br label %if.end215 if.end215: ; preds = %cleanup212.thread, %if.end185 %188 = phi i32 [ %186, %cleanup212.thread ], [ %182, %if.end185 ] %189 = phi %struct.Dav1dFrameHeader* [ %.pre, %cleanup212.thread ], [ %180, %if.end185 ] %cols.i = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %189, i32 0, i32 34, i32 5 %190 = load i32, i32* %cols.i, align 4, !tbaa !121 %rows.i = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %189, i32 0, i32 34, i32 9 %191 = load i32, i32* %rows.i, align 4, !tbaa !122 %mul.i984 = mul nsw i32 %191, %190 %cmp.i985 = icmp sgt i32 %mul.i984, 1 br i1 %cmp.i985, label %cond.true.i987, label %if.else.i991 cond.true.i987: ; preds = %if.end215 %call.i986 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 %phi.cmp.i = icmp eq i32 %call.i986, 0 br i1 %phi.cmp.i, label %cond.true.i987.if.else.i991_crit_edge, label %if.then.i989 cond.true.i987.if.else.i991_crit_edge: ; preds = %cond.true.i987 %.pre1114 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 br label %if.else.i991 if.then.i989: ; preds = %cond.true.i987 %192 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr182, align 4, !tbaa !93 %log2_cols.i = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %192, i32 0, i32 34, i32 4 %193 = load i32, i32* %log2_cols.i, align 8, !tbaa !123 %log2_rows.i = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %192, i32 0, i32 34, i32 8 %194 = load i32, i32* %log2_rows.i, align 8, !tbaa !124 %add.i988 = add nsw i32 %194, %193 %call7.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %add.i988) #7 %tile.i = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 2 %195 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile.i, align 8, !tbaa !116 %196 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %start.i = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %195, i32 %196, i32 1 store i32 %call7.i, i32* %start.i, align 8, !tbaa !125 %call8.i = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 %add.i988) #7 %197 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile.i, align 8, !tbaa !116 %198 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %end.i = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %197, i32 %198, i32 2 br label %parse_tile_hdr.exit if.else.i991: ; preds = %cond.true.i987.if.else.i991_crit_edge, %if.end215 %199 = phi i32 [ %.pre1114, %cond.true.i987.if.else.i991_crit_edge ], [ %188, %if.end215 ] %tile12.i = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 2 %200 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile12.i, align 8, !tbaa !116 %start15.i = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %200, i32 %199, i32 1 store i32 0, i32* %start15.i, align 8, !tbaa !125 %sub.i990 = add nsw i32 %mul.i984, -1 %end19.i = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %200, i32 %199, i32 2 br label %parse_tile_hdr.exit parse_tile_hdr.exit: ; preds = %if.then.i989, %if.else.i991 %end.i.sink = phi i32* [ %end.i, %if.then.i989 ], [ %end19.i, %if.else.i991 ] %call8.i.sink = phi i32 [ %call8.i, %if.then.i989 ], [ %sub.i990, %if.else.i991 ] store i32 %call8.i.sink, i32* %end.i.sink, align 4, !tbaa !127 call arm_aapcs_vfpcc void @dav1d_bytealign_get_bits(%struct.GetBits* nonnull %gb) #7 %201 = load i32, i32* %error, align 8, !tbaa !13 %tobool.not.i994 = icmp eq i32 %201, 0 br i1 %tobool.not.i994, label %if.end.i1006, label %if.then.i995 if.then.i995: ; preds = %parse_tile_hdr.exit call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* nonnull %c, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i32 0, i32 0)) #7 br label %cleanup637 if.end.i1006: ; preds = %parse_tile_hdr.exit %202 = load i32, i32* %6, align 4, !tbaa !15 %203 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i.i998 = sub i32 %202, %203 %mul.i.i999 = shl i32 %sub.ptr.sub.i.i998, 3 %204 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i.i1001 = sub i32 %mul.i.i999, %204 %cmp.i1002 = icmp uge i32 %sub.i.i1001, %sub.i call void @llvm.assume(i1 %cmp.i1002) #7 %sub.i1003 = sub i32 %sub.i.i1001, %sub.i %mul.i1004 = shl i32 %cond, 3 %cmp3.i1005 = icmp ugt i32 %sub.i1003, %mul.i1004 br i1 %cmp3.i1005, label %if.then4.i1007, label %if.end219 if.then4.i1007: ; preds = %if.end.i1006 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* nonnull %c, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0)) #7 br label %cleanup637 if.end219: ; preds = %if.end.i1006 %and222 = and i32 %sub.i.i1001, 7 %cmp223 = icmp eq i32 %and222, 0 call void @llvm.assume(i1 %cmp223) %shr230 = lshr exact i32 %sub.i.i1001, 3 %cmp231 = icmp uge i32 %add, %shr230 call void @llvm.assume(i1 %cmp231) %tile237 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 2 %205 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile237, align 8, !tbaa !116 %206 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %data240 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %205, i32 %206, i32 0 call arm_aapcs_vfpcc void @dav1d_data_ref(%struct.Dav1dData* %data240, %struct.Dav1dData* %in) #7 %207 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile237, align 8, !tbaa !116 %208 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %data246 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %207, i32 %208, i32 0, i32 0 %209 = load i8*, i8** %data246, align 8, !tbaa !128 %add.ptr247 = getelementptr inbounds i8, i8* %209, i32 %shr230 store i8* %add.ptr247, i8** %data246, align 8, !tbaa !128 %sub249 = sub i32 %add, %shr230 %sz254 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %207, i32 %208, i32 0, i32 1 store i32 %sub249, i32* %sz254, align 4, !tbaa !129 %start = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %207, i32 %208, i32 1 %210 = load i32, i32* %start, align 8, !tbaa !125 %end = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %207, i32 %208, i32 2 %211 = load i32, i32* %end, align 4, !tbaa !127 %cmp261 = icmp sgt i32 %210, %211 br i1 %cmp261, label %if.then271, label %lor.lhs.false263 lor.lhs.false263: ; preds = %if.end219 %n_tiles268 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 5 %212 = load i32, i32* %n_tiles268, align 4, !tbaa !115 %cmp269.not = icmp eq i32 %210, %212 br i1 %cmp269.not, label %cleanup303.thread, label %if.then271 if.then271: ; preds = %lor.lhs.false263, %if.end219 %cmp275.not1103 = icmp slt i32 %208, 0 br i1 %cmp275.not1103, label %cleanup303, label %for.body278.preheader for.body278.preheader: ; preds = %if.then271 %data2811125 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %207, i32 0, i32 0 call arm_aapcs_vfpcc void @dav1d_data_unref_internal(%struct.Dav1dData* %data2811125) #7 %213 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %cmp275.not.not1126 = icmp sgt i32 %213, 0 br i1 %cmp275.not.not1126, label %for.body278.for.body278_crit_edge, label %cleanup303 for.body278.for.body278_crit_edge: ; preds = %for.body278.preheader, %for.body278.for.body278_crit_edge %i272.011041127 = phi i32 [ %inc283, %for.body278.for.body278_crit_edge ], [ 0, %for.body278.preheader ] %inc283 = add nuw nsw i32 %i272.011041127, 1 %.pre1115 = load %struct.Dav1dTileGroup*, %struct.Dav1dTileGroup** %tile237, align 8, !tbaa !116 %data281 = getelementptr inbounds %struct.Dav1dTileGroup, %struct.Dav1dTileGroup* %.pre1115, i32 %inc283, i32 0 call arm_aapcs_vfpcc void @dav1d_data_unref_internal(%struct.Dav1dData* nonnull %data281) #7 %214 = load i32, i32* %n_tile_data186, align 8, !tbaa !114 %cmp275.not.not = icmp slt i32 %inc283, %214 br i1 %cmp275.not.not, label %for.body278.for.body278_crit_edge, label %cleanup303 cleanup303.thread: ; preds = %lor.lhs.false263 %add300 = add i32 %211, 1 store i32 %add300, i32* %n_tiles268, align 4, !tbaa !115 %inc302 = add nsw i32 %208, 1 store i32 %inc302, i32* %n_tile_data186, align 8, !tbaa !114 br label %sw.epilog439 cleanup303: ; preds = %for.body278.for.body278_crit_edge, %for.body278.preheader, %if.then271 store i32 0, i32* %n_tile_data186, align 8, !tbaa !114 %n_tiles287 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 5 store i32 0, i32* %n_tiles287, align 4, !tbaa !115 br label %error636 sw.bb305: ; preds = %if.end50 %call306 = call arm_aapcs_vfpcc i32 @dav1d_get_uleb128(%struct.GetBits* nonnull %gb) #7 %215 = load i32, i32* %6, align 4, !tbaa !15 %216 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i1018 = sub i32 %215, %216 %mul.i1019 = shl i32 %sub.ptr.sub.i1018, 3 %217 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %218 = add i32 %217, %sub.i %sub308 = sub i32 %mul.i1019, %218 %shr309 = lshr i32 %sub308, 3 %219 = load i32, i32* %error, align 8, !tbaa !13 %tobool311.not = icmp eq i32 %219, 0 br i1 %tobool311.not, label %if.end313, label %error636 if.end313: ; preds = %sw.bb305 %220 = bitcast %struct.Dav1dRef** %ref314 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %220) #7 switch i32 %call306, label %sw.default [ i32 1, label %sw.bb317 i32 2, label %sw.bb333 i32 4, label %while.cond.preheader i32 3, label %cleanup434.thread1081 i32 5, label %cleanup434.thread1081 ] while.cond.preheader: ; preds = %if.end313 %221 = icmp slt i32 %cond, 0 %smin = select i1 %221, i32 %cond, i32 0 br label %while.cond sw.bb317: ; preds = %if.end313 %call318 = call arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32 8) #7 store %struct.Dav1dRef* %call318, %struct.Dav1dRef** %ref314, align 4, !tbaa !26 %tobool319.not = icmp eq %struct.Dav1dRef* %call318, null br i1 %tobool319.not, label %cleanup434.thread1085, label %if.end321 if.end321: ; preds = %sw.bb317 %data322 = getelementptr inbounds %struct.Dav1dRef, %struct.Dav1dRef* %call318, i32 0, i32 0 %222 = load i8*, i8** %data322, align 4, !tbaa !27 %223 = bitcast i8* %222 to i64* store i64 0, i64* %223, align 4 %call323 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %max_content_light_level = bitcast i8* %222 to i32* store i32 %call323, i32* %max_content_light_level, align 4, !tbaa !130 %call324 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %max_frame_average_light_level = getelementptr inbounds i8, i8* %222, i32 4 %224 = bitcast i8* %max_frame_average_light_level to i32* store i32 %call324, i32* %224, align 4, !tbaa !132 %call325 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 call arm_aapcs_vfpcc void @dav1d_bytealign_get_bits(%struct.GetBits* nonnull %gb) #7 %225 = load i32, i32* %error, align 8, !tbaa !13 %tobool.not.i1023 = icmp eq i32 %225, 0 br i1 %tobool.not.i1023, label %if.end.i1035, label %cleanup434.thread1089 if.end.i1035: ; preds = %if.end321 %226 = load i32, i32* %6, align 4, !tbaa !15 %227 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i.i1027 = sub i32 %226, %227 %mul.i.i1028 = shl i32 %sub.ptr.sub.i.i1027, 3 %228 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i.i1030 = sub i32 %mul.i.i1028, %228 %cmp.i1031 = icmp uge i32 %sub.i.i1030, %sub.i call void @llvm.assume(i1 %cmp.i1031) #7 %sub.i1032 = sub i32 %sub.i.i1030, %sub.i %mul.i1033 = shl i32 %cond, 3 %cmp3.i1034 = icmp ugt i32 %sub.i1032, %mul.i1033 br i1 %cmp3.i1034, label %cleanup434.thread1089, label %if.end329 if.end329: ; preds = %if.end.i1035 %content_light_ref330 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 10 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %content_light_ref330) #7 %content_light331 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 11 %229 = bitcast %struct.Dav1dContentLightLevel** %content_light331 to i8** store i8* %222, i8** %229, align 4, !tbaa !95 %230 = bitcast %struct.Dav1dRef** %ref314 to i32* %231 = load i32, i32* %230, align 4, !tbaa !26 %232 = bitcast %struct.Dav1dRef** %content_light_ref330 to i32* store i32 %231, i32* %232, align 8, !tbaa !133 br label %cleanup434.thread1081 sw.bb333: ; preds = %if.end313 %call334 = call arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32 24) #7 store %struct.Dav1dRef* %call334, %struct.Dav1dRef** %ref314, align 4, !tbaa !26 %tobool335.not = icmp eq %struct.Dav1dRef* %call334, null br i1 %tobool335.not, label %cleanup434.thread1085, label %if.end337 if.end337: ; preds = %sw.bb333 %data338 = getelementptr inbounds %struct.Dav1dRef, %struct.Dav1dRef* %call334, i32 0, i32 0 %233 = load i8*, i8** %data338, align 4, !tbaa !27 call void @llvm.memset.p0i8.i32(i8* nonnull align 4 dereferenceable(24) %233, i8 0, i32 24, i1 false) %call3451107 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv3461110 = trunc i32 %call3451107 to i16 %arrayidx348 = bitcast i8* %233 to i16* store i16 %conv3461110, i16* %arrayidx348, align 4, !tbaa !134 %call349 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv350 = trunc i32 %call349 to i16 %arrayidx353 = getelementptr inbounds i8, i8* %233, i32 2 %234 = bitcast i8* %arrayidx353 to i16* store i16 %conv350, i16* %234, align 2, !tbaa !134 %call345 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv3461110.1 = trunc i32 %call345 to i16 %arrayidx348.1 = getelementptr inbounds i8, i8* %233, i32 4 %235 = bitcast i8* %arrayidx348.1 to i16* store i16 %conv3461110.1, i16* %235, align 4, !tbaa !134 %call349.1 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv350.1 = trunc i32 %call349.1 to i16 %arrayidx353.1 = getelementptr inbounds i8, i8* %233, i32 6 %236 = bitcast i8* %arrayidx353.1 to i16* store i16 %conv350.1, i16* %236, align 2, !tbaa !134 %call345.1 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv3461110.2 = trunc i32 %call345.1 to i16 %arrayidx348.2 = getelementptr inbounds i8, i8* %233, i32 8 %237 = bitcast i8* %arrayidx348.2 to i16* store i16 %conv3461110.2, i16* %237, align 4, !tbaa !134 %call349.2 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv350.2 = trunc i32 %call349.2 to i16 %arrayidx353.2 = getelementptr inbounds i8, i8* %233, i32 10 %238 = bitcast i8* %arrayidx353.2 to i16* store i16 %conv350.2, i16* %238, align 2, !tbaa !134 %call345.2 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv346.le = trunc i32 %call345.2 to i16 %white_point = getelementptr inbounds i8, i8* %233, i32 12 %arrayidx360 = bitcast i8* %white_point to i16* store i16 %conv346.le, i16* %arrayidx360, align 4, !tbaa !134 %call361 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 16) #7 %conv362 = trunc i32 %call361 to i16 %arrayidx364 = getelementptr inbounds i8, i8* %233, i32 14 %239 = bitcast i8* %arrayidx364 to i16* store i16 %conv362, i16* %239, align 2, !tbaa !134 %call365 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 32) #7 %max_luminance = getelementptr inbounds i8, i8* %233, i32 16 %240 = bitcast i8* %max_luminance to i32* store i32 %call365, i32* %240, align 4, !tbaa !136 %call366 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 32) #7 %min_luminance = getelementptr inbounds i8, i8* %233, i32 20 %241 = bitcast i8* %min_luminance to i32* store i32 %call366, i32* %241, align 4, !tbaa !138 %call367 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 1) #7 call arm_aapcs_vfpcc void @dav1d_bytealign_get_bits(%struct.GetBits* nonnull %gb) #7 %242 = load i32, i32* %error, align 8, !tbaa !13 %tobool.not.i1040 = icmp eq i32 %242, 0 br i1 %tobool.not.i1040, label %if.end.i1052, label %cleanup434.thread1089 if.end.i1052: ; preds = %if.end337 %243 = load i32, i32* %6, align 4, !tbaa !15 %244 = load i32, i32* %8, align 8, !tbaa !16 %sub.ptr.sub.i.i1044 = sub i32 %243, %244 %mul.i.i1045 = shl i32 %sub.ptr.sub.i.i1044, 3 %245 = load i32, i32* %bits_left.i, align 8, !tbaa !17 %sub.i.i1047 = sub i32 %mul.i.i1045, %245 %cmp.i1048 = icmp uge i32 %sub.i.i1047, %sub.i call void @llvm.assume(i1 %cmp.i1048) #7 %sub.i1049 = sub i32 %sub.i.i1047, %sub.i %mul.i1050 = shl i32 %cond, 3 %cmp3.i1051 = icmp ugt i32 %sub.i1049, %mul.i1050 br i1 %cmp3.i1051, label %cleanup434.thread1089, label %if.end371 if.end371: ; preds = %if.end.i1052 %mastering_display_ref372 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 12 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %mastering_display_ref372) #7 %mastering_display373 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 13 %246 = bitcast %struct.Dav1dMasteringDisplay** %mastering_display373 to i8** store i8* %233, i8** %246, align 4, !tbaa !94 %247 = bitcast %struct.Dav1dRef** %ref314 to i32* %248 = load i32, i32* %247, align 4, !tbaa !26 %249 = bitcast %struct.Dav1dRef** %mastering_display_ref372 to i32* store i32 %248, i32* %249, align 8, !tbaa !139 br label %cleanup434.thread1081 while.cond: ; preds = %while.cond.preheader, %land.rhs %payload_size.0 = phi i32 [ %add379, %land.rhs ], [ %cond, %while.cond.preheader ] %cmp376 = icmp sgt i32 %payload_size.0, 0 br i1 %cmp376, label %land.rhs, label %while.end.critedge land.rhs: ; preds = %while.cond %250 = load i8*, i8** %data, align 8, !tbaa !3 %add379 = add nsw i32 %payload_size.0, -1 %sub380 = add i32 %add379, %shr %arrayidx381 = getelementptr inbounds i8, i8* %250, i32 %sub380 %251 = load i8, i8* %arrayidx381, align 1, !tbaa !76 %tobool382.not = icmp eq i8 %251, 0 br i1 %tobool382.not, label %while.cond, label %while.end while.end.critedge: ; preds = %while.cond %dec.c = add nsw i32 %smin, -1 br label %while.end while.end: ; preds = %land.rhs, %while.end.critedge %payload_size.1 = phi i32 [ %dec.c, %while.end.critedge ], [ %add379, %land.rhs ] %call385 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 %252 = xor i32 %shr309, -1 %dec386 = add i32 %payload_size.1, %252 %cmp387 = icmp eq i32 %call385, 255 br i1 %cmp387, label %if.then389, label %if.end392 if.then389: ; preds = %while.end %call390 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 %dec391 = add nsw i32 %dec386, -1 %phi.cast = trunc i32 %call390 to i8 br label %if.end392 if.end392: ; preds = %if.then389, %while.end %payload_size.2 = phi i32 [ %dec391, %if.then389 ], [ %dec386, %while.end ] %country_code_extension_byte.0 = phi i8 [ %phi.cast, %if.then389 ], [ 0, %while.end ] %cmp393 = icmp slt i32 %payload_size.2, 1 br i1 %cmp393, label %cleanup434, label %if.end396 if.end396: ; preds = %if.end392 %add398 = add nuw i32 %payload_size.2, 12 %call399 = call arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32 %add398) #7 store %struct.Dav1dRef* %call399, %struct.Dav1dRef** %ref314, align 4, !tbaa !26 %tobool400.not = icmp eq %struct.Dav1dRef* %call399, null br i1 %tobool400.not, label %cleanup434.thread1092, label %for.body414.preheader cleanup434.thread1092: ; preds = %if.end396 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %220) #7 br label %cleanup637 for.body414.preheader: ; preds = %if.end396 %253 = bitcast %struct.Dav1dRef* %call399 to %struct.Dav1dITUTT35** %254 = load %struct.Dav1dITUTT35*, %struct.Dav1dITUTT35** %253, align 4, !tbaa !27 %255 = getelementptr inbounds %struct.Dav1dITUTT35, %struct.Dav1dITUTT35* %254, i32 1, i32 0 %payload = getelementptr inbounds %struct.Dav1dITUTT35, %struct.Dav1dITUTT35* %254, i32 0, i32 3 store i8* %255, i8** %payload, align 4, !tbaa !140 %conv405 = trunc i32 %call385 to i8 %country_code406 = getelementptr inbounds %struct.Dav1dITUTT35, %struct.Dav1dITUTT35* %254, i32 0, i32 0 store i8 %conv405, i8* %country_code406, align 4, !tbaa !142 %country_code_extension_byte408 = getelementptr inbounds %struct.Dav1dITUTT35, %struct.Dav1dITUTT35* %254, i32 0, i32 1 store i8 %country_code_extension_byte.0, i8* %country_code_extension_byte408, align 1, !tbaa !143 br label %for.body414 for.body414: ; preds = %for.body414.preheader, %for.body414 %i409.01112 = phi i32 [ %inc420, %for.body414 ], [ 0, %for.body414.preheader ] %call415 = call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* nonnull %gb, i32 8) #7 %conv416 = trunc i32 %call415 to i8 %256 = load i8*, i8** %payload, align 4, !tbaa !140 %arrayidx418 = getelementptr inbounds i8, i8* %256, i32 %i409.01112 store i8 %conv416, i8* %arrayidx418, align 1, !tbaa !76 %inc420 = add nuw nsw i32 %i409.01112, 1 %exitcond.not = icmp eq i32 %inc420, %payload_size.2 br i1 %exitcond.not, label %cleanup425, label %for.body414 cleanup425: ; preds = %for.body414 %payload_size423 = getelementptr inbounds %struct.Dav1dITUTT35, %struct.Dav1dITUTT35* %254, i32 0, i32 2 store i32 %payload_size.2, i32* %payload_size423, align 4, !tbaa !144 %itut_t35_ref = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 14 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %itut_t35_ref) #7 %itut_t35 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 15 store %struct.Dav1dITUTT35* %254, %struct.Dav1dITUTT35** %itut_t35, align 4, !tbaa !145 %257 = bitcast %struct.Dav1dRef** %ref314 to i32* %258 = load i32, i32* %257, align 4, !tbaa !26 %259 = bitcast %struct.Dav1dRef** %itut_t35_ref to i32* store i32 %258, i32* %259, align 8, !tbaa !146 br label %cleanup434.thread1081 sw.default: ; preds = %if.end313 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i32 0, i32 0), i32 %call306) #7 br label %cleanup434.thread1081 cleanup434.thread1081: ; preds = %cleanup425, %if.end313, %if.end313, %sw.default, %if.end371, %if.end329 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %220) #7 br label %sw.epilog439 cleanup434.thread1085: ; preds = %sw.bb317, %sw.bb333 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %220) #7 br label %cleanup637 cleanup434.thread1089: ; preds = %if.end337, %if.end.i1052, %if.end321, %if.end.i1035 %.sink1138.sink = phi i8* [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i32 0, i32 0), %if.end321 ], [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0), %if.end.i1035 ], [ getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i32 0, i32 0), %if.end337 ], [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0), %if.end.i1052 ] call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* %.sink1138.sink) #7 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %ref314) #7 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %220) #7 br label %error636 cleanup434: ; preds = %if.end392 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.1, i32 0, i32 0)) #7 call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %220) #7 br label %error636 sw.default438: ; preds = %if.end50 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i32 0, i32 0), i32 %call1, i32 %cond) #7 br label %sw.epilog439 sw.epilog439: ; preds = %cleanup434.thread1081, %cleanup303.thread, %cleanup93, %if.end50, %if.end50, %sw.bb178, %if.end168, %sw.bb100, %sw.bb95, %sw.default438 %seq_hdr440 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 7 %260 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr440, align 4, !tbaa !92 %tobool441.not = icmp eq %struct.Dav1dSequenceHeader* %260, null br i1 %tobool441.not, label %cleanup637, label %land.lhs.true442 land.lhs.true442: ; preds = %sw.epilog439 %frame_hdr443 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %261 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr443, align 4, !tbaa !93 %tobool444.not = icmp eq %struct.Dav1dFrameHeader* %261, null br i1 %tobool444.not, label %cleanup637, label %if.then445 if.then445: ; preds = %land.lhs.true442 %show_existing_frame447 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %261, i32 0, i32 7 %262 = load i32, i32* %show_existing_frame447, align 4, !tbaa !119 %tobool448.not = icmp eq i32 %262, 0 br i1 %tobool448.not, label %if.else605, label %if.then449 if.then449: ; preds = %if.then445 %existing_frame_idx = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %261, i32 0, i32 8 %263 = load i32, i32* %existing_frame_idx, align 8, !tbaa !147 %p454 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %263, i32 0, i32 0 %arrayidx456 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %263, i32 0, i32 0, i32 2, i32 0 %264 = load i8*, i8** %arrayidx456, align 8, !tbaa !26 %tobool457.not = icmp eq i8* %264, null br i1 %tobool457.not, label %cleanup637, label %if.end459 if.end459: ; preds = %if.then449 %n_fc = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 1 %265 = load i32, i32* %n_fc, align 4, !tbaa !148 %cmp460 = icmp eq i32 %265, 1 br i1 %cmp460, label %if.then462, label %if.else471 if.then462: ; preds = %if.end459 %out = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 17 call arm_aapcs_vfpcc void @dav1d_picture_ref(%struct.Dav1dPicture* nonnull %out, %struct.Dav1dPicture* nonnull %p454) #7 %m = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 17, i32 5 %m470 = getelementptr inbounds %struct.Dav1dData, %struct.Dav1dData* %in, i32 0, i32 3 call arm_aapcs_vfpcc void @dav1d_data_props_copy(%struct.Dav1dDataProps* nonnull %m, %struct.Dav1dDataProps* nonnull %m470) #7 br label %if.end531 if.else471: ; preds = %if.end459 %next472 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 18, i32 1 %266 = load i32, i32* %next472, align 4, !tbaa !149 %inc473 = add i32 %266, 1 %cmp477 = icmp eq i32 %inc473, %265 %spec.store.select = select i1 %cmp477, i32 0, i32 %inc473 store i32 %spec.store.select, i32* %next472, align 4 %fc = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 0 %267 = load %struct.Dav1dFrameContext*, %struct.Dav1dFrameContext** %fc, align 8, !tbaa !150 %lock = getelementptr inbounds %struct.Dav1dFrameContext, %struct.Dav1dFrameContext* %267, i32 %266, i32 53, i32 0, i32 2 call arm_aapcs_vfpcc void @AcquireSRWLockExclusive(%struct._RTL_SRWLOCK* nonnull %lock) #7 %n_tile_data487 = getelementptr inbounds %struct.Dav1dFrameContext, %struct.Dav1dFrameContext* %267, i32 %266, i32 22 %268 = load i32, i32* %n_tile_data487, align 16, !tbaa !151 %cmp4881100 = icmp sgt i32 %268, 0 br i1 %cmp4881100, label %while.body490.lr.ph, label %while.end498 while.body490.lr.ph: ; preds = %if.else471 %cond493 = getelementptr inbounds %struct.Dav1dFrameContext, %struct.Dav1dFrameContext* %267, i32 %266, i32 53, i32 0, i32 1 br label %while.body490 while.body490: ; preds = %while.body490.lr.ph, %while.body490 %call.i1056 = call arm_aapcs_vfpcc i32 @SleepConditionVariableSRW(%struct._RTL_CONDITION_VARIABLE* nonnull %cond493, %struct._RTL_SRWLOCK* nonnull %lock, i32 -1, i32 0) #7 %269 = load i32, i32* %n_tile_data487, align 16, !tbaa !151 %cmp488 = icmp sgt i32 %269, 0 br i1 %cmp488, label %while.body490, label %while.end498 while.end498: ; preds = %while.body490, %if.else471 %out_delayed500 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 18, i32 0 %270 = load %struct.Dav1dThreadPicture*, %struct.Dav1dThreadPicture** %out_delayed500, align 8, !tbaa !165 %arrayidx501 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266 %p502 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %arrayidx501, i32 0, i32 0 %arrayidx504 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266, i32 0, i32 2, i32 0 %271 = load i8*, i8** %arrayidx504, align 8, !tbaa !26 %tobool505.not = icmp eq i8* %271, null br i1 %tobool505.not, label %if.end517, label %if.then506 if.then506: ; preds = %while.end498 %progress507 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266, i32 3 %272 = load i32*, i32** %progress507, align 8, !tbaa !166 %arrayidx508 = getelementptr inbounds i32, i32* %272, i32 1 %273 = load atomic i32, i32* %arrayidx508 monotonic, align 4 %visible = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266, i32 1 %274 = load i32, i32* %visible, align 8, !tbaa !167 %tobool509 = icmp ne i32 %274, 0 %cmp511 = icmp ne i32 %273, -2 %or.cond650 = and i1 %cmp511, %tobool509 br i1 %or.cond650, label %if.then513, label %if.end516 if.then513: ; preds = %if.then506 %out514 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 17 call arm_aapcs_vfpcc void @dav1d_picture_ref(%struct.Dav1dPicture* nonnull %out514, %struct.Dav1dPicture* nonnull %p502) #7 br label %if.end516 if.end516: ; preds = %if.then513, %if.then506 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %arrayidx501) #7 br label %if.end517 if.end517: ; preds = %if.end516, %while.end498 %275 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr443, align 4, !tbaa !93 %existing_frame_idx520 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %275, i32 0, i32 8 %276 = load i32, i32* %existing_frame_idx520, align 8, !tbaa !147 %p522 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %276, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* %arrayidx501, %struct.Dav1dThreadPicture* nonnull %p522) #7 %visible523 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266, i32 1 store i32 1, i32* %visible523, align 8, !tbaa !167 %m525 = getelementptr inbounds %struct.Dav1dThreadPicture, %struct.Dav1dThreadPicture* %270, i32 %266, i32 0, i32 5 %m526 = getelementptr inbounds %struct.Dav1dData, %struct.Dav1dData* %in, i32 0, i32 3 call arm_aapcs_vfpcc void @dav1d_data_props_copy(%struct.Dav1dDataProps* nonnull %m525, %struct.Dav1dDataProps* nonnull %m526) #7 call arm_aapcs_vfpcc void @ReleaseSRWLockExclusive(%struct._RTL_SRWLOCK* nonnull %lock) #7 br label %if.end531 if.end531: ; preds = %if.end517, %if.then462 %277 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr443, align 4, !tbaa !93 %existing_frame_idx534 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %277, i32 0, i32 8 %278 = load i32, i32* %existing_frame_idx534, align 8, !tbaa !147 %p536 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %278, i32 0 %frame_hdr538 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %278, i32 0, i32 0, i32 1 %279 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr538, align 4, !tbaa !168 %frame_type = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %279, i32 0, i32 1 %280 = load i32, i32* %frame_type, align 8, !tbaa !170 %cmp539 = icmp eq i32 %280, 0 br i1 %cmp539, label %for.cond545.preheader, label %if.end603 for.cond545.preheader: ; preds = %if.end531 %arrayidx577 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 %278 %segmap583 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %278, i32 1 %281 = bitcast %struct.Dav1dRef** %segmap583 to i32* %cmp550 = icmp eq i32 %278, 0 br i1 %cmp550, label %if.end553.1, label %if.end553 if.end553: ; preds = %for.cond545.preheader %p556 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 0 %arrayidx559 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 0, i32 0, i32 2, i32 0 %282 = load i8*, i8** %arrayidx559, align 8, !tbaa !26 %tobool560.not = icmp eq i8* %282, null br i1 %tobool560.not, label %if.end565, label %if.then561 if.then561: ; preds = %if.end553 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556) #7 br label %if.end565 if.end565: ; preds = %if.then561, %if.end553 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 0 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580) #7 %283 = load i32, i32* %281, align 8, !tbaa !171 %284 = bitcast %struct.Dav1dRef** %segmap580 to i32* store i32 %283, i32* %284, align 8, !tbaa !171 %285 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not = icmp eq %struct.Dav1dRef* %285, null br i1 %tobool590.not, label %for.inc599, label %if.then591 if.then591: ; preds = %if.end565 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %285) #7 br label %for.inc599 for.inc599: ; preds = %if.end565, %if.then591 %refmvs598 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598) #7 %cmp550.1 = icmp eq i32 %278, 1 br i1 %cmp550.1, label %if.end553.2, label %if.end553.1 if.end603: ; preds = %for.inc599.6, %if.end595.7, %if.end531 store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr443, align 4, !tbaa !93 br label %cleanup637 if.else605: ; preds = %if.then445 %n_tiles606 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 5 %286 = load i32, i32* %n_tiles606, align 4, !tbaa !115 %cols = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %261, i32 0, i32 34, i32 5 %287 = load i32, i32* %cols, align 4, !tbaa !121 %rows = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %261, i32 0, i32 34, i32 9 %288 = load i32, i32* %rows, align 4, !tbaa !122 %mul610 = mul nsw i32 %288, %287 %cmp611 = icmp eq i32 %286, %mul610 br i1 %cmp611, label %if.then613, label %cleanup637 if.then613: ; preds = %if.else605 %n_tile_data614 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 4 %289 = load i32, i32* %n_tile_data614, align 8, !tbaa !114 %tobool615.not = icmp eq i32 %289, 0 br i1 %tobool615.not, label %cleanup637, label %if.end617 if.end617: ; preds = %if.then613 %call618 = call arm_aapcs_vfpcc i32 @dav1d_submit_frame(%struct.Dav1dContext* nonnull %c) #7 %cmp619 = icmp slt i32 %call618, 0 br i1 %cmp619, label %cleanup637, label %do.body623 do.body623: ; preds = %if.end617 %290 = load i32, i32* %n_tile_data614, align 8, !tbaa !114 %tobool625.not = icmp eq i32 %290, 0 call void @llvm.assume(i1 %tobool625.not) store %struct.Dav1dFrameHeader* null, %struct.Dav1dFrameHeader** %frame_hdr443, align 4, !tbaa !93 store i32 0, i32* %n_tiles606, align 4, !tbaa !115 br label %cleanup637 error636: ; preds = %sw.bb305, %cleanup434, %cleanup434.thread1089, %cleanup303, %if.end196, %if.then190, %if.end181, %if.end103, %if.end14, %cond.end, %if.then175 call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.4, i32 0, i32 0)) #7 br label %cleanup637 cleanup637: ; preds = %if.then4.i1007, %if.then.i995, %cleanup434.thread1092, %cleanup434.thread1085, %cleanup93.thread, %sw.epilog439, %land.lhs.true442, %if.else605, %do.body623, %if.end603, %if.end617, %if.then613, %if.then449, %if.then109, %if.then36, %error636, %if.then160, %if.then146, %if.then127 %retval.8 = phi i32 [ -22, %error636 ], [ %call125, %if.then127 ], [ -22, %if.then146 ], [ -34, %if.then160 ], [ %add, %if.then36 ], [ -12, %if.then109 ], [ -22, %if.then449 ], [ -22, %if.then613 ], [ %call618, %if.end617 ], [ %add, %if.end603 ], [ %add, %do.body623 ], [ %add, %if.else605 ], [ %add, %land.lhs.true442 ], [ %add, %sw.epilog439 ], [ %retval.3.ph, %cleanup93.thread ], [ -12, %cleanup434.thread1085 ], [ -12, %cleanup434.thread1092 ], [ -22, %if.then.i995 ], [ -22, %if.then4.i1007 ] call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %0) #7 ret i32 %retval.8 if.end553.1: ; preds = %for.cond545.preheader, %for.inc599 %p556.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0 %arrayidx559.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0, i32 0, i32 2, i32 0 %291 = load i8*, i8** %arrayidx559.1, align 8, !tbaa !26 %tobool560.not.1 = icmp eq i8* %291, null br i1 %tobool560.not.1, label %if.end565.1, label %if.then561.1 if.then561.1: ; preds = %if.end553.1 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.1) #7 br label %if.end565.1 if.end565.1: ; preds = %if.then561.1, %if.end553.1 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.1, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 1 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.1) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.1, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.1) #7 %292 = load i32, i32* %281, align 8, !tbaa !171 %293 = bitcast %struct.Dav1dRef** %segmap580.1 to i32* store i32 %292, i32* %293, align 8, !tbaa !171 %294 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.1 = icmp eq %struct.Dav1dRef* %294, null br i1 %tobool590.not.1, label %for.inc599.1, label %if.then591.1 if.then591.1: ; preds = %if.end565.1 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %294) #7 br label %for.inc599.1 for.inc599.1: ; preds = %if.end565.1, %if.then591.1 %refmvs598.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.1) #7 %cmp550.2 = icmp eq i32 %278, 2 br i1 %cmp550.2, label %if.end553.3, label %if.end553.2 if.end553.2: ; preds = %for.inc599, %for.inc599.1 %p556.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0 %arrayidx559.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0, i32 0, i32 2, i32 0 %295 = load i8*, i8** %arrayidx559.2, align 8, !tbaa !26 %tobool560.not.2 = icmp eq i8* %295, null br i1 %tobool560.not.2, label %if.end565.2, label %if.then561.2 if.then561.2: ; preds = %if.end553.2 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.2) #7 br label %if.end565.2 if.end565.2: ; preds = %if.then561.2, %if.end553.2 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.2, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 2 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.2) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.2, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.2) #7 %296 = load i32, i32* %281, align 8, !tbaa !171 %297 = bitcast %struct.Dav1dRef** %segmap580.2 to i32* store i32 %296, i32* %297, align 8, !tbaa !171 %298 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.2 = icmp eq %struct.Dav1dRef* %298, null br i1 %tobool590.not.2, label %for.inc599.2, label %if.then591.2 if.then591.2: ; preds = %if.end565.2 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %298) #7 br label %for.inc599.2 for.inc599.2: ; preds = %if.end565.2, %if.then591.2 %refmvs598.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.2) #7 %cmp550.3 = icmp eq i32 %278, 3 br i1 %cmp550.3, label %if.end553.4, label %if.end553.3 if.end553.3: ; preds = %for.inc599.1, %for.inc599.2 %p556.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0 %arrayidx559.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0, i32 0, i32 2, i32 0 %299 = load i8*, i8** %arrayidx559.3, align 8, !tbaa !26 %tobool560.not.3 = icmp eq i8* %299, null br i1 %tobool560.not.3, label %if.end565.3, label %if.then561.3 if.then561.3: ; preds = %if.end553.3 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.3) #7 br label %if.end565.3 if.end565.3: ; preds = %if.then561.3, %if.end553.3 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.3, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 3 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.3) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.3, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.3) #7 %300 = load i32, i32* %281, align 8, !tbaa !171 %301 = bitcast %struct.Dav1dRef** %segmap580.3 to i32* store i32 %300, i32* %301, align 8, !tbaa !171 %302 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.3 = icmp eq %struct.Dav1dRef* %302, null br i1 %tobool590.not.3, label %for.inc599.3, label %if.then591.3 if.then591.3: ; preds = %if.end565.3 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %302) #7 br label %for.inc599.3 for.inc599.3: ; preds = %if.end565.3, %if.then591.3 %refmvs598.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.3) #7 %cmp550.4 = icmp eq i32 %278, 4 br i1 %cmp550.4, label %if.end553.5, label %if.end553.4 if.end553.4: ; preds = %for.inc599.2, %for.inc599.3 %p556.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0 %arrayidx559.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0, i32 0, i32 2, i32 0 %303 = load i8*, i8** %arrayidx559.4, align 8, !tbaa !26 %tobool560.not.4 = icmp eq i8* %303, null br i1 %tobool560.not.4, label %if.end565.4, label %if.then561.4 if.then561.4: ; preds = %if.end553.4 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.4) #7 br label %if.end565.4 if.end565.4: ; preds = %if.then561.4, %if.end553.4 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.4, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 4 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.4) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.4, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.4) #7 %304 = load i32, i32* %281, align 8, !tbaa !171 %305 = bitcast %struct.Dav1dRef** %segmap580.4 to i32* store i32 %304, i32* %305, align 8, !tbaa !171 %306 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.4 = icmp eq %struct.Dav1dRef* %306, null br i1 %tobool590.not.4, label %for.inc599.4, label %if.then591.4 if.then591.4: ; preds = %if.end565.4 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %306) #7 br label %for.inc599.4 for.inc599.4: ; preds = %if.end565.4, %if.then591.4 %refmvs598.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.4) #7 %cmp550.5 = icmp eq i32 %278, 5 br i1 %cmp550.5, label %if.end553.6, label %if.end553.5 if.end553.5: ; preds = %for.inc599.3, %for.inc599.4 %p556.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0 %arrayidx559.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0, i32 0, i32 2, i32 0 %307 = load i8*, i8** %arrayidx559.5, align 8, !tbaa !26 %tobool560.not.5 = icmp eq i8* %307, null br i1 %tobool560.not.5, label %if.end565.5, label %if.then561.5 if.then561.5: ; preds = %if.end553.5 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.5) #7 br label %if.end565.5 if.end565.5: ; preds = %if.then561.5, %if.end553.5 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.5, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 5 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.5) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.5, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.5) #7 %308 = load i32, i32* %281, align 8, !tbaa !171 %309 = bitcast %struct.Dav1dRef** %segmap580.5 to i32* store i32 %308, i32* %309, align 8, !tbaa !171 %310 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.5 = icmp eq %struct.Dav1dRef* %310, null br i1 %tobool590.not.5, label %for.inc599.5, label %if.then591.5 if.then591.5: ; preds = %if.end565.5 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %310) #7 br label %for.inc599.5 for.inc599.5: ; preds = %if.end565.5, %if.then591.5 %refmvs598.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.5) #7 %cmp550.6 = icmp eq i32 %278, 6 br i1 %cmp550.6, label %if.end553.7, label %if.end553.6 if.end553.6: ; preds = %for.inc599.4, %for.inc599.5 %p556.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0 %arrayidx559.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0, i32 0, i32 2, i32 0 %311 = load i8*, i8** %arrayidx559.6, align 8, !tbaa !26 %tobool560.not.6 = icmp eq i8* %311, null br i1 %tobool560.not.6, label %if.end565.6, label %if.then561.6 if.then561.6: ; preds = %if.end553.6 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.6) #7 br label %if.end565.6 if.end565.6: ; preds = %if.then561.6, %if.end553.6 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.6, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 6 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.6) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.6, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.6) #7 %312 = load i32, i32* %281, align 8, !tbaa !171 %313 = bitcast %struct.Dav1dRef** %segmap580.6 to i32* store i32 %312, i32* %313, align 8, !tbaa !171 %314 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.6 = icmp eq %struct.Dav1dRef* %314, null br i1 %tobool590.not.6, label %for.inc599.6, label %if.then591.6 if.then591.6: ; preds = %if.end565.6 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %314) #7 br label %for.inc599.6 for.inc599.6: ; preds = %if.end565.6, %if.then591.6 %refmvs598.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.6) #7 %cmp550.7 = icmp eq i32 %278, 7 br i1 %cmp550.7, label %if.end603, label %if.end553.7 if.end553.7: ; preds = %for.inc599.5, %for.inc599.6 %p556.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0 %arrayidx559.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0, i32 0, i32 2, i32 0 %315 = load i8*, i8** %arrayidx559.7, align 8, !tbaa !26 %tobool560.not.7 = icmp eq i8* %315, null br i1 %tobool560.not.7, label %if.end565.7, label %if.then561.7 if.then561.7: ; preds = %if.end553.7 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p556.7) #7 br label %if.end565.7 if.end565.7: ; preds = %if.then561.7, %if.end553.7 call arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture* nonnull %p556.7, %struct.Dav1dThreadPicture* nonnull %p536) #7 %arrayidx573.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx573.7) #7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext* nonnull %arrayidx573.7, %struct.CdfThreadContext* nonnull %arrayidx577) #7 %segmap580.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap580.7) #7 %316 = load i32, i32* %281, align 8, !tbaa !171 %317 = bitcast %struct.Dav1dRef** %segmap580.7 to i32* store i32 %316, i32* %317, align 8, !tbaa !171 %318 = load %struct.Dav1dRef*, %struct.Dav1dRef** %segmap583, align 8, !tbaa !171 %tobool590.not.7 = icmp eq %struct.Dav1dRef* %318, null br i1 %tobool590.not.7, label %if.end595.7, label %if.then591.7 if.then591.7: ; preds = %if.end565.7 call arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef* nonnull %318) #7 br label %if.end595.7 if.end595.7: ; preds = %if.then591.7, %if.end565.7 %refmvs598.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs598.7) #7 br label %if.end603 if.then77.1: ; preds = %if.end81 %p.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.1) #7 br label %if.end81.1 if.end81.1: ; preds = %if.then77.1, %if.end81 %segmap.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.1) #7 %refmvs.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.1) #7 %arrayidx86.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 1 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.1) #7 %arrayidx75.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0, i32 0, i32 2, i32 0 %319 = load i8*, i8** %arrayidx75.2, align 8, !tbaa !26 %tobool76.not.2 = icmp eq i8* %319, null br i1 %tobool76.not.2, label %if.end81.2, label %if.then77.2 if.then77.2: ; preds = %if.end81.1 %p.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.2) #7 br label %if.end81.2 if.end81.2: ; preds = %if.then77.2, %if.end81.1 %segmap.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.2) #7 %refmvs.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.2) #7 %arrayidx86.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 2 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.2) #7 %arrayidx75.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0, i32 0, i32 2, i32 0 %320 = load i8*, i8** %arrayidx75.3, align 8, !tbaa !26 %tobool76.not.3 = icmp eq i8* %320, null br i1 %tobool76.not.3, label %if.end81.3, label %if.then77.3 if.then77.3: ; preds = %if.end81.2 %p.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.3) #7 br label %if.end81.3 if.end81.3: ; preds = %if.then77.3, %if.end81.2 %segmap.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.3) #7 %refmvs.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.3) #7 %arrayidx86.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 3 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.3) #7 %arrayidx75.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0, i32 0, i32 2, i32 0 %321 = load i8*, i8** %arrayidx75.4, align 8, !tbaa !26 %tobool76.not.4 = icmp eq i8* %321, null br i1 %tobool76.not.4, label %if.end81.4, label %if.then77.4 if.then77.4: ; preds = %if.end81.3 %p.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.4) #7 br label %if.end81.4 if.end81.4: ; preds = %if.then77.4, %if.end81.3 %segmap.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.4) #7 %refmvs.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.4) #7 %arrayidx86.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 4 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.4) #7 %arrayidx75.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0, i32 0, i32 2, i32 0 %322 = load i8*, i8** %arrayidx75.5, align 8, !tbaa !26 %tobool76.not.5 = icmp eq i8* %322, null br i1 %tobool76.not.5, label %if.end81.5, label %if.then77.5 if.then77.5: ; preds = %if.end81.4 %p.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.5) #7 br label %if.end81.5 if.end81.5: ; preds = %if.then77.5, %if.end81.4 %segmap.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.5) #7 %refmvs.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.5) #7 %arrayidx86.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 5 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.5) #7 %arrayidx75.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0, i32 0, i32 2, i32 0 %323 = load i8*, i8** %arrayidx75.6, align 8, !tbaa !26 %tobool76.not.6 = icmp eq i8* %323, null br i1 %tobool76.not.6, label %if.end81.6, label %if.then77.6 if.then77.6: ; preds = %if.end81.5 %p.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.6) #7 br label %if.end81.6 if.end81.6: ; preds = %if.then77.6, %if.end81.5 %segmap.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.6) #7 %refmvs.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.6) #7 %arrayidx86.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 6 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.6) #7 %arrayidx75.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0, i32 0, i32 2, i32 0 %324 = load i8*, i8** %arrayidx75.7, align 8, !tbaa !26 %tobool76.not.7 = icmp eq i8* %324, null br i1 %tobool76.not.7, label %if.end81.7, label %if.then77.7 if.then77.7: ; preds = %if.end81.6 %p.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0 call arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture* nonnull %p.7) #7 br label %if.end81.7 if.end81.7: ; preds = %if.then77.7, %if.end81.6 %segmap.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 1 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %segmap.7) #7 %refmvs.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 2 call arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef** nonnull %refmvs.7) #7 %arrayidx86.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 20, i32 7 call arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext* nonnull %arrayidx86.7) #7 br label %cleanup93 } ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 declare dso_local arm_aapcs_vfpcc void @dav1d_init_get_bits(%struct.GetBits*, i8*, i32) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits*, i32) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_uleb128(%struct.GetBits*) local_unnamed_addr #2 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 declare dso_local arm_aapcs_vfpcc %struct.Dav1dRef* @dav1d_ref_create(i32) local_unnamed_addr #2 ; Function Attrs: argmemonly nounwind willreturn writeonly declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg) #3 declare dso_local arm_aapcs_vfpcc void @dav1d_ref_dec(%struct.Dav1dRef**) local_unnamed_addr #2 ; Function Attrs: nofree nounwind readonly declare dso_local arm_aapcs_vfpcc i32 @memcmp(i8* nocapture, i8* nocapture, i32) local_unnamed_addr #4 declare dso_local arm_aapcs_vfpcc void @dav1d_thread_picture_unref(%struct.Dav1dThreadPicture*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_cdf_thread_unref(%struct.CdfThreadContext*) local_unnamed_addr #2 ; Function Attrs: nounwind define internal arm_aapcs_vfpcc i32 @parse_frame_hdr(%struct.Dav1dContext* %c, %struct.GetBits* %gb) unnamed_addr #0 { entry: %shifted_frame_offset = alloca [8 x i32], align 4 %used_frame = alloca [8 x i32], align 4 %seq_hdr = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 7 %0 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr, align 4, !tbaa !92 %frame_hdr = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %1 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr, align 4, !tbaa !93 %reduced_still_picture_header = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 13 %2 = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %tobool.not = icmp eq i32 %2, 0 br i1 %tobool.not, label %land.end, label %if.end13.thread if.end13.thread: ; preds = %entry %show_existing_frame3230 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 7 store i32 0, i32* %show_existing_frame3230, align 4, !tbaa !119 br label %cond.end.thread land.end: ; preds = %entry %call = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1 = icmp ne i32 %call, 0 %land.ext = zext i1 %tobool1 to i32 %show_existing_frame = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 7 store i32 %land.ext, i32* %show_existing_frame, align 4, !tbaa !119 br i1 %tobool1, label %if.then, label %if.end13 if.then: ; preds = %land.end %call4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %existing_frame_idx = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 8 store i32 %call4, i32* %existing_frame_idx, align 8, !tbaa !147 %decoder_model_info_present = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 19 %3 = load i32, i32* %decoder_model_info_present, align 4, !tbaa !34 %tobool5.not = icmp eq i32 %3, 0 br i1 %tobool5.not, label %if.end, label %land.lhs.true land.lhs.true: ; preds = %if.then %equal_picture_interval = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 17 %4 = load i32, i32* %equal_picture_interval, align 4, !tbaa !46 %tobool6.not = icmp eq i32 %4, 0 br i1 %tobool6.not, label %if.then7, label %if.end if.then7: ; preds = %land.lhs.true %frame_presentation_delay_length = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 23 %5 = load i32, i32* %frame_presentation_delay_length, align 4, !tbaa !172 %call8 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %5) #7 %frame_presentation_delay = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 10 store i32 %call8, i32* %frame_presentation_delay, align 8, !tbaa !173 br label %if.end if.end: ; preds = %if.then7, %land.lhs.true, %if.then %frame_id_numbers_present = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 27 %6 = load i32, i32* %frame_id_numbers_present, align 4, !tbaa !62 %tobool9.not = icmp eq i32 %6, 0 br i1 %tobool9.not, label %cleanup2152, label %if.then10 if.then10: ; preds = %if.end %frame_id_n_bits = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 29 %7 = load i32, i32* %frame_id_n_bits, align 4, !tbaa !174 %call11 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %7) #7 %frame_id = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 9 store i32 %call11, i32* %frame_id, align 4, !tbaa !175 br label %cleanup2152 if.end13: ; preds = %land.end %.pre = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %tobool15.not = icmp eq i32 %.pre, 0 br i1 %tobool15.not, label %cond.end, label %cond.end.thread cond.end.thread: ; preds = %if.end13, %if.end13.thread %frame_type3493 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 1 store i32 0, i32* %frame_type3493, align 8, !tbaa !170 br label %lor.end.thread cond.end: ; preds = %if.end13 %call16 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %.pre3467 = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %frame_type = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 1 store i32 %call16, i32* %frame_type, align 8, !tbaa !170 %tobool18.not = icmp eq i32 %.pre3467, 0 br i1 %tobool18.not, label %lor.end, label %lor.end.thread lor.end.thread: ; preds = %cond.end.thread, %cond.end %frame_type3497 = phi i32* [ %frame_type3493, %cond.end.thread ], [ %frame_type, %cond.end ] %show_frame3232 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 11 store i32 1, i32* %show_frame3232, align 4, !tbaa !176 br label %if.then23 lor.end: ; preds = %cond.end %call19 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool20 = icmp ne i32 %call19, 0 %lor.ext = zext i1 %tobool20 to i32 %show_frame = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 11 store i32 %lor.ext, i32* %show_frame, align 4, !tbaa !176 br i1 %tobool20, label %if.then23, label %if.else if.then23: ; preds = %lor.end.thread, %lor.end %frame_type3496 = phi i32* [ %frame_type3497, %lor.end.thread ], [ %frame_type, %lor.end ] %show_frame3234 = phi i32* [ %show_frame3232, %lor.end.thread ], [ %show_frame, %lor.end ] %decoder_model_info_present24 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 19 %8 = load i32, i32* %decoder_model_info_present24, align 4, !tbaa !34 %tobool25.not = icmp eq i32 %8, 0 br i1 %tobool25.not, label %if.end35, label %land.lhs.true26 land.lhs.true26: ; preds = %if.then23 %equal_picture_interval27 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 17 %9 = load i32, i32* %equal_picture_interval27, align 4, !tbaa !46 %tobool28.not = icmp eq i32 %9, 0 br i1 %tobool28.not, label %if.then29, label %if.end35 if.then29: ; preds = %land.lhs.true26 %frame_presentation_delay_length30 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 23 %10 = load i32, i32* %frame_presentation_delay_length30, align 4, !tbaa !172 %call31 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %10) #7 %frame_presentation_delay32 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 10 store i32 %call31, i32* %frame_presentation_delay32, align 8, !tbaa !173 br label %if.end35 if.else: ; preds = %lor.end %call34 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %showable_frame = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 12 store i32 %call34, i32* %showable_frame, align 8, !tbaa !177 br label %if.end35 if.end35: ; preds = %if.then23, %land.lhs.true26, %if.then29, %if.else %frame_type3495 = phi i32* [ %frame_type3496, %if.then23 ], [ %frame_type3496, %land.lhs.true26 ], [ %frame_type3496, %if.then29 ], [ %frame_type, %if.else ] %show_frame3233 = phi i32* [ %show_frame3234, %if.then23 ], [ %show_frame3234, %land.lhs.true26 ], [ %show_frame3234, %if.then29 ], [ %show_frame, %if.else ] %11 = load i32, i32* %frame_type3495, align 8, !tbaa !170 switch i32 %11, label %lor.lhs.false42 [ i32 0, label %land.lhs.true37 i32 3, label %lor.end48 ] land.lhs.true37: ; preds = %if.end35 %12 = load i32, i32* %show_frame3233, align 4, !tbaa !176 %tobool39.not = icmp eq i32 %12, 0 br i1 %tobool39.not, label %lor.lhs.false42, label %lor.end48 lor.lhs.false42: ; preds = %if.end35, %land.lhs.true37 %13 = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %tobool44.not = icmp eq i32 %13, 0 br i1 %tobool44.not, label %lor.rhs45, label %lor.end48 lor.rhs45: ; preds = %lor.lhs.false42 %call46 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool47 = icmp ne i32 %call46, 0 br label %lor.end48 lor.end48: ; preds = %if.end35, %lor.rhs45, %lor.lhs.false42, %land.lhs.true37 %14 = phi i1 [ true, %lor.lhs.false42 ], [ true, %land.lhs.true37 ], [ %tobool47, %lor.rhs45 ], [ true, %if.end35 ] %lor.ext49 = zext i1 %14 to i32 %error_resilient_mode = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 13 store i32 %lor.ext49, i32* %error_resilient_mode, align 4, !tbaa !178 %call50 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %disable_cdf_update = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 14 store i32 %call50, i32* %disable_cdf_update, align 8, !tbaa !179 %screen_content_tools = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 40 %15 = load i32, i32* %screen_content_tools, align 4, !tbaa !68 %cmp51 = icmp eq i32 %15, 2 br i1 %cmp51, label %cond.true52, label %cond.end56 cond.true52: ; preds = %lor.end48 %call53 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %cond.end56 cond.end56: ; preds = %lor.end48, %cond.true52 %cond57 = phi i32 [ %call53, %cond.true52 ], [ %15, %lor.end48 ] %allow_screen_content_tools = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 15 store i32 %cond57, i32* %allow_screen_content_tools, align 4, !tbaa !180 %tobool59.not = icmp eq i32 %cond57, 0 br i1 %tobool59.not, label %if.end71, label %if.then60 if.then60: ; preds = %cond.end56 %force_integer_mv = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 41 %16 = load i32, i32* %force_integer_mv, align 4, !tbaa !75 %cmp61 = icmp eq i32 %16, 2 br i1 %cmp61, label %cond.true62, label %if.end71 cond.true62: ; preds = %if.then60 %call63 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %if.end71 if.end71: ; preds = %cond.end56, %cond.true62, %if.then60 %.sink = phi i32 [ %call63, %cond.true62 ], [ %16, %if.then60 ], [ 0, %cond.end56 ] %force_integer_mv70 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 16 store i32 %.sink, i32* %force_integer_mv70, align 8, !tbaa !181 %17 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and = and i32 %17, 1 %tobool73.not = icmp eq i32 %and, 0 br i1 %tobool73.not, label %if.then74, label %if.end76 if.then74: ; preds = %if.end71 %force_integer_mv75 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 16 store i32 1, i32* %force_integer_mv75, align 8, !tbaa !181 br label %if.end76 if.end76: ; preds = %if.then74, %if.end71 %frame_id_numbers_present77 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 27 %18 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool78.not = icmp eq i32 %18, 0 br i1 %tobool78.not, label %if.end83, label %if.then79 if.then79: ; preds = %if.end76 %frame_id_n_bits80 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 29 %19 = load i32, i32* %frame_id_n_bits80, align 4, !tbaa !174 %call81 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %19) #7 %frame_id82 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 9 store i32 %call81, i32* %frame_id82, align 4, !tbaa !175 br label %if.end83 if.end83: ; preds = %if.then79, %if.end76 %20 = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %tobool85.not = icmp eq i32 %20, 0 br i1 %tobool85.not, label %cond.false87, label %cond.end95 cond.false87: ; preds = %if.end83 %21 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %cmp89 = icmp eq i32 %21, 3 br i1 %cmp89, label %cond.end95, label %cond.false91 cond.false91: ; preds = %cond.false87 %call92 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %cond.end95 cond.end95: ; preds = %cond.false91, %cond.false87, %if.end83 %cond96 = phi i32 [ 0, %if.end83 ], [ %call92, %cond.false91 ], [ 1, %cond.false87 ] %frame_size_override = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 17 store i32 %cond96, i32* %frame_size_override, align 4, !tbaa !182 %order_hint = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 37 %22 = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool97.not = icmp eq i32 %22, 0 br i1 %tobool97.not, label %cond.end101, label %cond.true98 cond.true98: ; preds = %cond.end95 %order_hint_n_bits = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 42 %23 = load i32, i32* %order_hint_n_bits, align 4, !tbaa !67 %call99 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %23) #7 br label %cond.end101 cond.end101: ; preds = %cond.end95, %cond.true98 %cond102 = phi i32 [ %call99, %cond.true98 ], [ 0, %cond.end95 ] %frame_offset = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 4 store i32 %cond102, i32* %frame_offset, align 8, !tbaa !183 %24 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool104.not = icmp eq i32 %24, 0 br i1 %tobool104.not, label %land.lhs.true105, label %cond.end112 land.lhs.true105: ; preds = %cond.end101 %25 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and107 = and i32 %25, 1 %tobool108.not = icmp eq i32 %and107, 0 br i1 %tobool108.not, label %cond.end112, label %cond.true109 cond.true109: ; preds = %land.lhs.true105 %call110 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 br label %cond.end112 cond.end112: ; preds = %cond.end101, %land.lhs.true105, %cond.true109 %cond113 = phi i32 [ %call110, %cond.true109 ], [ 7, %land.lhs.true105 ], [ 7, %cond.end101 ] %primary_ref_frame = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 18 store i32 %cond113, i32* %primary_ref_frame, align 8, !tbaa !184 %decoder_model_info_present114 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 19 %26 = load i32, i32* %decoder_model_info_present114, align 4, !tbaa !34 %tobool115.not = icmp eq i32 %26, 0 br i1 %tobool115.not, label %if.end142, label %if.then116 if.then116: ; preds = %cond.end112 %call117 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %buffer_removal_time_present = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 19 store i32 %call117, i32* %buffer_removal_time_present, align 4, !tbaa !185 %tobool119.not = icmp eq i32 %call117, 0 br i1 %tobool119.not, label %if.end142, label %for.cond.preheader for.cond.preheader: ; preds = %if.then116 %27 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr, align 4, !tbaa !92 %num_operating_points3427 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %27, i32 0, i32 10 %28 = load i32, i32* %num_operating_points3427, align 4, !tbaa !36 %cmp1223428 = icmp sgt i32 %28, 0 br i1 %cmp1223428, label %for.body.lr.ph, label %if.end142 for.body.lr.ph: ; preds = %for.cond.preheader %spatial_id = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 6 %temporal_id = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 5 %buffer_removal_delay_length = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 22 br label %for.body for.body: ; preds = %for.body.lr.ph, %if.end140 %29 = phi %struct.Dav1dSequenceHeader* [ %27, %for.body.lr.ph ], [ %40, %if.end140 ] %i.03429 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %if.end140 ] %decoder_model_param_present = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 11, i32 %i.03429, i32 5 %30 = load i32, i32* %decoder_model_param_present, align 4, !tbaa !42 %tobool125.not = icmp eq i32 %30, 0 br i1 %tobool125.not, label %if.end140, label %if.then126 if.then126: ; preds = %for.body %idc = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 11, i32 %i.03429, i32 3 %31 = load i32, i32* %idc, align 4, !tbaa !37 %tobool132.not = icmp eq i32 %31, 0 br i1 %tobool132.not, label %if.then137, label %lor.lhs.false133 lor.lhs.false133: ; preds = %if.then126 %32 = load i32, i32* %spatial_id, align 8, !tbaa !113 %add = add nsw i32 %32, 8 %33 = load i32, i32* %temporal_id, align 4, !tbaa !98 %34 = shl nuw i32 1, %33 %35 = shl nuw i32 1, %add %36 = or i32 %34, %35 %37 = and i32 %36, %31 %38 = icmp eq i32 %37, %36 br i1 %38, label %if.then137, label %if.end140 if.then137: ; preds = %lor.lhs.false133, %if.then126 %39 = load i32, i32* %buffer_removal_delay_length, align 4, !tbaa !50 %call138 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %39) #7 %buffer_removal_time = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 20, i32 %i.03429, i32 0 store i32 %call138, i32* %buffer_removal_time, align 4, !tbaa !186 %.pre3468 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr, align 4, !tbaa !92 br label %if.end140 if.end140: ; preds = %lor.lhs.false133, %if.then137, %for.body %40 = phi %struct.Dav1dSequenceHeader* [ %29, %lor.lhs.false133 ], [ %.pre3468, %if.then137 ], [ %29, %for.body ] %inc = add nuw nsw i32 %i.03429, 1 %num_operating_points = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %40, i32 0, i32 10 %41 = load i32, i32* %num_operating_points, align 4, !tbaa !36 %cmp122 = icmp slt i32 %inc, %41 br i1 %cmp122, label %for.body, label %if.end142 if.end142: ; preds = %if.end140, %for.cond.preheader, %if.then116, %cond.end112 %42 = load i32, i32* %frame_type3495, align 8, !tbaa !170 switch i32 %42, label %if.else192 [ i32 0, label %land.lhs.true151 i32 2, label %cond.end157 ] land.lhs.true151: ; preds = %if.end142 %43 = load i32, i32* %show_frame3233, align 4, !tbaa !176 %tobool153.not = icmp eq i32 %43, 0 br i1 %tobool153.not, label %cond.end157, label %cond.end157.thread cond.end157.thread: ; preds = %land.lhs.true151 %refresh_frame_flags3245 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 21 store i32 255, i32* %refresh_frame_flags3245, align 8, !tbaa !188 br label %if.end178 cond.end157: ; preds = %if.end142, %land.lhs.true151 %call156 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %refresh_frame_flags = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 21 store i32 %call156, i32* %refresh_frame_flags, align 8, !tbaa !188 %cmp160.not = icmp eq i32 %call156, 255 br i1 %cmp160.not, label %if.end178, label %land.lhs.true161 land.lhs.true161: ; preds = %cond.end157 %44 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool163.not = icmp eq i32 %44, 0 br i1 %tobool163.not, label %if.end178, label %land.lhs.true164 land.lhs.true164: ; preds = %land.lhs.true161 %45 = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool166.not = icmp eq i32 %45, 0 br i1 %tobool166.not, label %if.end178, label %for.cond169.preheader for.cond169.preheader: ; preds = %land.lhs.true164 %order_hint_n_bits173 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 42 %46 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %46) #7 %47 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %47) #7 %48 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %48) #7 %49 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %49) #7 %50 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %50) #7 %51 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %51) #7 %52 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %52) #7 %53 = load i32, i32* %order_hint_n_bits173, align 4, !tbaa !67 %call174.7 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %53) #7 br label %if.end178 if.end178: ; preds = %for.cond169.preheader, %cond.end157.thread, %land.lhs.true164, %land.lhs.true161, %cond.end157 %call179 = tail call arm_aapcs_vfpcc i32 @read_frame_size(%struct.Dav1dContext* %c, %struct.GetBits* %gb, i32 0) %cmp180 = icmp slt i32 %call179, 0 br i1 %cmp180, label %error, label %if.end182 if.end182: ; preds = %if.end178 %54 = load i32, i32* %allow_screen_content_tools, align 4, !tbaa !180 %tobool184.not = icmp eq i32 %54, 0 br i1 %tobool184.not, label %land.end190, label %land.lhs.true185 land.lhs.true185: ; preds = %if.end182 %enabled = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 %55 = load i32, i32* %enabled, align 4, !tbaa !189 %tobool186.not = icmp eq i32 %55, 0 br i1 %tobool186.not, label %land.rhs187, label %land.end190 land.rhs187: ; preds = %land.lhs.true185 %call188 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool189 = icmp ne i32 %call188, 0 br label %land.end190 land.end190: ; preds = %land.rhs187, %land.lhs.true185, %if.end182 %56 = phi i1 [ false, %land.lhs.true185 ], [ false, %if.end182 ], [ %tobool189, %land.rhs187 ] %land.ext191 = zext i1 %56 to i32 %allow_intrabc = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 store i32 %land.ext191, i32* %allow_intrabc, align 8, !tbaa !190 br label %if.end497 if.else192: ; preds = %if.end142 %allow_intrabc193 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 store i32 0, i32* %allow_intrabc193, align 8, !tbaa !190 %cmp195 = icmp eq i32 %42, 3 br i1 %cmp195, label %cond.end199, label %cond.false197 cond.false197: ; preds = %if.else192 %call198 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 br label %cond.end199 cond.end199: ; preds = %if.else192, %cond.false197 %cond200 = phi i32 [ %call198, %cond.false197 ], [ 255, %if.else192 ] %refresh_frame_flags201 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 21 store i32 %cond200, i32* %refresh_frame_flags201, align 8, !tbaa !188 %57 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool203.not = icmp eq i32 %57, 0 br i1 %tobool203.not, label %if.end218, label %land.lhs.true204 land.lhs.true204: ; preds = %cond.end199 %58 = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool206.not = icmp eq i32 %58, 0 br i1 %tobool206.not, label %land.end224.thread, label %for.cond209.preheader for.cond209.preheader: ; preds = %land.lhs.true204 %order_hint_n_bits213 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 42 %59 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %59) #7 %60 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %60) #7 %61 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %61) #7 %62 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %62) #7 %63 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %63) #7 %64 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %64) #7 %65 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %65) #7 %66 = load i32, i32* %order_hint_n_bits213, align 4, !tbaa !67 %call214.7 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %66) #7 br label %if.end218 if.end218: ; preds = %for.cond209.preheader, %cond.end199 %.pr = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool220.not = icmp eq i32 %.pr, 0 br i1 %tobool220.not, label %land.end224.thread, label %land.end224 land.end224.thread: ; preds = %if.end218, %land.lhs.true204 %frame_ref_short_signaling3250 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 27 store i32 0, i32* %frame_ref_short_signaling3250, align 4, !tbaa !191 br label %if.end429.thread land.end224: ; preds = %if.end218 %call222 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool223 = icmp ne i32 %call222, 0 %land.ext225 = zext i1 %tobool223 to i32 %frame_ref_short_signaling = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 27 store i32 %land.ext225, i32* %frame_ref_short_signaling, align 4, !tbaa !191 br i1 %tobool223, label %if.then228, label %if.end429.thread if.then228: ; preds = %land.end224 %call229 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx230 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 0 store i32 %call229, i32* %arrayidx230, align 8, !tbaa !51 %arrayidx232 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 2 store i32 -1, i32* %arrayidx232, align 8, !tbaa !51 %arrayidx234 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 1 store i32 -1, i32* %arrayidx234, align 4, !tbaa !51 %call235 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx237 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 3 store i32 %call235, i32* %arrayidx237, align 4, !tbaa !51 %arrayidx239 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 6 store i32 -1, i32* %arrayidx239, align 8, !tbaa !51 %arrayidx241 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 5 store i32 -1, i32* %arrayidx241, align 4, !tbaa !51 %arrayidx243 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 4 store i32 -1, i32* %arrayidx243, align 8, !tbaa !51 %67 = bitcast [8 x i32]* %shifted_frame_offset to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %67) #7 %order_hint_n_bits244 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 42 %68 = load i32, i32* %order_hint_n_bits244, align 4, !tbaa !67 %sub = add nsw i32 %68, -1 %shl = shl nuw i32 1, %sub %tobool.not.i = icmp eq i32 %68, 0 %sub2.i = add nsw i32 %shl, -1 %frame_hdr252.us = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 0, i32 0, i32 0, i32 1 %69 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us, align 4, !tbaa !168 %tobool253.not.us = icmp eq %struct.Dav1dFrameHeader* %69, null br i1 %tobool.not.i, label %for.body249.us.preheader, label %for.body249.preheader for.body249.preheader: ; preds = %if.then228 br i1 %tobool253.not.us, label %cleanup426, label %if.end.i for.body249.us.preheader: ; preds = %if.then228 br i1 %tobool253.not.us, label %cleanup426, label %get_poc_diff.exit.us get_poc_diff.exit.us: ; preds = %for.body249.us.preheader %arrayidx266.us = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 0 store i32 %shl, i32* %arrayidx266.us, align 4, !tbaa !51 %frame_hdr252.us.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0, i32 0, i32 1 %70 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.1, align 4, !tbaa !168 %tobool253.not.us.1 = icmp eq %struct.Dav1dFrameHeader* %70, null br i1 %tobool253.not.us.1, label %cleanup426, label %get_poc_diff.exit.us.1 if.end.i: ; preds = %for.body249.preheader %71 = load i32, i32* %frame_offset, align 8, !tbaa !183 %frame_offset262 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %69, i32 0, i32 4 %72 = load i32, i32* %frame_offset262, align 8, !tbaa !183 %sub1.i = sub nsw i32 %72, %71 %and.i = and i32 %sub1.i, %sub2.i %and3.i = and i32 %sub1.i, %shl %sub4.i = sub nsw i32 %and.i, %and3.i %add265 = add nsw i32 %sub4.i, %shl %arrayidx266 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 0 store i32 %add265, i32* %arrayidx266, align 4, !tbaa !51 %frame_hdr252.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 1, i32 0, i32 0, i32 1 %73 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.1, align 4, !tbaa !168 %tobool253.not.1 = icmp eq %struct.Dav1dFrameHeader* %73, null br i1 %tobool253.not.1, label %cleanup426, label %if.end.i.1 for.end269: ; preds = %get_poc_diff.exit.us.6, %if.end.i.7 %add265.7.sink = phi i32 [ %add265.7, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %74 = phi i32 [ %add265.6, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %75 = phi i32 [ %add265.5, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %76 = phi i32 [ %add265.4, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %77 = phi i32 [ %add265.3, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %78 = phi i32 [ %add265.2, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %79 = phi i32 [ %add265.1, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %80 = phi i32 [ %add265, %if.end.i.7 ], [ %shl, %get_poc_diff.exit.us.6 ] %arrayidx266.7 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 7 store i32 %add265.7.sink, i32* %arrayidx266.7, align 4, !tbaa !51 %81 = bitcast [8 x i32]* %used_frame to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %81) #7 call void @llvm.memset.p0i8.i32(i8* nonnull align 4 dereferenceable(32) %81, i8 0, i32 32, i1 false) %82 = load i32, i32* %arrayidx230, align 8, !tbaa !51 %arrayidx272 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %82 store i32 1, i32* %arrayidx272, align 4, !tbaa !51 %arrayidx275 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %call235 store i32 1, i32* %arrayidx275, align 4, !tbaa !51 %arrayidx281 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 0 %arrayidx282 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 0 %83 = load i32, i32* %arrayidx282, align 4, !tbaa !51 %tobool283.not = icmp ne i32 %83, 0 %cmp285.not = icmp slt i32 %80, %shl %or.cond = or i1 %cmp285.not, %tobool283.not %cmp287.not = icmp slt i32 %80, -1 %or.cond3108 = or i1 %cmp287.not, %or.cond br i1 %or.cond3108, label %if.end291, label %if.then288 if.then288: ; preds = %for.end269 store i32 0, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291 if.end291: ; preds = %if.then288, %for.end269 %84 = phi i32 [ -1, %for.end269 ], [ 0, %if.then288 ] %latest_frame_offset.1 = phi i32 [ -1, %for.end269 ], [ %80, %if.then288 ] %arrayidx281.1 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 1 %arrayidx282.1 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 1 %85 = load i32, i32* %arrayidx282.1, align 4, !tbaa !51 %tobool283.not.1 = icmp ne i32 %85, 0 %cmp285.not.1 = icmp slt i32 %79, %shl %or.cond.1 = or i1 %cmp285.not.1, %tobool283.not.1 %cmp287.not.1 = icmp slt i32 %79, %latest_frame_offset.1 %or.cond3108.1 = or i1 %cmp287.not.1, %or.cond.1 br i1 %or.cond3108.1, label %if.end291.1, label %if.then288.1 if.then297: ; preds = %if.end291.7 %arrayidx300 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %451 store i32 1, i32* %arrayidx300, align 4, !tbaa !51 %.pre3469 = load i32, i32* %arrayidx282, align 4, !tbaa !51 br label %if.end301 if.end301: ; preds = %if.then297, %if.end291.7 %86 = phi i32 [ %.pre3469, %if.then297 ], [ %83, %if.end291.7 ] %tobool310.not = icmp eq i32 %86, 0 %cmp312.not = icmp sge i32 %80, %shl %or.cond3109.not = and i1 %cmp312.not, %tobool310.not %cmp314 = icmp ne i32 %80, 2147483647 %or.cond3110 = and i1 %cmp314, %or.cond3109.not br i1 %or.cond3110, label %if.then315, label %if.end318 if.then315: ; preds = %if.end301 store i32 0, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318 if.end318: ; preds = %if.then315, %if.end301 %87 = phi i32 [ -1, %if.end301 ], [ 0, %if.then315 ] %earliest_frame_offset.1 = phi i32 [ 2147483647, %if.end301 ], [ %80, %if.then315 ] %88 = load i32, i32* %arrayidx282.1, align 4, !tbaa !51 %tobool310.not.1 = icmp eq i32 %88, 0 %cmp312.not.1 = icmp sge i32 %79, %shl %or.cond3109.not.1 = and i1 %cmp312.not.1, %tobool310.not.1 %cmp314.1 = icmp slt i32 %79, %earliest_frame_offset.1 %or.cond3110.1 = and i1 %cmp314.1, %or.cond3109.not.1 br i1 %or.cond3110.1, label %if.then315.1, label %if.end318.1 if.then324: ; preds = %if.end318.7.thread, %if.end318.7 %89 = phi i32 [ 7, %if.end318.7.thread ], [ %437, %if.end318.7 ] %arrayidx327 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %89 store i32 1, i32* %arrayidx327, align 4, !tbaa !51 %.pre3470 = load i32, i32* %arrayidx282, align 4, !tbaa !51 br label %if.end328 if.end328: ; preds = %if.then324, %if.end318.7 %90 = phi i32 [ %.pre3470, %if.then324 ], [ %86, %if.end318.7 ] %tobool337.not = icmp eq i32 %90, 0 %or.cond3111.not = and i1 %cmp312.not, %tobool337.not %or.cond3112 = and i1 %cmp314, %or.cond3111.not br i1 %or.cond3112, label %if.then342, label %if.end345 if.then342: ; preds = %if.end328 store i32 0, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345 if.end345: ; preds = %if.then342, %if.end328 %91 = phi i32 [ -1, %if.end328 ], [ 0, %if.then342 ] %earliest_frame_offset.3 = phi i32 [ 2147483647, %if.end328 ], [ %80, %if.then342 ] %92 = load i32, i32* %arrayidx282.1, align 4, !tbaa !51 %tobool337.not.1 = icmp eq i32 %92, 0 %or.cond3111.not.1 = and i1 %cmp312.not.1, %tobool337.not.1 %cmp341.1 = icmp slt i32 %79, %earliest_frame_offset.3 %or.cond3112.1 = and i1 %cmp341.1, %or.cond3111.not.1 br i1 %or.cond3112.1, label %if.then342.1, label %if.end345.1 if.then351: ; preds = %if.end345.7.thread, %if.end345.7 %93 = phi i32 [ 7, %if.end345.7.thread ], [ %425, %if.end345.7 ] %arrayidx354 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %93 store i32 1, i32* %arrayidx354, align 4, !tbaa !51 br label %for.body360.preheader for.body360.preheader: ; preds = %if.then351, %if.end345.7 br label %for.body360 for.body360: ; preds = %for.body360.preheader, %for.inc392 %i356.03417 = phi i32 [ %inc393, %for.inc392 ], [ 1, %for.body360.preheader ] %arrayidx362 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 %i356.03417 %94 = load i32, i32* %arrayidx362, align 4, !tbaa !51 %cmp363 = icmp slt i32 %94, 0 br i1 %cmp363, label %for.body368.preheader, label %for.inc392 for.body368.preheader: ; preds = %for.body360 %95 = load i32, i32* %arrayidx281, align 4, !tbaa !51 %96 = load i32, i32* %arrayidx282, align 4, !tbaa !51 %tobool372.not = icmp ne i32 %96, 0 %cmp374 = icmp sge i32 %95, %shl %or.cond3113.not = or i1 %cmp374, %tobool372.not %cmp376.not = icmp slt i32 %95, -1 %or.cond3114 = or i1 %cmp376.not, %or.cond3113.not br i1 %or.cond3114, label %if.end380, label %if.then377 if.then377: ; preds = %for.body368.preheader store i32 0, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380 if.end380: ; preds = %if.then377, %for.body368.preheader %97 = phi i32 [ %94, %for.body368.preheader ], [ 0, %if.then377 ] %latest_frame_offset.3 = phi i32 [ -1, %for.body368.preheader ], [ %95, %if.then377 ] %98 = load i32, i32* %arrayidx281.1, align 4, !tbaa !51 %99 = load i32, i32* %arrayidx282.1, align 4, !tbaa !51 %tobool372.not.1 = icmp ne i32 %99, 0 %cmp374.1 = icmp sge i32 %98, %shl %or.cond3113.not.1 = or i1 %cmp374.1, %tobool372.not.1 %cmp376.not.1 = icmp slt i32 %98, %latest_frame_offset.3 %or.cond3114.1 = or i1 %cmp376.not.1, %or.cond3113.not.1 br i1 %or.cond3114.1, label %if.end380.1, label %if.then377.1 if.then386: ; preds = %if.end380.7 %arrayidx389 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 %414 store i32 1, i32* %arrayidx389, align 4, !tbaa !51 br label %for.inc392 for.inc392: ; preds = %for.body360, %if.then386, %if.end380.7 %inc393 = add nuw nsw i32 %i356.03417, 1 %exitcond3458.not = icmp eq i32 %inc393, 7 br i1 %exitcond3458.not, label %for.body400.preheader, label %for.body360 for.body400.preheader: ; preds = %for.inc392 %100 = load i32, i32* %arrayidx281, align 4, !tbaa !51 %cmp403.not = icmp eq i32 %100, 2147483647 %spec.select = sext i1 %cmp403.not to i32 %101 = load i32, i32* %arrayidx281.1, align 4, !tbaa !51 %cmp403.1 = icmp slt i32 %101, %100 %spec.select.1 = select i1 %cmp403.1, i32 1, i32 %spec.select %spec.select3115.1 = select i1 %cmp403.1, i32 %101, i32 %100 %102 = load i32, i32* %arrayidx281.2, align 4, !tbaa !51 %cmp403.2 = icmp slt i32 %102, %spec.select3115.1 %spec.select.2 = select i1 %cmp403.2, i32 2, i32 %spec.select.1 %spec.select3115.2 = select i1 %cmp403.2, i32 %102, i32 %spec.select3115.1 %103 = load i32, i32* %arrayidx281.3, align 4, !tbaa !51 %cmp403.3 = icmp slt i32 %103, %spec.select3115.2 %spec.select.3 = select i1 %cmp403.3, i32 3, i32 %spec.select.2 %spec.select3115.3 = select i1 %cmp403.3, i32 %103, i32 %spec.select3115.2 %104 = load i32, i32* %arrayidx281.4, align 4, !tbaa !51 %cmp403.4 = icmp slt i32 %104, %spec.select3115.3 %spec.select.4 = select i1 %cmp403.4, i32 4, i32 %spec.select.3 %spec.select3115.4 = select i1 %cmp403.4, i32 %104, i32 %spec.select3115.3 %105 = load i32, i32* %arrayidx281.5, align 4, !tbaa !51 %cmp403.5 = icmp slt i32 %105, %spec.select3115.4 %spec.select.5 = select i1 %cmp403.5, i32 5, i32 %spec.select.4 %spec.select3115.5 = select i1 %cmp403.5, i32 %105, i32 %spec.select3115.4 %106 = load i32, i32* %arrayidx281.6, align 4, !tbaa !51 %cmp403.6 = icmp slt i32 %106, %spec.select3115.5 %spec.select.6 = select i1 %cmp403.6, i32 6, i32 %spec.select.5 %spec.select3115.6 = select i1 %cmp403.6, i32 %106, i32 %spec.select3115.5 %107 = load i32, i32* %arrayidx281.7, align 4, !tbaa !51 %cmp403.7 = icmp slt i32 %107, %spec.select3115.6 %spec.select.7 = select i1 %cmp403.7, i32 7, i32 %spec.select.6 %108 = load i32, i32* %arrayidx230, align 4, !tbaa !51 %cmp417 = icmp slt i32 %108, 0 br i1 %cmp417, label %if.then418, label %for.inc422 if.then418: ; preds = %for.body400.preheader store i32 %spec.select.7, i32* %arrayidx230, align 4, !tbaa !51 br label %for.inc422 for.inc422: ; preds = %for.body400.preheader, %if.then418 %109 = load i32, i32* %arrayidx234, align 4, !tbaa !51 %cmp417.1 = icmp slt i32 %109, 0 br i1 %cmp417.1, label %if.then418.1, label %for.inc422.1 cleanup426: ; preds = %for.body249.preheader, %if.end.i, %if.end.i.1, %if.end.i.2, %if.end.i.3, %if.end.i.4, %if.end.i.5, %if.end.i.6, %for.body249.us.preheader, %get_poc_diff.exit.us, %get_poc_diff.exit.us.1, %get_poc_diff.exit.us.2, %get_poc_diff.exit.us.3, %get_poc_diff.exit.us.4, %get_poc_diff.exit.us.5, %get_poc_diff.exit.us.6 call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %67) #7 br label %error if.end429.thread: ; preds = %land.end224.thread, %land.end224 %frame_ref_short_signaling3251.ph = phi i32* [ %frame_ref_short_signaling, %land.end224 ], [ %frame_ref_short_signaling3250, %land.end224.thread ] %delta_frame_id_n_bits3500 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 28 br label %if.then437 if.end429: ; preds = %for.inc422.5, %if.then418.6 call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %81) #7 call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %67) #7 %.pre3471 = load i32, i32* %frame_ref_short_signaling, align 4, !tbaa !191 %delta_frame_id_n_bits = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 28 %tobool436.not = icmp eq i32 %.pre3471, 0 br i1 %tobool436.not, label %if.then437, label %if.end441 if.then437: ; preds = %if.end429.thread, %if.end429 %delta_frame_id_n_bits3505 = phi i32* [ %delta_frame_id_n_bits3500, %if.end429.thread ], [ %delta_frame_id_n_bits, %if.end429 ] %frame_ref_short_signaling32513503 = phi i32* [ %frame_ref_short_signaling3251.ph, %if.end429.thread ], [ %frame_ref_short_signaling, %if.end429 ] %call438 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 0 store i32 %call438, i32* %arrayidx440, align 4, !tbaa !51 br label %if.end441 if.end441: ; preds = %if.then437, %if.end429 %delta_frame_id_n_bits3504 = phi i32* [ %delta_frame_id_n_bits3505, %if.then437 ], [ %delta_frame_id_n_bits, %if.end429 ] %frame_ref_short_signaling32513502 = phi i32* [ %frame_ref_short_signaling32513503, %if.then437 ], [ %frame_ref_short_signaling, %if.end429 ] %110 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not = icmp eq i32 %110, 0 br i1 %tobool443.not, label %for.inc447, label %if.then444 if.then444: ; preds = %if.end441 %111 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %111) #7 br label %for.inc447 for.inc447: ; preds = %if.end441, %if.then444 %112 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.1 = icmp eq i32 %112, 0 br i1 %tobool436.not.1, label %if.then437.1, label %if.end441.1 land.rhs453: ; preds = %for.inc447.6 %113 = load i32, i32* %frame_size_override, align 4, !tbaa !182 %tobool455 = icmp ne i32 %113, 0 br label %land.end456 land.end456: ; preds = %land.rhs453, %for.inc447.6 %114 = phi i1 [ false, %for.inc447.6 ], [ %tobool455, %land.rhs453 ] %land.ext457 = zext i1 %114 to i32 %call458 = tail call arm_aapcs_vfpcc i32 @read_frame_size(%struct.Dav1dContext* %c, %struct.GetBits* %gb, i32 %land.ext457) %cmp459 = icmp slt i32 %call458, 0 br i1 %cmp459, label %error, label %if.end461 if.end461: ; preds = %land.end456 %force_integer_mv462 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 16 %115 = load i32, i32* %force_integer_mv462, align 8, !tbaa !181 %tobool463.not = icmp eq i32 %115, 0 br i1 %tobool463.not, label %land.rhs464, label %land.end467 land.rhs464: ; preds = %if.end461 %call465 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool466 = icmp ne i32 %call465, 0 br label %land.end467 land.end467: ; preds = %land.rhs464, %if.end461 %116 = phi i1 [ false, %if.end461 ], [ %tobool466, %land.rhs464 ] %land.ext468 = zext i1 %116 to i32 %hp = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 29 store i32 %land.ext468, i32* %hp, align 4, !tbaa !192 %call469 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool470.not = icmp eq i32 %call469, 0 br i1 %tobool470.not, label %cond.false472, label %cond.end474 cond.false472: ; preds = %land.end467 %call473 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 br label %cond.end474 cond.end474: ; preds = %land.end467, %cond.false472 %cond475 = phi i32 [ %call473, %cond.false472 ], [ 4, %land.end467 ] %subpel_filter_mode = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 30 store i32 %cond475, i32* %subpel_filter_mode, align 8, !tbaa !193 %call476 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %switchable_motion_mode = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 31 store i32 %call476, i32* %switchable_motion_mode, align 4, !tbaa !194 %117 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool478.not = icmp eq i32 %117, 0 br i1 %tobool478.not, label %land.lhs.true479, label %cleanup494.thread land.lhs.true479: ; preds = %cond.end474 %ref_frame_mvs = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 39 %118 = load i32, i32* %ref_frame_mvs, align 4, !tbaa !195 %tobool480.not = icmp eq i32 %118, 0 br i1 %tobool480.not, label %cleanup494.thread, label %land.lhs.true481 land.lhs.true481: ; preds = %land.lhs.true479 %119 = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool483.not = icmp eq i32 %119, 0 br i1 %tobool483.not, label %cleanup494.thread, label %land.lhs.true484 land.lhs.true484: ; preds = %land.lhs.true481 %120 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and486 = and i32 %120, 1 %tobool487.not = icmp eq i32 %and486, 0 br i1 %tobool487.not, label %cleanup494.thread, label %land.rhs488 land.rhs488: ; preds = %land.lhs.true484 %call489 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool490 = icmp ne i32 %call489, 0 br label %cleanup494.thread cleanup494.thread: ; preds = %cond.end474, %land.lhs.true479, %land.lhs.true481, %land.lhs.true484, %land.rhs488 %121 = phi i1 [ false, %land.lhs.true484 ], [ false, %land.lhs.true481 ], [ false, %land.lhs.true479 ], [ false, %cond.end474 ], [ %tobool490, %land.rhs488 ] %land.ext492 = zext i1 %121 to i32 br label %if.end497 if.end497: ; preds = %cleanup494.thread, %land.end190 %land.ext492.sink = phi i32 [ %land.ext492, %cleanup494.thread ], [ 0, %land.end190 ] %use_ref_frame_mvs493 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 32 store i32 %land.ext492.sink, i32* %use_ref_frame_mvs493, align 8, !tbaa !196 %122 = load i32, i32* %reduced_still_picture_header, align 4, !tbaa !32 %tobool499.not = icmp eq i32 %122, 0 br i1 %tobool499.not, label %land.lhs.true500, label %land.end506 land.lhs.true500: ; preds = %if.end497 %123 = load i32, i32* %disable_cdf_update, align 8, !tbaa !179 %tobool502.not = icmp eq i32 %123, 0 br i1 %tobool502.not, label %land.rhs503, label %land.end506 land.rhs503: ; preds = %land.lhs.true500 %call504 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool505.not = icmp eq i32 %call504, 0 br label %land.end506 land.end506: ; preds = %land.rhs503, %land.lhs.true500, %if.end497 %124 = phi i1 [ false, %land.lhs.true500 ], [ false, %if.end497 ], [ %tobool505.not, %land.rhs503 ] %land.ext507 = zext i1 %124 to i32 %refresh_context = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 33 store i32 %land.ext507, i32* %refresh_context, align 4, !tbaa !197 %call508 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %uniform = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 0 store i32 %call508, i32* %uniform, align 8, !tbaa !198 %sb128 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 30 %125 = load i32, i32* %sb128, align 4, !tbaa !64 %shl509 = shl i32 64, %125 %sub510 = add nsw i32 %shl509, -1 %add512 = add nsw i32 %125, 6 %arrayidx513 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 0 %126 = load i32, i32* %arrayidx513, align 4, !tbaa !51 %add514 = add nsw i32 %sub510, %126 %shr515 = ashr i32 %add514, %add512 %height = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 3 %127 = load i32, i32* %height, align 4, !tbaa !118 %add516 = add nsw i32 %127, %sub510 %shr518 = lshr i32 4096, %add512 %mul = shl nsw i32 %add512, 1 br label %for.cond.i3227 for.cond.i3227: ; preds = %for.cond.i3227, %land.end506 %k.0.i3223 = phi i32 [ 0, %land.end506 ], [ %inc.i3226, %for.cond.i3227 ] %shl.i3224 = shl i32 %shr518, %k.0.i3223 %cmp.i3225 = icmp slt i32 %shl.i3224, %shr515 %inc.i3226 = add nuw nsw i32 %k.0.i3223, 1 br i1 %cmp.i3225, label %for.cond.i3227, label %tile_log2.exit3228 tile_log2.exit3228: ; preds = %for.cond.i3227 %shr517 = ashr i32 %add516, %add512 %shr519 = lshr i32 9437184, %mul %min_log2_cols = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 2 store i32 %k.0.i3223, i32* %min_log2_cols, align 8, !tbaa !199 %cmp.i3221 = icmp slt i32 %shr515, 64 %cond.i3222 = select i1 %cmp.i3221, i32 %shr515, i32 64 br label %for.cond.i3219 for.cond.i3219: ; preds = %for.cond.i3219, %tile_log2.exit3228 %128 = phi i32 [ 0, %tile_log2.exit3228 ], [ %inc.i3218, %for.cond.i3219 ] %shl.i3216 = shl nuw i32 1, %128 %cmp.i3217 = icmp slt i32 %shl.i3216, %cond.i3222 %inc.i3218 = add nuw nsw i32 %128, 1 br i1 %cmp.i3217, label %for.cond.i3219, label %tile_log2.exit3220 tile_log2.exit3220: ; preds = %for.cond.i3219 %max_log2_cols = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 3 store i32 %128, i32* %max_log2_cols, align 4, !tbaa !200 %cmp.i3213 = icmp slt i32 %shr517, 64 %cond.i3214 = select i1 %cmp.i3213, i32 %shr517, i32 64 br label %for.cond.i3211 for.cond.i3211: ; preds = %for.cond.i3211, %tile_log2.exit3220 %k.0.i3207 = phi i32 [ 0, %tile_log2.exit3220 ], [ %inc.i3210, %for.cond.i3211 ] %shl.i3208 = shl nuw i32 1, %k.0.i3207 %cmp.i3209 = icmp slt i32 %shl.i3208, %cond.i3214 %inc.i3210 = add nuw nsw i32 %k.0.i3207, 1 br i1 %cmp.i3209, label %for.cond.i3211, label %tile_log2.exit3212 tile_log2.exit3212: ; preds = %for.cond.i3211 %max_log2_rows = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 7 store i32 %k.0.i3207, i32* %max_log2_rows, align 4, !tbaa !201 %mul528 = mul nsw i32 %shr515, %shr517 br label %for.cond.i3205 for.cond.i3205: ; preds = %for.cond.i3205, %tile_log2.exit3212 %k.0.i3201 = phi i32 [ 0, %tile_log2.exit3212 ], [ %inc.i3204, %for.cond.i3205 ] %shl.i3202 = shl i32 %shr519, %k.0.i3201 %cmp.i3203 = icmp slt i32 %shl.i3202, %mul528 %inc.i3204 = add nuw nsw i32 %k.0.i3201, 1 br i1 %cmp.i3203, label %for.cond.i3205, label %tile_log2.exit3206 tile_log2.exit3206: ; preds = %for.cond.i3205 %cmp.i3199 = icmp ugt i32 %k.0.i3201, %k.0.i3223 %cond.i3200 = select i1 %cmp.i3199, i32 %k.0.i3201, i32 %k.0.i3223 %tobool535.not = icmp eq i32 %call508, 0 br i1 %tobool535.not, label %if.else627, label %if.then536 if.then536: ; preds = %tile_log2.exit3206 %log2_cols = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 4 store i32 %k.0.i3223, i32* %log2_cols, align 8, !tbaa !123 %cmp5453408 = icmp ult i32 %k.0.i3223, %128 br i1 %cmp5453408, label %land.rhs546, label %for.end556 land.rhs546: ; preds = %if.then536, %for.inc552 %call547 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool548.not = icmp eq i32 %call547, 0 %.pre3472.pre = load i32, i32* %log2_cols, align 8, !tbaa !123 br i1 %tobool548.not, label %for.end556, label %for.inc552 for.inc552: ; preds = %land.rhs546 %inc555 = add nsw i32 %.pre3472.pre, 1 store i32 %inc555, i32* %log2_cols, align 8, !tbaa !123 %129 = load i32, i32* %max_log2_cols, align 4, !tbaa !200 %cmp545 = icmp slt i32 %inc555, %129 br i1 %cmp545, label %land.rhs546, label %for.end556 for.end556: ; preds = %for.inc552, %land.rhs546, %if.then536 %130 = phi i32 [ %k.0.i3223, %if.then536 ], [ %.pre3472.pre, %land.rhs546 ], [ %inc555, %for.inc552 ] %sub557 = add i32 %shr515, -1 %shr560 = ashr i32 %sub557, %130 %add561 = add i32 %shr560, 1 %cols = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 5 store i32 0, i32* %cols, align 4, !tbaa !121 %cmp5643405 = icmp sgt i32 %shr515, 0 br i1 %cmp5643405, label %for.body566.preheader, label %for.cond.cleanup565 for.body566.preheader: ; preds = %for.end556 %131 = udiv i32 %sub557, %add561 %132 = add i32 %131, 1 %min.iters.check = icmp ult i32 %132, 8 br i1 %min.iters.check, label %for.body566.preheader3618, label %vector.ph for.body566.preheader3618: ; preds = %middle.block, %for.body566.preheader %sbx.03407.ph = phi i32 [ 0, %for.body566.preheader ], [ %ind.end, %middle.block ] %storemerge31033406.ph = phi i32 [ 0, %for.body566.preheader ], [ %n.vec, %middle.block ] br label %for.body566 vector.ph: ; preds = %for.body566.preheader %n.vec = and i32 %132, -8 %ind.end = mul i32 %n.vec, %add561 %133 = trunc i32 %add561 to i16 %.splatinsert3577 = insertelement <8 x i16> undef, i16 %133, i32 0 %.splat3578 = shufflevector <8 x i16> %.splatinsert3577, <8 x i16> undef, <8 x i32> zeroinitializer %134 = mul <8 x i16> %.splat3578, %135 = shl i16 %133, 3 %.splatinsert3580 = insertelement <8 x i16> undef, i16 %135, i32 0 %.splat3581 = shufflevector <8 x i16> %.splatinsert3580, <8 x i16> undef, <8 x i32> zeroinitializer br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ] %vec.ind3582 = phi <8 x i16> [ %134, %vector.ph ], [ %vec.ind.next3583, %vector.body ] %136 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 10, i32 %index %137 = bitcast i16* %136 to <8 x i16>* store <8 x i16> %vec.ind3582, <8 x i16>* %137, align 2, !tbaa !134 %index.next = add i32 %index, 8 %vec.ind.next3583 = add <8 x i16> %vec.ind3582, %.splat3581 %138 = icmp eq i32 %index.next, %n.vec br i1 %138, label %middle.block, label %vector.body, !llvm.loop !202 middle.block: ; preds = %vector.body %cmp.n = icmp eq i32 %132, %n.vec br i1 %cmp.n, label %for.cond563.for.cond.cleanup565_crit_edge, label %for.body566.preheader3618 for.cond563.for.cond.cleanup565_crit_edge: ; preds = %for.body566, %middle.block %inc575.lcssa = phi i32 [ %n.vec, %middle.block ], [ %inc575, %for.body566 ] store i32 %inc575.lcssa, i32* %cols, align 4, !tbaa !121 br label %for.cond.cleanup565 for.cond.cleanup565: ; preds = %for.cond563.for.cond.cleanup565_crit_edge, %for.end556 %sub580 = sub nsw i32 %cond.i3200, %130 %cmp.i3197 = icmp sgt i32 %sub580, 0 %cond.i3198 = select i1 %cmp.i3197, i32 %sub580, i32 0 %min_log2_rows = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 6 store i32 %cond.i3198, i32* %min_log2_rows, align 8, !tbaa !204 %log2_rows = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 8 store i32 %cond.i3198, i32* %log2_rows, align 8, !tbaa !124 %139 = load i32, i32* %max_log2_rows, align 4, !tbaa !201 %cmp5913404 = icmp slt i32 %cond.i3198, %139 br i1 %cmp5913404, label %land.rhs593, label %for.end603 for.body566: ; preds = %for.body566.preheader3618, %for.body566 %sbx.03407 = phi i32 [ %add572, %for.body566 ], [ %sbx.03407.ph, %for.body566.preheader3618 ] %storemerge31033406 = phi i32 [ %inc575, %for.body566 ], [ %storemerge31033406.ph, %for.body566.preheader3618 ] %conv = trunc i32 %sbx.03407 to i16 %arrayidx570 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 10, i32 %storemerge31033406 store i16 %conv, i16* %arrayidx570, align 2, !tbaa !134 %add572 = add nsw i32 %add561, %sbx.03407 %inc575 = add nuw i32 %storemerge31033406, 1 %exitcond3453.not = icmp eq i32 %storemerge31033406, %131 br i1 %exitcond3453.not, label %for.cond563.for.cond.cleanup565_crit_edge, label %for.body566, !llvm.loop !205 land.rhs593: ; preds = %for.cond.cleanup565, %for.inc599 %call594 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool595.not = icmp eq i32 %call594, 0 %.pre3473.pre = load i32, i32* %log2_rows, align 8, !tbaa !124 br i1 %tobool595.not, label %for.end603, label %for.inc599 for.inc599: ; preds = %land.rhs593 %inc602 = add nsw i32 %.pre3473.pre, 1 store i32 %inc602, i32* %log2_rows, align 8, !tbaa !124 %140 = load i32, i32* %max_log2_rows, align 4, !tbaa !201 %cmp591 = icmp slt i32 %inc602, %140 br i1 %cmp591, label %land.rhs593, label %for.end603 for.end603: ; preds = %for.inc599, %land.rhs593, %for.cond.cleanup565 %141 = phi i32 [ %cond.i3198, %for.cond.cleanup565 ], [ %.pre3473.pre, %land.rhs593 ], [ %inc602, %for.inc599 ] %sub604 = add i32 %shr517, -1 %shr607 = ashr i32 %sub604, %141 %add608 = add i32 %shr607, 1 %rows = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 9 store i32 0, i32* %rows, align 4, !tbaa !122 %cmp6113401 = icmp sgt i32 %shr517, 0 br i1 %cmp6113401, label %for.body614.preheader, label %if.end725 for.body614.preheader: ; preds = %for.end603 %142 = udiv i32 %sub604, %add608 %143 = add i32 %142, 1 %min.iters.check3587 = icmp ult i32 %143, 8 br i1 %min.iters.check3587, label %for.body614.preheader3617, label %vector.ph3588 vector.ph3588: ; preds = %for.body614.preheader %n.vec3590 = and i32 %143, -8 %ind.end3594 = mul i32 %n.vec3590, %add608 %144 = trunc i32 %add608 to i16 %.splatinsert3604 = insertelement <8 x i16> undef, i16 %144, i32 0 %.splat3605 = shufflevector <8 x i16> %.splatinsert3604, <8 x i16> undef, <8 x i32> zeroinitializer %145 = mul <8 x i16> %.splat3605, %146 = shl i16 %144, 3 %.splatinsert3607 = insertelement <8 x i16> undef, i16 %146, i32 0 %.splat3608 = shufflevector <8 x i16> %.splatinsert3607, <8 x i16> undef, <8 x i32> zeroinitializer br label %vector.body3586 vector.body3586: ; preds = %vector.body3586, %vector.ph3588 %index3591 = phi i32 [ 0, %vector.ph3588 ], [ %index.next3592, %vector.body3586 ] %vec.ind3609 = phi <8 x i16> [ %145, %vector.ph3588 ], [ %vec.ind.next3610, %vector.body3586 ] %147 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 11, i32 %index3591 %148 = bitcast i16* %147 to <8 x i16>* store <8 x i16> %vec.ind3609, <8 x i16>* %148, align 2, !tbaa !134 %index.next3592 = add i32 %index3591, 8 %vec.ind.next3610 = add <8 x i16> %vec.ind3609, %.splat3608 %149 = icmp eq i32 %index.next3592, %n.vec3590 br i1 %149, label %middle.block3584, label %vector.body3586, !llvm.loop !207 middle.block3584: ; preds = %vector.body3586 %cmp.n3596 = icmp eq i32 %143, %n.vec3590 br i1 %cmp.n3596, label %for.cond610.if.end725.loopexit_crit_edge, label %for.body614.preheader3617 for.body614.preheader3617: ; preds = %middle.block3584, %for.body614.preheader %sby.03403.ph = phi i32 [ 0, %for.body614.preheader ], [ %ind.end3594, %middle.block3584 ] %storemerge31053402.ph = phi i32 [ 0, %for.body614.preheader ], [ %n.vec3590, %middle.block3584 ] br label %for.body614 for.body614: ; preds = %for.body614.preheader3617, %for.body614 %sby.03403 = phi i32 [ %add621, %for.body614 ], [ %sby.03403.ph, %for.body614.preheader3617 ] %storemerge31053402 = phi i32 [ %inc624, %for.body614 ], [ %storemerge31053402.ph, %for.body614.preheader3617 ] %conv615 = trunc i32 %sby.03403 to i16 %arrayidx619 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 11, i32 %storemerge31053402 store i16 %conv615, i16* %arrayidx619, align 2, !tbaa !134 %add621 = add nsw i32 %add608, %sby.03403 %inc624 = add nuw i32 %storemerge31053402, 1 %exitcond3452.not = icmp eq i32 %storemerge31053402, %142 br i1 %exitcond3452.not, label %for.cond610.if.end725.loopexit_crit_edge, label %for.body614, !llvm.loop !208 if.else627: ; preds = %tile_log2.exit3206 %cols629 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 5 store i32 0, i32* %cols629, align 4, !tbaa !121 %cmp6343396 = icmp sgt i32 %shr515, 0 br i1 %cmp6343396, label %for.body644, label %for.cond.i3195.preheader for.cond.i3195.preheader: ; preds = %cond.end654, %if.else627 %storemerge.lcssa = phi i32 [ 0, %if.else627 ], [ %inc667, %cond.end654 ] %widest_tile.0.lcssa = phi i32 [ 0, %if.else627 ], [ %cond.i3186, %cond.end654 ] br label %for.cond.i3195 for.cond.i3195: ; preds = %for.cond.i3195.preheader, %for.cond.i3195 %k.0.i3191 = phi i32 [ %inc.i3194, %for.cond.i3195 ], [ 0, %for.cond.i3195.preheader ] %shl.i3192 = shl nuw i32 1, %k.0.i3191 %cmp.i3193 = icmp slt i32 %shl.i3192, %storemerge.lcssa %inc.i3194 = add nuw nsw i32 %k.0.i3191, 1 br i1 %cmp.i3193, label %for.cond.i3195, label %tile_log2.exit3196 tile_log2.exit3196: ; preds = %for.cond.i3195 %log2_cols674 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 4 store i32 %k.0.i3191, i32* %log2_cols674, align 8, !tbaa !123 %tobool675.not = icmp eq i32 %cond.i3200, 0 %add677 = add nuw nsw i32 %cond.i3200, 1 %shr678 = select i1 %tobool675.not, i32 0, i32 %add677 %max_tile_area_sb630.0 = ashr i32 %mul528, %shr678 %div = sdiv i32 %max_tile_area_sb630.0, %widest_tile.0.lcssa %cmp.i3189 = icmp sgt i32 %div, 1 %cond.i3190 = select i1 %cmp.i3189, i32 %div, i32 1 %rows682 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 9 store i32 0, i32* %rows682, align 4, !tbaa !122 %cmp6853394 = icmp sgt i32 %shr517, 0 br i1 %cmp6853394, label %for.body695, label %for.cond.i.preheader for.body644: ; preds = %if.else627, %cond.end654 %150 = phi i32 [ %inc667, %cond.end654 ], [ 0, %if.else627 ] %widest_tile.03398 = phi i32 [ %cond.i3186, %cond.end654 ], [ 0, %if.else627 ] %sbx632.03397 = phi i32 [ %add662, %cond.end654 ], [ 0, %if.else627 ] %sub645 = sub nsw i32 %shr515, %sbx632.03397 %cmp.i3187 = icmp slt i32 %sub645, %shr518 %cond.i3188 = select i1 %cmp.i3187, i32 %sub645, i32 %shr518 %cmp648 = icmp sgt i32 %cond.i3188, 1 br i1 %cmp648, label %cond.true650, label %cond.end654 cond.true650: ; preds = %for.body644 %call651 = tail call arm_aapcs_vfpcc i32 @dav1d_get_uniform(%struct.GetBits* %gb, i32 %cond.i3188) #7 %add652 = add i32 %call651, 1 %.pre3474 = load i32, i32* %cols629, align 4, !tbaa !121 br label %cond.end654 cond.end654: ; preds = %for.body644, %cond.true650 %151 = phi i32 [ %.pre3474, %cond.true650 ], [ %150, %for.body644 ] %cond655 = phi i32 [ %add652, %cond.true650 ], [ 1, %for.body644 ] %conv656 = trunc i32 %sbx632.03397 to i16 %arrayidx661 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 10, i32 %151 store i16 %conv656, i16* %arrayidx661, align 2, !tbaa !134 %add662 = add nsw i32 %cond655, %sbx632.03397 %cmp.i3185 = icmp sgt i32 %widest_tile.03398, %cond655 %cond.i3186 = select i1 %cmp.i3185, i32 %widest_tile.03398, i32 %cond655 %inc667 = add nsw i32 %151, 1 store i32 %inc667, i32* %cols629, align 4, !tbaa !121 %cmp634 = icmp sgt i32 %shr515, %add662 %cmp639 = icmp slt i32 %151, 63 %or.cond3324 = and i1 %cmp639, %cmp634 br i1 %or.cond3324, label %for.body644, label %for.cond.i3195.preheader for.cond.i.preheader: ; preds = %cond.end705, %tile_log2.exit3196 %storemerge3101.lcssa = phi i32 [ 0, %tile_log2.exit3196 ], [ %inc717, %cond.end705 ] br label %for.cond.i for.cond.i: ; preds = %for.cond.i.preheader, %for.cond.i %k.0.i = phi i32 [ %inc.i, %for.cond.i ], [ 0, %for.cond.i.preheader ] %shl.i3183 = shl nuw i32 1, %k.0.i %cmp.i3184 = icmp slt i32 %shl.i3183, %storemerge3101.lcssa %inc.i = add nuw nsw i32 %k.0.i, 1 br i1 %cmp.i3184, label %for.cond.i, label %tile_log2.exit tile_log2.exit: ; preds = %for.cond.i %log2_rows724 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 8 store i32 %k.0.i, i32* %log2_rows724, align 8, !tbaa !124 br label %if.end725 for.body695: ; preds = %tile_log2.exit3196, %cond.end705 %152 = phi i32 [ %inc717, %cond.end705 ], [ 0, %tile_log2.exit3196 ] %sby683.03395 = phi i32 [ %add713, %cond.end705 ], [ 0, %tile_log2.exit3196 ] %sub696 = sub nsw i32 %shr517, %sby683.03395 %cmp.i3181 = icmp slt i32 %sub696, %cond.i3190 %cond.i3182 = select i1 %cmp.i3181, i32 %sub696, i32 %cond.i3190 %cmp699 = icmp sgt i32 %cond.i3182, 1 br i1 %cmp699, label %cond.true701, label %cond.end705 cond.true701: ; preds = %for.body695 %call702 = tail call arm_aapcs_vfpcc i32 @dav1d_get_uniform(%struct.GetBits* %gb, i32 %cond.i3182) #7 %add703 = add i32 %call702, 1 %.pre3475 = load i32, i32* %rows682, align 4, !tbaa !122 br label %cond.end705 cond.end705: ; preds = %for.body695, %cond.true701 %153 = phi i32 [ %.pre3475, %cond.true701 ], [ %152, %for.body695 ] %cond706 = phi i32 [ %add703, %cond.true701 ], [ 1, %for.body695 ] %conv707 = trunc i32 %sby683.03395 to i16 %arrayidx712 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 11, i32 %153 store i16 %conv707, i16* %arrayidx712, align 2, !tbaa !134 %add713 = add nsw i32 %cond706, %sby683.03395 %inc717 = add nsw i32 %153, 1 store i32 %inc717, i32* %rows682, align 4, !tbaa !122 %cmp685 = icmp sgt i32 %shr517, %add713 %cmp690 = icmp slt i32 %153, 63 %or.cond3325 = and i1 %cmp690, %cmp685 br i1 %or.cond3325, label %for.body695, label %for.cond.i.preheader for.cond610.if.end725.loopexit_crit_edge: ; preds = %for.body614, %middle.block3584 %inc624.lcssa = phi i32 [ %n.vec3590, %middle.block3584 ], [ %inc624, %for.body614 ] store i32 %inc624.lcssa, i32* %rows, align 4, !tbaa !122 br label %if.end725 if.end725: ; preds = %for.end603, %for.cond610.if.end725.loopexit_crit_edge, %tile_log2.exit %154 = phi i32 [ %141, %for.end603 ], [ %141, %for.cond610.if.end725.loopexit_crit_edge ], [ %k.0.i, %tile_log2.exit ] %155 = phi i32 [ 0, %for.end603 ], [ %inc624.lcssa, %for.cond610.if.end725.loopexit_crit_edge ], [ %storemerge3101.lcssa, %tile_log2.exit ] %conv726 = trunc i32 %shr515 to i16 %cols730 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 5 %156 = load i32, i32* %cols730, align 4, !tbaa !121 %arrayidx731 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 10, i32 %156 store i16 %conv726, i16* %arrayidx731, align 2, !tbaa !134 %conv732 = trunc i32 %shr517 to i16 %arrayidx737 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 11, i32 %155 store i16 %conv732, i16* %arrayidx737, align 2, !tbaa !134 %log2_cols739 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 4 %157 = load i32, i32* %log2_cols739, align 8, !tbaa !123 %158 = or i32 %157, %154 %159 = icmp eq i32 %158, 0 br i1 %159, label %if.else767, label %if.then745 if.then745: ; preds = %if.end725 %rows736 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 9 %add750 = add nsw i32 %154, %157 %call751 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %add750) #7 %update = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 12 store i32 %call751, i32* %update, align 4, !tbaa !209 %160 = load i32, i32* %cols730, align 4, !tbaa !121 %161 = load i32, i32* %rows736, align 4, !tbaa !122 %mul759 = mul nsw i32 %161, %160 %cmp760.not = icmp slt i32 %call751, %mul759 br i1 %cmp760.not, label %if.end763, label %error if.end763: ; preds = %if.then745 %call764 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %add765 = add i32 %call764, 1 br label %if.end772 if.else767: ; preds = %if.end725 %update769 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 12 store i32 0, i32* %update769, align 4, !tbaa !209 br label %if.end772 if.end772: ; preds = %if.else767, %if.end763 %.sink3611 = phi i32 [ 0, %if.else767 ], [ %add765, %if.end763 ] %n_bytes771 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 34, i32 1 store i32 %.sink3611, i32* %n_bytes771, align 4, !tbaa !210 %call773 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %yac = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 0 store i32 %call773, i32* %yac, align 8, !tbaa !211 %call774 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool775.not = icmp eq i32 %call774, 0 br i1 %tobool775.not, label %cond.end779, label %cond.true776 cond.true776: ; preds = %if.end772 %call777 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 br label %cond.end779 cond.end779: ; preds = %if.end772, %cond.true776 %cond780 = phi i32 [ %call777, %cond.true776 ], [ 0, %if.end772 ] %ydc_delta = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 1 store i32 %cond780, i32* %ydc_delta, align 4, !tbaa !212 %monochrome = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 48 %162 = load i32, i32* %monochrome, align 4, !tbaa !81 %tobool782.not = icmp eq i32 %162, 0 br i1 %tobool782.not, label %if.then783, label %if.end834 if.then783: ; preds = %cond.end779 %separate_uv_delta_q = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 50 %163 = load i32, i32* %separate_uv_delta_q, align 4, !tbaa !90 %tobool784.not = icmp eq i32 %163, 0 br i1 %tobool784.not, label %cond.end788, label %cond.true785 cond.true785: ; preds = %if.then783 %call786 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %cond.end788 cond.end788: ; preds = %if.then783, %cond.true785 %cond789 = phi i32 [ %call786, %cond.true785 ], [ 0, %if.then783 ] %call790 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool791.not = icmp eq i32 %call790, 0 br i1 %tobool791.not, label %cond.end795, label %cond.true792 cond.true792: ; preds = %cond.end788 %call793 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 br label %cond.end795 cond.end795: ; preds = %cond.end788, %cond.true792 %cond796 = phi i32 [ %call793, %cond.true792 ], [ 0, %cond.end788 ] %udc_delta = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 2 store i32 %cond796, i32* %udc_delta, align 8, !tbaa !213 %call798 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool799.not = icmp eq i32 %call798, 0 br i1 %tobool799.not, label %cond.end803, label %cond.true800 cond.true800: ; preds = %cond.end795 %call801 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 br label %cond.end803 cond.end803: ; preds = %cond.end795, %cond.true800 %cond804 = phi i32 [ %call801, %cond.true800 ], [ 0, %cond.end795 ] %uac_delta = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 3 store i32 %cond804, i32* %uac_delta, align 4, !tbaa !214 %tobool806.not = icmp eq i32 %cond789, 0 br i1 %tobool806.not, label %if.else824, label %if.then807 if.then807: ; preds = %cond.end803 %call808 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool809.not = icmp eq i32 %call808, 0 br i1 %tobool809.not, label %cond.end813, label %cond.true810 cond.true810: ; preds = %if.then807 %call811 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 br label %cond.end813 cond.end813: ; preds = %if.then807, %cond.true810 %cond814 = phi i32 [ %call811, %cond.true810 ], [ 0, %if.then807 ] %vdc_delta = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 4 store i32 %cond814, i32* %vdc_delta, align 8, !tbaa !215 %call816 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool817.not = icmp eq i32 %call816, 0 br i1 %tobool817.not, label %if.end834.sink.split, label %cond.true818 cond.true818: ; preds = %cond.end813 %call819 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 br label %if.end834.sink.split if.else824: ; preds = %cond.end803 %164 = load i32, i32* %udc_delta, align 8, !tbaa !213 %vdc_delta828 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 4 store i32 %164, i32* %vdc_delta828, align 8, !tbaa !215 br label %if.end834.sink.split if.end834.sink.split: ; preds = %cond.true818, %cond.end813, %if.else824 %cond822.sink = phi i32 [ %cond804, %if.else824 ], [ %call819, %cond.true818 ], [ 0, %cond.end813 ] %vac_delta = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 5 store i32 %cond822.sink, i32* %vac_delta, align 4, !tbaa !216 br label %if.end834 if.end834: ; preds = %if.end834.sink.split, %cond.end779 %call835 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %qm = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 6 store i32 %call835, i32* %qm, align 8, !tbaa !217 %tobool839.not = icmp eq i32 %call835, 0 br i1 %tobool839.not, label %if.end855, label %if.then840 if.then840: ; preds = %if.end834 %call841 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 %qm_y = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 7 store i32 %call841, i32* %qm_y, align 4, !tbaa !218 %call843 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 %qm_u = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 8 store i32 %call843, i32* %qm_u, align 8, !tbaa !219 %separate_uv_delta_q845 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 50 %165 = load i32, i32* %separate_uv_delta_q845, align 4, !tbaa !90 %tobool846.not = icmp eq i32 %165, 0 br i1 %tobool846.not, label %cond.end852, label %cond.true847 cond.true847: ; preds = %if.then840 %call848 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 br label %cond.end852 cond.end852: ; preds = %if.then840, %cond.true847 %cond853 = phi i32 [ %call848, %cond.true847 ], [ %call843, %if.then840 ] %qm_v = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 9 store i32 %cond853, i32* %qm_v, align 4, !tbaa !220 br label %if.end855 if.end855: ; preds = %cond.end852, %if.end834 %call856 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %enabled857 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 0 store i32 %call856, i32* %enabled857, align 8, !tbaa !221 %tobool860.not = icmp eq i32 %call856, 0 br i1 %tobool860.not, label %if.else1021, label %if.then861 if.then861: ; preds = %if.end855 %166 = load i32, i32* %primary_ref_frame, align 8, !tbaa !184 %cmp863 = icmp eq i32 %166, 7 br i1 %cmp863, label %if.end886.thread, label %if.else869 if.end886.thread: ; preds = %if.then861 %update_map = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 1 store i32 1, i32* %update_map, align 4, !tbaa !222 %temporal = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 2 store i32 0, i32* %temporal, align 8, !tbaa !223 %update_data = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 3 store i32 1, i32* %update_data, align 4, !tbaa !224 br label %if.then890 if.else869: ; preds = %if.then861 %call870 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %update_map872 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 1 store i32 %call870, i32* %update_map872, align 4, !tbaa !222 %tobool875.not = icmp eq i32 %call870, 0 br i1 %tobool875.not, label %if.end886, label %cond.true876 cond.true876: ; preds = %if.else869 %call877 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %if.end886 if.end886: ; preds = %cond.true876, %if.else869 %cond880 = phi i32 [ %call877, %cond.true876 ], [ 0, %if.else869 ] %temporal882 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 2 store i32 %cond880, i32* %temporal882, align 8, !tbaa !223 %call883 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %update_data885 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 3 store i32 %call883, i32* %update_data885, align 4, !tbaa !224 %tobool889.not = icmp eq i32 %call883, 0 br i1 %tobool889.not, label %do.body, label %if.then890 if.then890: ; preds = %if.end886.thread, %if.end886 %preskip = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 1 store i32 0, i32* %preskip, align 8, !tbaa !225 %last_active_segid = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 2 store i32 -1, i32* %last_active_segid, align 4, !tbaa !226 br label %for.body899 for.body899: ; preds = %if.then890, %if.end986 %i894.03387 = phi i32 [ 0, %if.then890 ], [ %inc988, %if.end986 ] %call903 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool904.not = icmp eq i32 %call903, 0 br i1 %tobool904.not, label %if.end912, label %if.then905 if.then905: ; preds = %for.body899 %call906 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 8) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 br label %if.end912 if.end912: ; preds = %for.body899, %if.then905 %call906.sink = phi i32 [ %call906, %if.then905 ], [ 0, %for.body899 ] %167 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 0 store i32 %call906.sink, i32* %167, align 4 %call913 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool914.not = icmp eq i32 %call913, 0 br i1 %tobool914.not, label %if.end922, label %if.then915 if.then915: ; preds = %if.end912 %call916 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 br label %if.end922 if.end922: ; preds = %if.end912, %if.then915 %call916.sink = phi i32 [ %call916, %if.then915 ], [ 0, %if.end912 ] %168 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 1 store i32 %call916.sink, i32* %168, align 4 %call923 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool924.not = icmp eq i32 %call923, 0 br i1 %tobool924.not, label %if.end932, label %if.then925 if.then925: ; preds = %if.end922 %call926 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 br label %if.end932 if.end932: ; preds = %if.end922, %if.then925 %call926.sink = phi i32 [ %call926, %if.then925 ], [ 0, %if.end922 ] %169 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 2 store i32 %call926.sink, i32* %169, align 4 %call933 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool934.not = icmp eq i32 %call933, 0 br i1 %tobool934.not, label %if.end942, label %if.then935 if.then935: ; preds = %if.end932 %call936 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 br label %if.end942 if.end942: ; preds = %if.end932, %if.then935 %call936.sink = phi i32 [ %call936, %if.then935 ], [ 0, %if.end932 ] %170 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 3 store i32 %call936.sink, i32* %170, align 4 %call943 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool944.not = icmp eq i32 %call943, 0 br i1 %tobool944.not, label %if.end952, label %if.then945 if.then945: ; preds = %if.end942 %call946 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 br label %if.end952 if.end952: ; preds = %if.end942, %if.then945 %call946.sink = phi i32 [ %call946, %if.then945 ], [ 0, %if.end942 ] %171 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 4 store i32 %call946.sink, i32* %171, align 4 %call953 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool954.not = icmp eq i32 %call953, 0 br i1 %tobool954.not, label %if.end966, label %if.then955 if.then955: ; preds = %if.end952 %call956 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 store i32 1, i32* %preskip, align 8, !tbaa !225 br label %if.end966 if.end966: ; preds = %if.end952, %if.then955 %call956.sink = phi i32 [ %call956, %if.then955 ], [ -1, %if.end952 ] %172 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 5 store i32 %call956.sink, i32* %172, align 4 %call967 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %skip = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 6 store i32 %call967, i32* %skip, align 4, !tbaa !227 %tobool968.not = icmp eq i32 %call967, 0 br i1 %tobool968.not, label %if.end976, label %if.then969 if.then969: ; preds = %if.end966 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 store i32 1, i32* %preskip, align 8, !tbaa !225 br label %if.end976 if.end976: ; preds = %if.then969, %if.end966 %call977 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %globalmv = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 %i894.03387, i32 7 store i32 %call977, i32* %globalmv, align 4, !tbaa !229 %tobool978.not = icmp eq i32 %call977, 0 br i1 %tobool978.not, label %if.end986, label %if.then979 if.then979: ; preds = %if.end976 store i32 %i894.03387, i32* %last_active_segid, align 4, !tbaa !226 store i32 1, i32* %preskip, align 8, !tbaa !225 br label %if.end986 if.end986: ; preds = %if.then979, %if.end976 %inc988 = add nuw nsw i32 %i894.03387, 1 %exitcond3451.not = icmp eq i32 %inc988, 8 br i1 %exitcond3451.not, label %if.end1039, label %for.body899 do.body: ; preds = %if.end886 %173 = load i32, i32* %primary_ref_frame, align 8, !tbaa !184 %cmp993 = icmp ne i32 %173, 7 tail call void @llvm.assume(i1 %cmp993) %arrayidx999 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 %173 %174 = load i32, i32* %arrayidx999, align 4, !tbaa !51 %frame_hdr1004 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %174, i32 0, i32 0, i32 1 %175 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1004, align 4, !tbaa !168 %tobool1005.not = icmp eq %struct.Dav1dFrameHeader* %175, null br i1 %tobool1005.not, label %cleanup2152, label %if.end1007 if.end1007: ; preds = %do.body %seg_data1009 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4 %seg_data1016 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %175, i32 0, i32 36, i32 4 %176 = bitcast %struct.Dav1dSegmentationDataSet* %seg_data1009 to i8* %177 = bitcast %struct.Dav1dSegmentationDataSet* %seg_data1016 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 8 dereferenceable(264) %176, i8* nonnull align 8 dereferenceable(264) %177, i32 264, i1 false), !tbaa.struct !230 br label %if.end1039 if.else1021: ; preds = %if.end855 %seg_data1023 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4 %178 = bitcast %struct.Dav1dSegmentationDataSet* %seg_data1023 to i8* tail call void @llvm.memset.p0i8.i32(i8* nonnull align 8 dereferenceable(264) %178, i8 0, i32 264, i1 false) %ref1034 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 0, i32 5 store i32 -1, i32* %ref1034, align 4, !tbaa !231 %ref1034.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 1, i32 5 store i32 -1, i32* %ref1034.1, align 4, !tbaa !231 %ref1034.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 2, i32 5 store i32 -1, i32* %ref1034.2, align 4, !tbaa !231 %ref1034.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 3, i32 5 store i32 -1, i32* %ref1034.3, align 4, !tbaa !231 %ref1034.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 4, i32 5 store i32 -1, i32* %ref1034.4, align 4, !tbaa !231 %ref1034.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 5, i32 5 store i32 -1, i32* %ref1034.5, align 4, !tbaa !231 %ref1034.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 6, i32 5 store i32 -1, i32* %ref1034.6, align 4, !tbaa !231 %ref1034.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 7, i32 5 store i32 -1, i32* %ref1034.7, align 4, !tbaa !231 br label %if.end1039 if.end1039: ; preds = %if.end986, %if.else1021, %if.end1007 %179 = load i32, i32* %yac, align 8, !tbaa !211 %tobool1042.not = icmp eq i32 %179, 0 br i1 %tobool1042.not, label %cond.end1046.thread, label %cond.end1046 cond.end1046.thread: ; preds = %if.end1039 %present3257 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 0, i32 0 store i32 0, i32* %present3257, align 8, !tbaa !232 br label %cond.end1055.thread cond.end1046: ; preds = %if.end1039 %call1044 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %present = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 0, i32 0 store i32 %call1044, i32* %present, align 8, !tbaa !232 %tobool1051.not = icmp eq i32 %call1044, 0 br i1 %tobool1051.not, label %cond.end1055.thread, label %cond.end1055 cond.end1055.thread: ; preds = %cond.end1046.thread, %cond.end1046 %res_log23263 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 0, i32 1 store i32 0, i32* %res_log23263, align 4, !tbaa !233 br label %land.end1069.thread cond.end1055: ; preds = %cond.end1046 %call1053 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %.pr3260 = load i32, i32* %present, align 8, !tbaa !232 %res_log2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 0, i32 1 store i32 %call1053, i32* %res_log2, align 4, !tbaa !233 %tobool1062.not = icmp eq i32 %.pr3260, 0 br i1 %tobool1062.not, label %land.end1069.thread, label %land.lhs.true1063 land.lhs.true1063: ; preds = %cond.end1055 %allow_intrabc1064 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 %180 = load i32, i32* %allow_intrabc1064, align 8, !tbaa !190 %tobool1065.not = icmp eq i32 %180, 0 br i1 %tobool1065.not, label %land.end1069, label %land.end1069.thread land.end1069.thread: ; preds = %land.lhs.true1063, %cond.end1055, %cond.end1055.thread %present10723266 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 1, i32 0 store i32 0, i32* %present10723266, align 8, !tbaa !234 br label %cond.end1080.thread land.end1069: ; preds = %land.lhs.true1063 %call1067 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1068 = icmp ne i32 %call1067, 0 %land.ext1070 = zext i1 %tobool1068 to i32 %present1072 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 1, i32 0 store i32 %land.ext1070, i32* %present1072, align 8, !tbaa !234 br i1 %tobool1068, label %cond.end1080, label %cond.end1080.thread cond.end1080.thread: ; preds = %land.end1069.thread, %land.end1069 %res_log210843271 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 1, i32 1 store i32 0, i32* %res_log210843271, align 4, !tbaa !235 br label %cond.end1092 cond.end1080: ; preds = %land.end1069 %call1078 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %.pr3268 = load i32, i32* %present1072, align 8, !tbaa !234 %res_log21084 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 1, i32 1 store i32 %call1078, i32* %res_log21084, align 4, !tbaa !235 %tobool1088.not = icmp eq i32 %.pr3268, 0 br i1 %tobool1088.not, label %cond.end1092, label %cond.true1089 cond.true1089: ; preds = %cond.end1080 %call1090 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %cond.end1092 cond.end1092: ; preds = %cond.end1080.thread, %cond.end1080, %cond.true1089 %cond1093 = phi i32 [ %call1090, %cond.true1089 ], [ 0, %cond.end1080 ], [ 0, %cond.end1080.thread ] %multi = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 37, i32 1, i32 2 store i32 %cond1093, i32* %multi, align 8, !tbaa !236 %181 = load i32, i32* %ydc_delta, align 4, !tbaa !212 %tobool1098.not = icmp eq i32 %181, 0 br i1 %tobool1098.not, label %land.lhs.true1099, label %land.end1116 land.lhs.true1099: ; preds = %cond.end1092 %udc_delta1101 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 2 %182 = load i32, i32* %udc_delta1101, align 8, !tbaa !213 %tobool1102.not = icmp eq i32 %182, 0 br i1 %tobool1102.not, label %land.lhs.true1103, label %land.end1116 land.lhs.true1103: ; preds = %land.lhs.true1099 %uac_delta1105 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 3 %183 = load i32, i32* %uac_delta1105, align 4, !tbaa !214 %tobool1106.not = icmp eq i32 %183, 0 br i1 %tobool1106.not, label %land.lhs.true1107, label %land.end1116 land.lhs.true1107: ; preds = %land.lhs.true1103 %vdc_delta1109 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 4 %184 = load i32, i32* %vdc_delta1109, align 8, !tbaa !215 %tobool1110.not = icmp eq i32 %184, 0 br i1 %tobool1110.not, label %land.rhs1111, label %land.end1116 land.rhs1111: ; preds = %land.lhs.true1107 %vac_delta1113 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 35, i32 5 %185 = load i32, i32* %vac_delta1113, align 4, !tbaa !216 %tobool1114.not = icmp eq i32 %185, 0 br label %land.end1116 land.end1116: ; preds = %land.rhs1111, %land.lhs.true1107, %land.lhs.true1103, %land.lhs.true1099, %cond.end1092 %186 = phi i1 [ false, %land.lhs.true1107 ], [ false, %land.lhs.true1103 ], [ false, %land.lhs.true1099 ], [ false, %cond.end1092 ], [ %tobool1114.not, %land.rhs1111 ] %all_lossless = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 38 store i32 1, i32* %all_lossless, align 4, !tbaa !237 %187 = load i32, i32* %enabled857, align 8, !tbaa !221 %tobool1126.not = icmp eq i32 %187, 0 %188 = load i32, i32* %yac, align 8, !tbaa !211 br i1 %tobool1126.not, label %for.body1123.us.preheader, label %for.body1123.preheader for.body1123.preheader: ; preds = %land.end1116 %delta_q1134 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 0, i32 0 %189 = load i32, i32* %delta_q1134, align 8, !tbaa !238 %add1135 = add nsw i32 %189, %188 %190 = icmp slt i32 %add1135, 255 %cond.i.i = select i1 %190, i32 %add1135, i32 255 %191 = icmp sgt i32 %cond.i.i, 0 %cond5.i.i = select i1 %191, i32 %cond.i.i, i32 0 %arrayidx1143 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 0 store i32 %cond5.i.i, i32* %arrayidx1143, align 4, !tbaa !51 %tobool1147.not = icmp slt i32 %cond.i.i, 1 %192 = and i1 %186, %tobool1147.not %land.ext1151 = zext i1 %192 to i32 %arrayidx1153 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 0 store i32 %land.ext1151, i32* %arrayidx1153, align 4, !tbaa !51 %delta_q1134.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 1, i32 0 %193 = load i32, i32* %delta_q1134.1, align 8, !tbaa !238 %add1135.1 = add nsw i32 %193, %188 %194 = icmp slt i32 %add1135.1, 255 %cond.i.i.1 = select i1 %194, i32 %add1135.1, i32 255 %195 = icmp sgt i32 %cond.i.i.1, 0 %cond5.i.i.1 = select i1 %195, i32 %cond.i.i.1, i32 0 %arrayidx1143.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 1 store i32 %cond5.i.i.1, i32* %arrayidx1143.1, align 4, !tbaa !51 %tobool1147.not.1 = icmp slt i32 %cond.i.i.1, 1 %196 = and i1 %186, %tobool1147.not.1 %land.ext1151.1 = zext i1 %196 to i32 %arrayidx1153.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 1 store i32 %land.ext1151.1, i32* %arrayidx1153.1, align 4, !tbaa !51 %and1158.13484 = and i1 %192, %tobool1147.not.1 %delta_q1134.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 2, i32 0 %197 = load i32, i32* %delta_q1134.2, align 8, !tbaa !238 %add1135.2 = add nsw i32 %197, %188 %198 = icmp slt i32 %add1135.2, 255 %cond.i.i.2 = select i1 %198, i32 %add1135.2, i32 255 %199 = icmp sgt i32 %cond.i.i.2, 0 %cond5.i.i.2 = select i1 %199, i32 %cond.i.i.2, i32 0 %arrayidx1143.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 2 store i32 %cond5.i.i.2, i32* %arrayidx1143.2, align 4, !tbaa !51 %tobool1147.not.2 = icmp slt i32 %cond.i.i.2, 1 %200 = and i1 %186, %tobool1147.not.2 %land.ext1151.2 = zext i1 %200 to i32 %arrayidx1153.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 2 store i32 %land.ext1151.2, i32* %arrayidx1153.2, align 4, !tbaa !51 %and1158.23485 = and i1 %and1158.13484, %tobool1147.not.2 %delta_q1134.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 3, i32 0 %201 = load i32, i32* %delta_q1134.3, align 8, !tbaa !238 %add1135.3 = add nsw i32 %201, %188 %202 = icmp slt i32 %add1135.3, 255 %cond.i.i.3 = select i1 %202, i32 %add1135.3, i32 255 %203 = icmp sgt i32 %cond.i.i.3, 0 %cond5.i.i.3 = select i1 %203, i32 %cond.i.i.3, i32 0 %arrayidx1143.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 3 store i32 %cond5.i.i.3, i32* %arrayidx1143.3, align 4, !tbaa !51 %tobool1147.not.3 = icmp slt i32 %cond.i.i.3, 1 %204 = and i1 %186, %tobool1147.not.3 %land.ext1151.3 = zext i1 %204 to i32 %arrayidx1153.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 3 store i32 %land.ext1151.3, i32* %arrayidx1153.3, align 4, !tbaa !51 %and1158.33486 = and i1 %and1158.23485, %tobool1147.not.3 %delta_q1134.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 4, i32 0 %205 = load i32, i32* %delta_q1134.4, align 8, !tbaa !238 %add1135.4 = add nsw i32 %205, %188 %206 = icmp slt i32 %add1135.4, 255 %cond.i.i.4 = select i1 %206, i32 %add1135.4, i32 255 %207 = icmp sgt i32 %cond.i.i.4, 0 %cond5.i.i.4 = select i1 %207, i32 %cond.i.i.4, i32 0 %arrayidx1143.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 4 store i32 %cond5.i.i.4, i32* %arrayidx1143.4, align 4, !tbaa !51 %tobool1147.not.4 = icmp slt i32 %cond.i.i.4, 1 %208 = and i1 %186, %tobool1147.not.4 %land.ext1151.4 = zext i1 %208 to i32 %arrayidx1153.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 4 store i32 %land.ext1151.4, i32* %arrayidx1153.4, align 4, !tbaa !51 %and1158.43487 = and i1 %and1158.33486, %208 %delta_q1134.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 5, i32 0 %209 = load i32, i32* %delta_q1134.5, align 8, !tbaa !238 %add1135.5 = add nsw i32 %209, %188 %210 = icmp slt i32 %add1135.5, 255 %cond.i.i.5 = select i1 %210, i32 %add1135.5, i32 255 %211 = icmp sgt i32 %cond.i.i.5, 0 %cond5.i.i.5 = select i1 %211, i32 %cond.i.i.5, i32 0 %arrayidx1143.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 5 store i32 %cond5.i.i.5, i32* %arrayidx1143.5, align 4, !tbaa !51 %tobool1147.not.5 = icmp slt i32 %cond.i.i.5, 1 %212 = and i1 %186, %tobool1147.not.5 %land.ext1151.5 = zext i1 %212 to i32 %arrayidx1153.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 5 store i32 %land.ext1151.5, i32* %arrayidx1153.5, align 4, !tbaa !51 %and1158.53488 = and i1 %and1158.43487, %tobool1147.not.5 %delta_q1134.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 6, i32 0 %213 = load i32, i32* %delta_q1134.6, align 8, !tbaa !238 %add1135.6 = add nsw i32 %213, %188 %214 = icmp slt i32 %add1135.6, 255 %cond.i.i.6 = select i1 %214, i32 %add1135.6, i32 255 %215 = icmp sgt i32 %cond.i.i.6, 0 %cond5.i.i.6 = select i1 %215, i32 %cond.i.i.6, i32 0 %arrayidx1143.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 6 store i32 %cond5.i.i.6, i32* %arrayidx1143.6, align 4, !tbaa !51 %tobool1147.not.6 = icmp slt i32 %cond.i.i.6, 1 %216 = and i1 %186, %tobool1147.not.6 %land.ext1151.6 = zext i1 %216 to i32 %arrayidx1153.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 6 store i32 %land.ext1151.6, i32* %arrayidx1153.6, align 4, !tbaa !51 %and1158.63489 = and i1 %and1158.53488, %tobool1147.not.6 %and1158.6 = zext i1 %and1158.63489 to i32 store i32 %and1158.6, i32* %all_lossless, align 4, !tbaa !237 %delta_q1134.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 4, i32 0, i32 7, i32 0 %217 = load i32, i32* %delta_q1134.7, align 8, !tbaa !238 %add1135.7 = add nsw i32 %217, %188 %218 = icmp slt i32 %add1135.7, 255 %cond.i.i.7 = select i1 %218, i32 %add1135.7, i32 255 %219 = icmp sgt i32 %cond.i.i.7, 0 %cond5.i.i.7 = select i1 %219, i32 %cond.i.i.7, i32 0 %arrayidx1143.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 7 store i32 %cond5.i.i.7, i32* %arrayidx1143.7, align 4, !tbaa !51 %tobool1147.not.7 = icmp slt i32 %cond.i.i.7, 1 %220 = and i1 %186, %tobool1147.not.7 %land.ext1151.7 = zext i1 %220 to i32 %arrayidx1153.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 7 store i32 %land.ext1151.7, i32* %arrayidx1153.7, align 4, !tbaa !51 %and1158.73490 = and i1 %and1158.63489, %220 %and1158.7 = zext i1 %and1158.73490 to i32 br label %for.cond.cleanup1122 for.body1123.us.preheader: ; preds = %land.end1116 %arrayidx1143.us = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 0 %tobool1147.not.us = icmp eq i32 %188, 0 %221 = and i1 %186, %tobool1147.not.us %land.ext1151.us = zext i1 %221 to i32 %arrayidx1153.us = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 0 %222 = insertelement <4 x i32> undef, i32 %188, i32 0 %223 = shufflevector <4 x i32> %222, <4 x i32> undef, <4 x i32> zeroinitializer %224 = bitcast i32* %arrayidx1143.us to <4 x i32>* store <4 x i32> %223, <4 x i32>* %224, align 4, !tbaa !51 %225 = insertelement <4 x i32> undef, i32 %land.ext1151.us, i32 0 %226 = shufflevector <4 x i32> %225, <4 x i32> undef, <4 x i32> zeroinitializer %227 = bitcast i32* %arrayidx1153.us to <4 x i32>* store <4 x i32> %226, <4 x i32>* %227, align 4, !tbaa !51 %arrayidx1143.us.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 6, i32 4 %arrayidx1153.us.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 36, i32 5, i32 4 store i32 %land.ext1151.us, i32* %all_lossless, align 4, !tbaa !237 %228 = bitcast i32* %arrayidx1143.us.4 to <4 x i32>* store <4 x i32> %223, <4 x i32>* %228, align 4, !tbaa !51 %229 = bitcast i32* %arrayidx1153.us.4 to <4 x i32>* store <4 x i32> %226, <4 x i32>* %229, align 4, !tbaa !51 br label %for.cond.cleanup1122 for.cond.cleanup1122: ; preds = %for.body1123.preheader, %for.body1123.us.preheader %storemerge = phi i32 [ %and1158.7, %for.body1123.preheader ], [ %land.ext1151.us, %for.body1123.us.preheader ] store i32 %storemerge, i32* %all_lossless, align 4, !tbaa !237 %tobool1164.not = icmp eq i32 %storemerge, 0 br i1 %tobool1164.not, label %lor.lhs.false1165, label %if.then1168 lor.lhs.false1165: ; preds = %for.cond.cleanup1122 %allow_intrabc1166 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 %230 = load i32, i32* %allow_intrabc1166, align 8, !tbaa !190 %tobool1167.not = icmp eq i32 %230, 0 br i1 %tobool1167.not, label %if.else1179, label %if.then1168 if.then1168: ; preds = %lor.lhs.false1165, %for.cond.cleanup1122 %arrayidx1172 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 0, i32 0 %sharpness = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 6 store i32 0, i32* %sharpness, align 8, !tbaa !239 %mode_ref_delta_enabled = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 3 %231 = bitcast i32* %arrayidx1172 to i8* call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %231, i8 0, i64 16, i1 false) store i32 1, i32* %mode_ref_delta_enabled, align 8, !tbaa !240 %mode_ref_delta_update = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 4 store i32 1, i32* %mode_ref_delta_update, align 4, !tbaa !241 %mode_ref_deltas = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5 %232 = bitcast %struct.Dav1dLoopfilterModeRefDeltas* %mode_ref_deltas to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 8 dereferenceable(40) %232, i8* nonnull align 4 dereferenceable(40) bitcast (%struct.Dav1dLoopfilterModeRefDeltas* @default_mode_ref_deltas to i8*), i32 40, i1 false), !tbaa.struct !242 br label %if.end1295 if.else1179: ; preds = %lor.lhs.false1165 %call1180 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1183 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 0, i32 0 store i32 %call1180, i32* %arrayidx1183, align 8, !tbaa !51 %call1184 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1187 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 0, i32 1 store i32 %call1184, i32* %arrayidx1187, align 4, !tbaa !51 %233 = load i32, i32* %monochrome, align 4, !tbaa !81 %tobool1189.not = icmp eq i32 %233, 0 br i1 %tobool1189.not, label %land.lhs.true1190, label %if.end1207 land.lhs.true1190: ; preds = %if.else1179 %234 = load i32, i32* %arrayidx1183, align 8, !tbaa !51 %235 = or i32 %234, %call1184 %236 = icmp eq i32 %235, 0 br i1 %236, label %if.end1207, label %if.then1200 if.then1200: ; preds = %land.lhs.true1190 %call1201 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %level_u1203 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 1 store i32 %call1201, i32* %level_u1203, align 8, !tbaa !243 %call1204 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %level_v1206 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 2 store i32 %call1204, i32* %level_v1206, align 4, !tbaa !244 br label %if.end1207 if.end1207: ; preds = %land.lhs.true1190, %if.then1200, %if.else1179 %call1208 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %sharpness1210 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 6 store i32 %call1208, i32* %sharpness1210, align 8, !tbaa !239 %237 = load i32, i32* %primary_ref_frame, align 8, !tbaa !184 %cmp1212 = icmp eq i32 %237, 7 br i1 %cmp1212, label %if.then1214, label %if.else1217 if.then1214: ; preds = %if.end1207 %mode_ref_deltas1216 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5 %238 = bitcast %struct.Dav1dLoopfilterModeRefDeltas* %mode_ref_deltas1216 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 8 dereferenceable(40) %238, i8* nonnull align 4 dereferenceable(40) bitcast (%struct.Dav1dLoopfilterModeRefDeltas* @default_mode_ref_deltas to i8*), i32 40, i1 false), !tbaa.struct !242 br label %if.end1242 if.else1217: ; preds = %if.end1207 %arrayidx1221 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 %237 %239 = load i32, i32* %arrayidx1221, align 4, !tbaa !51 %frame_hdr1226 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %239, i32 0, i32 0, i32 1 %240 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1226, align 4, !tbaa !168 %tobool1227.not = icmp eq %struct.Dav1dFrameHeader* %240, null br i1 %tobool1227.not, label %cleanup2152, label %if.end1229 if.end1229: ; preds = %if.else1217 %mode_ref_deltas1231 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5 %mode_ref_deltas1238 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %240, i32 0, i32 39, i32 5 %241 = bitcast %struct.Dav1dLoopfilterModeRefDeltas* %mode_ref_deltas1231 to i8* %242 = bitcast %struct.Dav1dLoopfilterModeRefDeltas* %mode_ref_deltas1238 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 8 dereferenceable(40) %241, i8* nonnull align 8 dereferenceable(40) %242, i32 40, i1 false), !tbaa.struct !242 br label %if.end1242 if.end1242: ; preds = %if.end1229, %if.then1214 %call1243 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %mode_ref_delta_enabled1245 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 3 store i32 %call1243, i32* %mode_ref_delta_enabled1245, align 8, !tbaa !240 %tobool1248.not = icmp eq i32 %call1243, 0 br i1 %tobool1248.not, label %if.end1295, label %if.then1249 if.then1249: ; preds = %if.end1242 %call1250 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %mode_ref_delta_update1252 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 4 store i32 %call1250, i32* %mode_ref_delta_update1252, align 4, !tbaa !241 %tobool1255.not = icmp eq i32 %call1250, 0 br i1 %tobool1255.not, label %if.end1295, label %for.body1262.preheader for.body1262.preheader: ; preds = %if.then1249 %call1263 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not = icmp eq i32 %call1263, 0 br i1 %tobool1264.not, label %for.inc1271, label %if.then1265 if.then1265: ; preds = %for.body1262.preheader %call1266 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 0 store i32 %call1266, i32* %arrayidx1269, align 4, !tbaa !51 br label %for.inc1271 for.inc1271: ; preds = %for.body1262.preheader, %if.then1265 %call1263.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.1 = icmp eq i32 %call1263.1, 0 br i1 %tobool1264.not.1, label %for.inc1271.1, label %if.then1265.1 if.then1283: ; preds = %for.inc1271.7 %call1284 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1287 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 0, i32 0 store i32 %call1284, i32* %arrayidx1287, align 4, !tbaa !51 br label %for.inc1289 for.inc1289: ; preds = %for.inc1271.7, %if.then1283 %call1281.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1282.not.1 = icmp eq i32 %call1281.1, 0 br i1 %tobool1282.not.1, label %if.end1295, label %if.then1283.1 if.end1295: ; preds = %for.inc1289, %if.then1283.1, %if.end1242, %if.then1249, %if.then1168 %243 = load i32, i32* %all_lossless, align 4, !tbaa !237 %tobool1297.not = icmp eq i32 %243, 0 br i1 %tobool1297.not, label %land.lhs.true1298, label %if.else1332 land.lhs.true1298: ; preds = %if.end1295 %cdef = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 44 %244 = load i32, i32* %cdef, align 4, !tbaa !78 %tobool1299.not = icmp eq i32 %244, 0 br i1 %tobool1299.not, label %if.else1332, label %land.lhs.true1300 land.lhs.true1300: ; preds = %land.lhs.true1298 %allow_intrabc1301 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 %245 = load i32, i32* %allow_intrabc1301, align 8, !tbaa !190 %tobool1302.not = icmp eq i32 %245, 0 br i1 %tobool1302.not, label %if.then1303, label %if.else1332 if.then1303: ; preds = %land.lhs.true1300 %call1304 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %add1305 = add i32 %call1304, 3 %damping = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 0 store i32 %add1305, i32* %damping, align 4, !tbaa !245 %call1307 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %n_bits = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 1 store i32 %call1307, i32* %n_bits, align 4, !tbaa !246 %cmp13143377.not = icmp eq i32 %call1307, 31 br i1 %cmp13143377.not, label %if.end1341, label %for.body1317 for.body1317: ; preds = %if.then1303, %for.inc1328 %i1309.03378 = phi i32 [ %inc1329, %for.inc1328 ], [ 0, %if.then1303 ] %call1318 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1320 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 2, i32 %i1309.03378 store i32 %call1318, i32* %arrayidx1320, align 4, !tbaa !51 %246 = load i32, i32* %monochrome, align 4, !tbaa !81 %tobool1322.not = icmp eq i32 %246, 0 br i1 %tobool1322.not, label %if.then1323, label %for.inc1328 if.then1323: ; preds = %for.body1317 %call1324 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1326 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 3, i32 %i1309.03378 store i32 %call1324, i32* %arrayidx1326, align 4, !tbaa !51 br label %for.inc1328 for.inc1328: ; preds = %for.body1317, %if.then1323 %inc1329 = add nuw nsw i32 %i1309.03378, 1 %247 = load i32, i32* %n_bits, align 4, !tbaa !246 %shl1313 = shl nuw i32 1, %247 %cmp1314 = icmp slt i32 %inc1329, %shl1313 br i1 %cmp1314, label %for.body1317, label %if.end1341 if.else1332: ; preds = %land.lhs.true1300, %land.lhs.true1298, %if.end1295 %n_bits1334 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 1 store i32 0, i32* %n_bits1334, align 4, !tbaa !246 %arrayidx1337 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 2, i32 0 store i32 0, i32* %arrayidx1337, align 4, !tbaa !51 %arrayidx1340 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 40, i32 3, i32 0 store i32 0, i32* %arrayidx1340, align 4, !tbaa !51 br label %if.end1341 if.end1341: ; preds = %for.inc1328, %if.then1303, %if.else1332 %248 = load i32, i32* %all_lossless, align 4, !tbaa !237 %tobool1343.not = icmp eq i32 %248, 0 br i1 %tobool1343.not, label %land.lhs.true1348, label %lor.lhs.false1344 lor.lhs.false1344: ; preds = %if.end1341 %enabled1346 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 %249 = load i32, i32* %enabled1346, align 4, !tbaa !189 %tobool1347.not = icmp eq i32 %249, 0 br i1 %tobool1347.not, label %if.else1445, label %land.lhs.true1348 land.lhs.true1348: ; preds = %lor.lhs.false1344, %if.end1341 %restoration = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 45 %250 = load i32, i32* %restoration, align 4, !tbaa !79 %tobool1349.not = icmp eq i32 %250, 0 br i1 %tobool1349.not, label %if.else1445, label %land.lhs.true1350 land.lhs.true1350: ; preds = %land.lhs.true1348 %allow_intrabc1351 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 26 %251 = load i32, i32* %allow_intrabc1351, align 8, !tbaa !190 %tobool1352.not = icmp eq i32 %251, 0 br i1 %tobool1352.not, label %if.then1353, label %if.else1445 if.then1353: ; preds = %land.lhs.true1350 %call1354 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %arrayidx1356 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 0 store i32 %call1354, i32* %arrayidx1356, align 4, !tbaa !76 %252 = load i32, i32* %monochrome, align 4, !tbaa !81 %tobool1358.not = icmp eq i32 %252, 0 br i1 %tobool1358.not, label %if.then1359, label %if.else1368 if.then1359: ; preds = %if.then1353 %call1360 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %arrayidx1363 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 1 store i32 %call1360, i32* %arrayidx1363, align 4, !tbaa !76 %call1364 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %.pre3476 = load i32, i32* %arrayidx1356, align 4, !tbaa !76 br label %if.end1375 if.else1368: ; preds = %if.then1353 %arrayidx1374 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 1 store i32 0, i32* %arrayidx1374, align 4, !tbaa !76 br label %if.end1375 if.end1375: ; preds = %if.else1368, %if.then1359 %253 = phi i32 [ %.pre3476, %if.then1359 ], [ %call1354, %if.else1368 ] %254 = phi i32 [ %call1364, %if.then1359 ], [ 0, %if.else1368 ] %255 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 2 store i32 %254, i32* %255, align 4 %tobool1379.not = icmp eq i32 %253, 0 br i1 %tobool1379.not, label %lor.lhs.false1380, label %if.then1390 lor.lhs.false1380: ; preds = %if.end1375 %arrayidx1383 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 1 %256 = load i32, i32* %arrayidx1383, align 4, !tbaa !76 %257 = or i32 %256, %254 %258 = icmp eq i32 %257, 0 br i1 %258, label %if.else1440, label %if.then1390 if.then1390: ; preds = %lor.lhs.false1380, %if.end1375 %259 = load i32, i32* %sb128, align 4, !tbaa !64 %add1392 = add nsw i32 %259, 6 %arrayidx1394 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 1, i32 0 store i32 %add1392, i32* %arrayidx1394, align 4, !tbaa !51 %call1395 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1396.not = icmp eq i32 %call1395, 0 %.pre3477 = load i32, i32* %arrayidx1394, align 4, !tbaa !51 br i1 %tobool1396.not, label %if.end1411, label %if.then1397 if.then1397: ; preds = %if.then1390 %inc1401 = add nsw i32 %.pre3477, 1 store i32 %inc1401, i32* %arrayidx1394, align 4, !tbaa !51 %260 = load i32, i32* %sb128, align 4, !tbaa !64 %tobool1403.not = icmp eq i32 %260, 0 br i1 %tobool1403.not, label %if.then1404, label %if.end1411 if.then1404: ; preds = %if.then1397 %call1405 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %261 = load i32, i32* %arrayidx1394, align 4, !tbaa !51 %add1409 = add i32 %261, %call1405 store i32 %add1409, i32* %arrayidx1394, align 4, !tbaa !51 br label %if.end1411 if.end1411: ; preds = %if.then1390, %if.then1397, %if.then1404 %262 = phi i32 [ %inc1401, %if.then1397 ], [ %add1409, %if.then1404 ], [ %.pre3477, %if.then1390 ] %arrayidx1417 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 1, i32 1 store i32 %262, i32* %arrayidx1417, align 4, !tbaa !51 %arrayidx1420 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 1 %263 = load i32, i32* %arrayidx1420, align 4, !tbaa !76 %tobool1421.not = icmp eq i32 %263, 0 br i1 %tobool1421.not, label %lor.lhs.false1422, label %land.lhs.true1427 lor.lhs.false1422: ; preds = %if.end1411 %264 = load i32, i32* %255, align 4, !tbaa !76 %tobool1426.not = icmp eq i32 %264, 0 br i1 %tobool1426.not, label %if.end1455, label %land.lhs.true1427 land.lhs.true1427: ; preds = %lor.lhs.false1422, %if.end1411 %ss_hor = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 46 %265 = load i32, i32* %ss_hor, align 4, !tbaa !88 %cmp1428 = icmp eq i32 %265, 1 br i1 %cmp1428, label %land.lhs.true1430, label %if.end1455 land.lhs.true1430: ; preds = %land.lhs.true1427 %ss_ver = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 47 %266 = load i32, i32* %ss_ver, align 4, !tbaa !87 %cmp1431 = icmp eq i32 %266, 1 br i1 %cmp1431, label %if.then1433, label %if.end1455 if.then1433: ; preds = %land.lhs.true1430 %call1434 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %267 = load i32, i32* %arrayidx1417, align 4, !tbaa !51 %sub1438 = sub i32 %267, %call1434 store i32 %sub1438, i32* %arrayidx1417, align 4, !tbaa !51 br label %if.end1455 if.else1440: ; preds = %lor.lhs.false1380 %arrayidx1443 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 1, i32 0 store i32 8, i32* %arrayidx1443, align 4, !tbaa !51 br label %if.end1455 if.else1445: ; preds = %land.lhs.true1350, %land.lhs.true1348, %lor.lhs.false1344 %arrayidx1448 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 0 store i32 0, i32* %arrayidx1448, align 4, !tbaa !76 %arrayidx1451 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 1 store i32 0, i32* %arrayidx1451, align 4, !tbaa !76 %arrayidx1454 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 41, i32 0, i32 2 store i32 0, i32* %arrayidx1454, align 4, !tbaa !76 br label %if.end1455 if.end1455: ; preds = %if.else1440, %if.then1433, %land.lhs.true1430, %land.lhs.true1427, %lor.lhs.false1422, %if.else1445 %268 = load i32, i32* %all_lossless, align 4, !tbaa !237 %tobool1457.not = icmp eq i32 %268, 0 br i1 %tobool1457.not, label %cond.false1459, label %cond.end1463 cond.false1459: ; preds = %if.end1455 %call1460 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1461.not = icmp eq i32 %call1460, 0 %cond1462 = select i1 %tobool1461.not, i32 1, i32 2 br label %cond.end1463 cond.end1463: ; preds = %if.end1455, %cond.false1459 %cond1464 = phi i32 [ %cond1462, %cond.false1459 ], [ 0, %if.end1455 ] %txfm_mode = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 42 store i32 %cond1464, i32* %txfm_mode, align 8, !tbaa !247 %269 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and1466 = and i32 %269, 1 %tobool1467.not = icmp eq i32 %and1466, 0 br i1 %tobool1467.not, label %cond.end1471.thread, label %cond.end1471 cond.end1471.thread: ; preds = %cond.end1463 %switchable_comp_refs3274 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 43 store i32 0, i32* %switchable_comp_refs3274, align 4, !tbaa !248 %skip_mode_allowed3275 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 44 store i32 0, i32* %skip_mode_allowed3275, align 8, !tbaa !249 br label %cond.end1633 cond.end1471: ; preds = %cond.end1463 %call1469 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %switchable_comp_refs = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 43 store i32 %call1469, i32* %switchable_comp_refs, align 4, !tbaa !248 %skip_mode_allowed = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 44 store i32 0, i32* %skip_mode_allowed, align 8, !tbaa !249 %tobool1474.not = icmp eq i32 %call1469, 0 br i1 %tobool1474.not, label %cond.end1633, label %land.lhs.true1475 land.lhs.true1475: ; preds = %cond.end1471 %270 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and1477 = and i32 %270, 1 %tobool1478.not = icmp eq i32 %and1477, 0 br i1 %tobool1478.not, label %cond.end1633, label %land.lhs.true1479 land.lhs.true1479: ; preds = %land.lhs.true1475 %271 = load i32, i32* %order_hint, align 4, !tbaa !73 %tobool1481.not = icmp eq i32 %271, 0 br i1 %tobool1481.not, label %cond.end1633, label %if.then1482 if.then1482: ; preds = %land.lhs.true1479 %272 = load i32, i32* %frame_offset, align 8, !tbaa !183 %arrayidx1492 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 0 %273 = load i32, i32* %arrayidx1492, align 4, !tbaa !51 %arrayidx1496 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %273, i32 0, i32 0, i32 2, i32 0 %274 = load i8*, i8** %arrayidx1496, align 8, !tbaa !26 %tobool1497.not = icmp eq i8* %274, null br i1 %tobool1497.not, label %cleanup2152, label %if.end1499 if.end1499: ; preds = %if.then1482 %order_hint_n_bits1508 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 42 %frame_hdr1506 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %273, i32 0, i32 0, i32 1 %275 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506, align 4, !tbaa !168 %frame_offset1507 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %275, i32 0, i32 4 %276 = load i32, i32* %frame_offset1507, align 8, !tbaa !183 %277 = load i32, i32* %order_hint_n_bits1508, align 4, !tbaa !67 %tobool.not.i3170 = icmp eq i32 %277, 0 br i1 %tobool.not.i3170, label %if.end1535, label %get_poc_diff.exit3180 get_poc_diff.exit3180: ; preds = %if.end1499 %sub.i3171 = add nsw i32 %277, -1 %shl.i3172 = shl nuw i32 1, %sub.i3171 %sub1.i3173 = sub nsw i32 %276, %272 %sub2.i3174 = add nsw i32 %shl.i3172, -1 %and.i3175 = and i32 %sub2.i3174, %sub1.i3173 %and3.i3176 = and i32 %shl.i3172, %sub1.i3173 %sub4.i3177 = sub nsw i32 %and.i3175, %and3.i3176 %cmp1510 = icmp sgt i32 %sub4.i3177, 0 br i1 %cmp1510, label %if.end1535, label %if.else1522 if.else1522: ; preds = %get_poc_diff.exit3180 %cmp1523.not = icmp eq i32 %sub4.i3177, 0 %spec.select3567 = select i1 %cmp1523.not, i32 -1, i32 %276 br label %if.end1535 if.end1535: ; preds = %if.else1522, %get_poc_diff.exit3180, %if.end1499 %off_before.1 = phi i32 [ -1, %if.end1499 ], [ -1, %get_poc_diff.exit3180 ], [ %spec.select3567, %if.else1522 ] %off_after.1 = phi i32 [ -1, %if.end1499 ], [ %276, %get_poc_diff.exit3180 ], [ -1, %if.else1522 ] %arrayidx1492.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 1 %278 = load i32, i32* %arrayidx1492.1, align 4, !tbaa !51 %arrayidx1496.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %278, i32 0, i32 0, i32 2, i32 0 %279 = load i8*, i8** %arrayidx1496.1, align 8, !tbaa !26 %tobool1497.not.1 = icmp eq i8* %279, null br i1 %tobool1497.not.1, label %cleanup2152, label %if.end1499.1 if.else1553: ; preds = %if.end1535.6 %cmp1541.not = xor i1 %cmp1541, true %brmerge3568 = or i1 %tobool.not.i3170, %cmp1541.not br i1 %brmerge3568, label %cond.end1633, label %get_poc_diff.exit3143 get_poc_diff.exit3143: ; preds = %if.else1553 %sub.i3134 = add nsw i32 %277, -1 %shl.i3135 = shl nuw i32 1, %sub.i3134 %sub1.i3136 = sub nsw i32 %276, %off_before.1.6 %sub2.i3137 = add nsw i32 %shl.i3135, -1 %and.i3138 = and i32 %sub2.i3137, %sub1.i3136 %and3.i3139 = and i32 %shl.i3135, %sub1.i3136 %cmp1585 = icmp slt i32 %and.i3138, %and3.i3139 %spec.select3569 = select i1 %cmp1585, i32 %276, i32 -1 %sub.i3134.1 = add nsw i32 %277, -1 %shl.i3135.1 = shl nuw i32 1, %sub.i3134.1 %sub1.i3136.1 = sub nsw i32 %352, %off_before.1.6 %sub2.i3137.1 = add nsw i32 %shl.i3135.1, -1 %and.i3138.1 = and i32 %sub2.i3137.1, %sub1.i3136.1 %and3.i3139.1 = and i32 %shl.i3135.1, %sub1.i3136.1 %cmp1585.1 = icmp slt i32 %and.i3138.1, %and3.i3139.1 br i1 %cmp1585.1, label %if.then1587.1, label %get_poc_diff.exit3143.2 cond.true1630: ; preds = %if.end1597.6, %get_poc_diff.exit3132.6, %if.end1535.6 %off_after_idx.1.6.sink3614 = phi i32 [ %off_after_idx.1.6, %if.end1535.6 ], [ %off_before2_idx.1.6, %if.end1597.6 ], [ %off_before2_idx.1.5.ph, %get_poc_diff.exit3132.6 ] %cmp.i3146 = icmp slt i32 %off_before_idx.1.6, %off_after_idx.1.6.sink3614 %cond.i3147 = select i1 %cmp.i3146, i32 %off_before_idx.1.6, i32 %off_after_idx.1.6.sink3614 %arrayidx1548 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 46, i32 0 store i32 %cond.i3147, i32* %arrayidx1548, align 8, !tbaa !51 %cmp.i3144 = icmp sgt i32 %off_before_idx.1.6, %off_after_idx.1.6.sink3614 %cond.i3145 = select i1 %cmp.i3144, i32 %off_before_idx.1.6, i32 %off_after_idx.1.6.sink3614 %arrayidx1551 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 46, i32 1 store i32 %cond.i3145, i32* %arrayidx1551, align 4, !tbaa !51 store i32 1, i32* %skip_mode_allowed, align 8, !tbaa !249 %call1631 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 br label %cond.end1633 cond.end1633: ; preds = %if.else1553, %land.lhs.true1475, %land.lhs.true1479, %if.end1597.6, %cond.end1471, %cond.end1471.thread, %cond.true1630 %cond1634 = phi i32 [ %call1631, %cond.true1630 ], [ 0, %cond.end1471.thread ], [ 0, %cond.end1471 ], [ 0, %if.end1597.6 ], [ 0, %if.else1553 ], [ 0, %land.lhs.true1479 ], [ 0, %land.lhs.true1475 ] %skip_mode_enabled = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 45 store i32 %cond1634, i32* %skip_mode_enabled, align 4, !tbaa !250 %280 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool1636.not = icmp eq i32 %280, 0 br i1 %tobool1636.not, label %land.lhs.true1637, label %land.end1646 land.lhs.true1637: ; preds = %cond.end1633 %281 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and1639 = and i32 %281, 1 %tobool1640.not = icmp eq i32 %and1639, 0 br i1 %tobool1640.not, label %land.end1646, label %land.lhs.true1641 land.lhs.true1641: ; preds = %land.lhs.true1637 %warped_motion = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 35 %282 = load i32, i32* %warped_motion, align 4, !tbaa !71 %tobool1642.not = icmp eq i32 %282, 0 br i1 %tobool1642.not, label %land.end1646, label %land.rhs1643 land.rhs1643: ; preds = %land.lhs.true1641 %call1644 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1645 = icmp ne i32 %call1644, 0 br label %land.end1646 land.end1646: ; preds = %land.rhs1643, %land.lhs.true1641, %land.lhs.true1637, %cond.end1633 %283 = phi i1 [ false, %land.lhs.true1641 ], [ false, %land.lhs.true1637 ], [ false, %cond.end1633 ], [ %tobool1645, %land.rhs1643 ] %land.ext1647 = zext i1 %283 to i32 %warp_motion = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 47 store i32 %land.ext1647, i32* %warp_motion, align 8, !tbaa !251 %call1648 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %reduced_txtp_set = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 48 store i32 %call1648, i32* %reduced_txtp_set, align 4, !tbaa !252 %arrayidx1655 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 0 %284 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %284, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 1 %285 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.1 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %285, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 2 %286 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.2 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %286, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 3 %287 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.3 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %287, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 4 %288 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.4 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %288, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 5 %289 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.5 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %289, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %arrayidx1655.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 6 %290 = bitcast %struct.Dav1dWarpedMotionParams* %arrayidx1655.6 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 dereferenceable(36) %290, i8* nonnull align 4 dereferenceable(36) bitcast (%struct.Dav1dWarpedMotionParams* @dav1d_default_wm_params to i8*), i32 36, i1 false), !tbaa.struct !253 %291 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %and1661 = and i32 %291, 1 %tobool1662.not = icmp eq i32 %and1661, 0 br i1 %tobool1662.not, label %if.end1801, label %for.cond1665.preheader for.cond1665.preheader: ; preds = %land.end1646 %hp1746 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 29 br label %for.body1669 for.body1669: ; preds = %for.cond1665.preheader, %for.inc1796 %i1664.03356 = phi i32 [ 0, %for.cond1665.preheader ], [ %inc1797, %for.inc1796 ] %call1670 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1671.not = icmp eq i32 %call1670, 0 br i1 %tobool1671.not, label %cond.end1683, label %cond.false1673 cond.false1673: ; preds = %for.body1669 %call1674 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1675.not = icmp eq i32 %call1674, 0 br i1 %tobool1675.not, label %cond.false1677, label %if.end1694 cond.false1677: ; preds = %cond.false1673 %call1678 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1679.not = icmp eq i32 %call1678, 0 %cond1680 = select i1 %tobool1679.not, i32 3, i32 1 br label %if.end1694 cond.end1683: ; preds = %for.body1669 %type1687 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 0 store i32 0, i32* %type1687, align 4, !tbaa !254 br label %for.inc1796 if.end1694: ; preds = %cond.false1677, %cond.false1673 %cond1684.ph = phi i32 [ 2, %cond.false1673 ], [ %cond1680, %cond.false1677 ] %type16873299 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 0 store i32 %cond1684.ph, i32* %type16873299, align 4, !tbaa !254 %292 = load i32, i32* %primary_ref_frame, align 8, !tbaa !184 %cmp1696 = icmp eq i32 %292, 7 br i1 %cmp1696, label %if.end1722, label %if.else1699 if.else1699: ; preds = %if.end1694 %arrayidx1703 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 %292 %293 = load i32, i32* %arrayidx1703, align 4, !tbaa !51 %frame_hdr1708 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %293, i32 0, i32 0, i32 1 %294 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1708, align 4, !tbaa !168 %tobool1709.not = icmp eq %struct.Dav1dFrameHeader* %294, null %arrayidx1718 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %294, i32 0, i32 49, i32 %i1664.03356 br i1 %tobool1709.not, label %cleanup2152, label %if.end1722 if.end1722: ; preds = %if.end1694, %if.else1699 %ref_gmv.2 = phi %struct.Dav1dWarpedMotionParams* [ %arrayidx1718, %if.else1699 ], [ @dav1d_default_wm_params, %if.end1694 ] %arraydecay = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 0 %arraydecay1726 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 0 %cmp1730 = icmp ugt i32 %cond1684.ph, 1 br i1 %cmp1730, label %if.end1755, label %if.end1755.thread if.end1755.thread: ; preds = %if.end1722 %295 = load i32, i32* %hp1746, align 4, !tbaa !192 %tobool1747.not = icmp eq i32 %295, 0 %sub1749 = select i1 %tobool1747.not, i32 8, i32 9 %add1754 = select i1 %tobool1747.not, i32 14, i32 13 br label %if.else1774 if.end1755: ; preds = %if.end1722 %arrayidx1733 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 2 %296 = load i32, i32* %arrayidx1733, align 4, !tbaa !51 %sub1734 = add nsw i32 %296, -65536 %shr1735 = ashr i32 %sub1734, 1 %call1736 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1735, i32 12) #7 %mul1737 = shl nsw i32 %call1736, 1 %add1738 = add nsw i32 %mul1737, 65536 %arrayidx1739 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 2 store i32 %add1738, i32* %arrayidx1739, align 4, !tbaa !51 %arrayidx1740 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 3 %297 = load i32, i32* %arrayidx1740, align 4, !tbaa !51 %shr1741 = ashr i32 %297, 1 %call1742 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1741, i32 12) #7 %mul1743 = shl nsw i32 %call1742, 1 %arrayidx1744 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 3 store i32 %mul1743, i32* %arrayidx1744, align 4, !tbaa !51 %.pre3478 = load i32, i32* %type16873299, align 4, !tbaa !254 %cmp1759 = icmp eq i32 %.pre3478, 3 br i1 %cmp1759, label %if.then1761, label %if.else1774 if.then1761: ; preds = %if.end1755 %arrayidx1762 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 4 %298 = load i32, i32* %arrayidx1762, align 4, !tbaa !51 %shr1763 = ashr i32 %298, 1 %call1764 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1763, i32 12) #7 %mul1765 = shl nsw i32 %call1764, 1 %arrayidx1766 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 4 store i32 %mul1765, i32* %arrayidx1766, align 4, !tbaa !51 %arrayidx1767 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 5 %299 = load i32, i32* %arrayidx1767, align 4, !tbaa !51 %sub1768 = add nsw i32 %299, -65536 %shr1769 = ashr i32 %sub1768, 1 %call1770 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1769, i32 12) #7 %mul1771 = shl nsw i32 %call1770, 1 %add1772 = add nsw i32 %mul1771, 65536 br label %cleanup1793.thread if.else1774: ; preds = %if.end1755.thread, %if.end1755 %shift.03519 = phi i32 [ %add1754, %if.end1755.thread ], [ 10, %if.end1755 ] %bits.03517 = phi i32 [ %sub1749, %if.end1755.thread ], [ 12, %if.end1755 ] %arrayidx1775 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 3 %300 = load i32, i32* %arrayidx1775, align 4, !tbaa !51 %sub1776 = sub nsw i32 0, %300 %arrayidx1777 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 4 store i32 %sub1776, i32* %arrayidx1777, align 4, !tbaa !51 %arrayidx1778 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 2 %301 = load i32, i32* %arrayidx1778, align 4, !tbaa !51 br label %cleanup1793.thread cleanup1793.thread: ; preds = %if.then1761, %if.else1774 %shift.03518 = phi i32 [ 10, %if.then1761 ], [ %shift.03519, %if.else1774 ] %bits.03516 = phi i32 [ 12, %if.then1761 ], [ %bits.03517, %if.else1774 ] %.sink3466 = phi i32 [ %add1772, %if.then1761 ], [ %301, %if.else1774 ] %302 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 5 store i32 %.sink3466, i32* %302, align 4 %303 = load i32, i32* %arraydecay1726, align 4, !tbaa !51 %shr1782 = ashr i32 %303, %shift.03518 %call1783 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1782, i32 %bits.03516) #7 %mul1785 = shl i32 %call1783, %shift.03518 store i32 %mul1785, i32* %arraydecay, align 4, !tbaa !51 %arrayidx1787 = getelementptr inbounds %struct.Dav1dWarpedMotionParams, %struct.Dav1dWarpedMotionParams* %ref_gmv.2, i32 0, i32 1, i32 1 %304 = load i32, i32* %arrayidx1787, align 4, !tbaa !51 %shr1788 = ashr i32 %304, %shift.03518 %call1789 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits* %gb, i32 %shr1788, i32 %bits.03516) #7 %mul1791 = shl i32 %call1789, %shift.03518 %arrayidx1792 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 49, i32 %i1664.03356, i32 1, i32 1 store i32 %mul1791, i32* %arrayidx1792, align 4, !tbaa !51 br label %for.inc1796 for.inc1796: ; preds = %cleanup1793.thread, %cond.end1683 %inc1797 = add nuw nsw i32 %i1664.03356, 1 %exitcond3443.not = icmp eq i32 %inc1797, 7 br i1 %exitcond3443.not, label %if.end1801, label %for.body1669 if.end1801: ; preds = %for.inc1796, %land.end1646 %film_grain_present = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 51 %305 = load i32, i32* %film_grain_present, align 4, !tbaa !91 %tobool1802.not = icmp eq i32 %305, 0 br i1 %tobool1802.not, label %land.end1812.thread, label %land.lhs.true1803 land.lhs.true1803: ; preds = %if.end1801 %306 = load i32, i32* %show_frame3233, align 4, !tbaa !176 %tobool1805.not = icmp eq i32 %306, 0 br i1 %tobool1805.not, label %lor.lhs.false1806, label %land.end1812 lor.lhs.false1806: ; preds = %land.lhs.true1803 %showable_frame1807 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 12 %307 = load i32, i32* %showable_frame1807, align 8, !tbaa !177 %tobool1808.not = icmp eq i32 %307, 0 br i1 %tobool1808.not, label %land.end1812.thread, label %land.end1812 land.end1812.thread: ; preds = %lor.lhs.false1806, %if.end1801 %present18143306 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 1 store i32 0, i32* %present18143306, align 8, !tbaa !256 br label %if.else2148 land.end1812: ; preds = %land.lhs.true1803, %lor.lhs.false1806 %call1810 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1811 = icmp ne i32 %call1810, 0 %land.ext1813 = zext i1 %tobool1811 to i32 %present1814 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 1 store i32 %land.ext1813, i32* %present1814, align 8, !tbaa !256 br i1 %tobool1811, label %if.then1818, label %if.else2148 if.then1818: ; preds = %land.end1812 %call1819 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 16) #7 %308 = load i32, i32* %frame_type3495, align 8, !tbaa !170 %cmp1821.not = icmp eq i32 %308, 1 br i1 %cmp1821.not, label %lor.end1826, label %lor.end1826.thread lor.end1826.thread: ; preds = %if.then1818 %update18293308 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 2 store i32 1, i32* %update18293308, align 4, !tbaa !257 br label %if.else1877 lor.end1826: ; preds = %if.then1818 %call1824 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1825 = icmp ne i32 %call1824, 0 %lor.ext1827 = zext i1 %tobool1825 to i32 %update1829 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 2 store i32 %lor.ext1827, i32* %update1829, align 4, !tbaa !257 br i1 %tobool1825, label %if.else1877, label %if.then1833 if.then1833: ; preds = %lor.end1826 %call1835 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx1842 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 0 %309 = load i32, i32* %arrayidx1842, align 4, !tbaa !51 %cmp1843 = icmp eq i32 %309, %call1835 br i1 %cmp1843, label %lor.lhs.false1852, label %for.inc1847 for.inc1847: ; preds = %if.then1833 %arrayidx1842.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 1 %310 = load i32, i32* %arrayidx1842.1, align 4, !tbaa !51 %cmp1843.1 = icmp eq i32 %310, %call1835 br i1 %cmp1843.1, label %lor.lhs.false1852, label %for.inc1847.1 lor.lhs.false1852: ; preds = %if.then1833, %for.inc1847, %for.inc1847.1, %for.inc1847.2, %for.inc1847.3, %for.inc1847.4, %for.inc1847.5 %frame_hdr1857 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %call1835, i32 0, i32 0, i32 1 %311 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1857, align 4, !tbaa !168 %tobool1858.not = icmp eq %struct.Dav1dFrameHeader* %311, null br i1 %tobool1858.not, label %error, label %cleanup1873 cleanup1873: ; preds = %lor.lhs.false1852 %312 = bitcast %struct.Dav1dFrameHeader* %1 to i8* %313 = bitcast %struct.Dav1dFrameHeader* %311 to i8* tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 8 dereferenceable(224) %312, i8* nonnull align 8 dereferenceable(224) %313, i32 224, i1 false), !tbaa.struct !258 %seed1872 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 0 store i32 %call1819, i32* %seed1872, align 8, !tbaa !260 br label %cleanup2152 if.else1877: ; preds = %lor.end1826.thread, %lor.end1826 %seed1880 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 0 store i32 %call1819, i32* %seed1880, align 8, !tbaa !261 %call1881 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 %num_y_points = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 1 store i32 %call1881, i32* %num_y_points, align 4, !tbaa !262 %cmp1883 = icmp sgt i32 %call1881, 14 br i1 %cmp1883, label %error, label %for.cond1888.preheader for.cond1888.preheader: ; preds = %if.else1877 %cmp18903352 = icmp sgt i32 %call1881, 0 br i1 %cmp18903352, label %for.body1893, label %for.end1922 for.body1893: ; preds = %for.cond1888.preheader, %if.end1912 %i1887.03353 = phi i32 [ %inc1919, %if.end1912 ], [ 0, %for.cond1888.preheader ] %call1894 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1895 = trunc i32 %call1894 to i8 %arrayidx1897 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 2, i32 %i1887.03353, i32 0 store i8 %conv1895, i8* %arrayidx1897, align 2, !tbaa !76 %tobool1898.not = icmp eq i32 %i1887.03353, 0 br i1 %tobool1898.not, label %if.end1912, label %land.lhs.true1899 land.lhs.true1899: ; preds = %for.body1893 %sub1901 = add nsw i32 %i1887.03353, -1 %arrayidx1903 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 2, i32 %sub1901, i32 0 %314 = load i8, i8* %arrayidx1903, align 2, !tbaa !76 %conv1904 = zext i8 %314 to i32 %conv1908 = and i32 %call1894, 255 %cmp1909.not = icmp ugt i32 %conv1908, %conv1904 br i1 %cmp1909.not, label %if.end1912, label %error if.end1912: ; preds = %land.lhs.true1899, %for.body1893 %call1913 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1914 = trunc i32 %call1913 to i8 %arrayidx1917 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 2, i32 %i1887.03353, i32 1 store i8 %conv1914, i8* %arrayidx1917, align 1, !tbaa !76 %inc1919 = add nuw nsw i32 %i1887.03353, 1 %315 = load i32, i32* %num_y_points, align 4, !tbaa !262 %cmp1890 = icmp slt i32 %inc1919, %315 br i1 %cmp1890, label %for.body1893, label %for.end1922 for.end1922: ; preds = %if.end1912, %for.cond1888.preheader %316 = load i32, i32* %monochrome, align 4, !tbaa !81 %tobool1924.not = icmp eq i32 %316, 0 br i1 %tobool1924.not, label %land.end1928, label %land.end1928.thread land.end1928.thread: ; preds = %for.end1922 %chroma_scaling_from_luma3521 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 3 store i32 0, i32* %chroma_scaling_from_luma3521, align 4, !tbaa !263 br label %if.then1946 land.end1928: ; preds = %for.end1922 %call1926 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1927 = icmp ne i32 %call1926, 0 %.pre3479 = load i32, i32* %monochrome, align 4, !tbaa !81 %land.ext1929 = zext i1 %tobool1927 to i32 %chroma_scaling_from_luma = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 3 store i32 %land.ext1929, i32* %chroma_scaling_from_luma, align 4, !tbaa !263 %317 = or i32 %call1926, %.pre3479 %.not = icmp eq i32 %317, 0 br i1 %.not, label %lor.lhs.false1935, label %if.then1946 lor.lhs.false1935: ; preds = %land.end1928 %ss_ver1936 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 47 %318 = load i32, i32* %ss_ver1936, align 4, !tbaa !87 %cmp1937 = icmp eq i32 %318, 1 br i1 %cmp1937, label %land.lhs.true1939, label %if.else1950 land.lhs.true1939: ; preds = %lor.lhs.false1935 %ss_hor1940 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 46 %319 = load i32, i32* %ss_hor1940, align 4, !tbaa !88 %cmp1941 = icmp eq i32 %319, 1 br i1 %cmp1941, label %land.lhs.true1943, label %if.else1950 land.lhs.true1943: ; preds = %land.lhs.true1939 %320 = load i32, i32* %num_y_points, align 4, !tbaa !262 %tobool1945.not = icmp eq i32 %320, 0 br i1 %tobool1945.not, label %if.then1946, label %if.else1950 if.then1946: ; preds = %land.end1928.thread, %land.end1928, %land.lhs.true1943 %chroma_scaling_from_luma3525 = phi i32* [ %chroma_scaling_from_luma3521, %land.end1928.thread ], [ %chroma_scaling_from_luma, %land.end1928 ], [ %chroma_scaling_from_luma, %land.lhs.true1943 ] %arrayidx1947 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 1 store i32 0, i32* %arrayidx1947, align 4, !tbaa !51 %arrayidx1949 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 0 store i32 0, i32* %arrayidx1949, align 8, !tbaa !51 br label %if.end2011 if.else1950: ; preds = %land.lhs.true1943, %land.lhs.true1939, %lor.lhs.false1935 %call1956 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 %arrayidx1958 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 0 store i32 %call1956, i32* %arrayidx1958, align 4, !tbaa !51 %cmp1961 = icmp sgt i32 %call1956, 10 br i1 %cmp1961, label %error, label %for.cond1966.preheader for.cond1966.preheader: ; preds = %if.else1950 %cmp19693347 = icmp sgt i32 %call1956, 0 br i1 %cmp19693347, label %for.body1972, label %for.inc2006 for.body1972: ; preds = %for.cond1966.preheader, %if.end1994 %i1965.03348 = phi i32 [ %inc2002, %if.end1994 ], [ 0, %for.cond1966.preheader ] %call1973 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1974 = trunc i32 %call1973 to i8 %arrayidx1977 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 0, i32 %i1965.03348, i32 0 store i8 %conv1974, i8* %arrayidx1977, align 2, !tbaa !76 %tobool1978.not = icmp eq i32 %i1965.03348, 0 br i1 %tobool1978.not, label %if.end1994, label %land.lhs.true1979 land.lhs.true1979: ; preds = %for.body1972 %sub1982 = add nsw i32 %i1965.03348, -1 %arrayidx1984 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 0, i32 %sub1982, i32 0 %321 = load i8, i8* %arrayidx1984, align 2, !tbaa !76 %conv1985 = zext i8 %321 to i32 %conv1990 = and i32 %call1973, 255 %cmp1991.not = icmp ugt i32 %conv1990, %conv1985 br i1 %cmp1991.not, label %if.end1994, label %error if.end1994: ; preds = %land.lhs.true1979, %for.body1972 %call1995 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1996 = trunc i32 %call1995 to i8 %arrayidx2000 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 0, i32 %i1965.03348, i32 1 store i8 %conv1996, i8* %arrayidx2000, align 1, !tbaa !76 %inc2002 = add nuw nsw i32 %i1965.03348, 1 %322 = load i32, i32* %arrayidx1958, align 4, !tbaa !51 %cmp1969 = icmp slt i32 %inc2002, %322 br i1 %cmp1969, label %for.body1972, label %for.inc2006 for.inc2006: ; preds = %if.end1994, %for.cond1966.preheader %call1956.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 4) #7 %arrayidx1958.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 1 store i32 %call1956.1, i32* %arrayidx1958.1, align 4, !tbaa !51 %cmp1961.1 = icmp sgt i32 %call1956.1, 10 br i1 %cmp1961.1, label %error, label %for.cond1966.preheader.1 if.end2011: ; preds = %if.end1994.1, %for.cond1966.preheader.1, %if.then1946 %chroma_scaling_from_luma3524 = phi i32* [ %chroma_scaling_from_luma3525, %if.then1946 ], [ %chroma_scaling_from_luma, %for.cond1966.preheader.1 ], [ %chroma_scaling_from_luma, %if.end1994.1 ] %323 = phi i32 [ 0, %if.then1946 ], [ %call1956.1, %for.cond1966.preheader.1 ], [ %345, %if.end1994.1 ] %ss_hor2012 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 46 %324 = load i32, i32* %ss_hor2012, align 4, !tbaa !88 %cmp2013 = icmp eq i32 %324, 1 br i1 %cmp2013, label %land.lhs.true2015, label %if.end2037 land.lhs.true2015: ; preds = %if.end2011 %ss_ver2016 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 47 %325 = load i32, i32* %ss_ver2016, align 4, !tbaa !87 %cmp2017 = icmp eq i32 %325, 1 br i1 %cmp2017, label %land.lhs.true2019, label %if.end2037 land.lhs.true2019: ; preds = %land.lhs.true2015 %arrayidx2021 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 0 %326 = load i32, i32* %arrayidx2021, align 8, !tbaa !51 %tobool2022 = icmp eq i32 %326, 0 %tobool2029 = icmp ne i32 %323, 0 %cmp2034.not = xor i1 %tobool2022, %tobool2029 br i1 %cmp2034.not, label %if.end2037, label %error if.end2037: ; preds = %land.lhs.true2019, %land.lhs.true2015, %if.end2011 %call2038 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %add2039 = add i32 %call2038, 8 %scaling_shift = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 6 store i32 %add2039, i32* %scaling_shift, align 8, !tbaa !264 %call2040 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %ar_coeff_lag = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 7 store i32 %call2040, i32* %ar_coeff_lag, align 4, !tbaa !265 %mul2042 = shl nsw i32 %call2040, 1 %add2044 = add i32 %call2040, 1 %mul2045 = mul nsw i32 %mul2042, %add2044 %327 = load i32, i32* %num_y_points, align 4, !tbaa !262 %tobool2047.not = icmp ne i32 %327, 0 %cmp20513345 = icmp sgt i32 %mul2045, 0 %or.cond3431 = and i1 %tobool2047.not, %cmp20513345 br i1 %or.cond3431, label %for.body2054.preheader, label %if.end2063 for.body2054.preheader: ; preds = %if.end2037 %328 = mul i32 %call2040, %add2044 %329 = shl i32 %328, 1 br label %for.body2054 for.body2054: ; preds = %for.body2054.preheader, %for.body2054 %i2049.03346 = phi i32 [ %inc2060, %for.body2054 ], [ 0, %for.body2054.preheader ] %call2055 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %330 = trunc i32 %call2055 to i8 %conv2057 = xor i8 %330, -128 %arrayidx2058 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 8, i32 %i2049.03346 store i8 %conv2057, i8* %arrayidx2058, align 1, !tbaa !76 %inc2060 = add nuw nsw i32 %i2049.03346, 1 %exitcond3440.not = icmp eq i32 %inc2060, %329 br i1 %exitcond3440.not, label %if.end2063, label %for.body2054 if.end2063: ; preds = %for.body2054, %if.end2037 %arrayidx2071 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 0 %331 = load i32, i32* %arrayidx2071, align 4, !tbaa !51 %tobool2072.not = icmp eq i32 %331, 0 br i1 %tobool2072.not, label %lor.lhs.false2073, label %if.then2076 lor.lhs.false2073: ; preds = %if.end2063 %332 = load i32, i32* %chroma_scaling_from_luma3524, align 4, !tbaa !263 %tobool2075.not = icmp eq i32 %332, 0 br i1 %tobool2075.not, label %for.inc2107, label %if.then2076 if.then2076: ; preds = %lor.lhs.false2073, %if.end2063 %333 = load i32, i32* %num_y_points, align 4, !tbaa !262 %tobool2078 = icmp ne i32 %333, 0 %lnot.ext2082 = zext i1 %tobool2078 to i32 %add2083 = or i32 %mul2045, %lnot.ext2082 %cmp20863340 = icmp sgt i32 %add2083, 0 br i1 %cmp20863340, label %for.body2089, label %for.cond.cleanup2088 for.cond.cleanup2088.loopexit: ; preds = %for.body2089 %.pre3480 = load i32, i32* %num_y_points, align 4, !tbaa !262 br label %for.cond.cleanup2088 for.cond.cleanup2088: ; preds = %for.cond.cleanup2088.loopexit, %if.then2076 %334 = phi i32 [ %.pre3480, %for.cond.cleanup2088.loopexit ], [ %333, %if.then2076 ] %tobool2100.not = icmp eq i32 %334, 0 br i1 %tobool2100.not, label %if.then2101, label %for.inc2107 for.body2089: ; preds = %if.then2076, %for.body2089 %i2084.03341 = phi i32 [ %inc2096, %for.body2089 ], [ 0, %if.then2076 ] %call2090 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %335 = trunc i32 %call2090 to i8 %conv2092 = xor i8 %335, -128 %arrayidx2094 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 9, i32 0, i32 %i2084.03341 store i8 %conv2092, i8* %arrayidx2094, align 1, !tbaa !76 %inc2096 = add nuw nsw i32 %i2084.03341, 1 %exitcond.not = icmp eq i32 %inc2096, %add2083 br i1 %exitcond.not, label %for.cond.cleanup2088.loopexit, label %for.body2089 if.then2101: ; preds = %for.cond.cleanup2088 %arrayidx2104 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 9, i32 0, i32 %add2083 store i8 0, i8* %arrayidx2104, align 1, !tbaa !76 br label %for.inc2107 for.inc2107: ; preds = %for.cond.cleanup2088, %if.then2101, %lor.lhs.false2073 %arrayidx2071.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 4, i32 1 %336 = load i32, i32* %arrayidx2071.1, align 4, !tbaa !51 %tobool2072.not.1 = icmp eq i32 %336, 0 br i1 %tobool2072.not.1, label %lor.lhs.false2073.1, label %if.then2076.1 if.then2124: ; preds = %for.inc2107.1 %call2125 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %sub2126 = add i32 %call2125, -128 %arrayidx2127 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 12, i32 0 store i32 %sub2126, i32* %arrayidx2127, align 4, !tbaa !51 %call2128 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %sub2129 = add i32 %call2128, -128 %arrayidx2130 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 13, i32 0 store i32 %sub2129, i32* %arrayidx2130, align 4, !tbaa !51 %call2131 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 9) #7 %sub2132 = add i32 %call2131, -256 %arrayidx2133 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 14, i32 0 store i32 %sub2132, i32* %arrayidx2133, align 4, !tbaa !51 br label %for.inc2135 for.inc2135: ; preds = %for.inc2107.1, %if.then2124 %337 = load i32, i32* %arrayidx2071.1, align 4, !tbaa !51 %tobool2123.not.1 = icmp eq i32 %337, 0 br i1 %tobool2123.not.1, label %for.inc2135.1, label %if.then2124.1 if.else2148: ; preds = %land.end1812.thread, %land.end1812 %338 = bitcast %struct.Dav1dFrameHeader* %1 to i8* tail call void @llvm.memset.p0i8.i32(i8* nonnull align 8 dereferenceable(224) %338, i8 0, i32 224, i1 false) br label %cleanup2152 error: ; preds = %land.lhs.true1899, %land.lhs.true1979, %land.lhs.true1979.1, %for.inc1847.5, %if.else1950, %for.inc2006, %land.lhs.true2019, %if.else1877, %lor.lhs.false1852, %land.end456, %cleanup426, %if.then745, %if.end178 tail call arm_aapcs_vfpcc void (%struct.Dav1dContext*, i8*, ...) @dav1d_log(%struct.Dav1dContext* %c, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i32 0, i32 0)) #7 br label %cleanup2152 cleanup2152: ; preds = %if.else1699, %if.then1482, %if.end1535, %if.end1535.1, %if.end1535.2, %if.end1535.3, %if.end1535.4, %if.end1535.5, %cleanup1873, %for.inc2135.1, %if.else2148, %if.else1217, %do.body, %if.end, %if.then10, %error %retval.17 = phi i32 [ -22, %error ], [ 0, %if.then10 ], [ 0, %if.end ], [ -22, %do.body ], [ -22, %if.else1217 ], [ 0, %if.else2148 ], [ 0, %for.inc2135.1 ], [ 0, %cleanup1873 ], [ -22, %if.end1535.5 ], [ -22, %if.end1535.4 ], [ -22, %if.end1535.3 ], [ -22, %if.end1535.2 ], [ -22, %if.end1535.1 ], [ -22, %if.end1535 ], [ -22, %if.then1482 ], [ -22, %if.else1699 ] ret i32 %retval.17 if.then2124.1: ; preds = %for.inc2135 %call2125.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %sub2126.1 = add i32 %call2125.1, -128 %arrayidx2127.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 12, i32 1 store i32 %sub2126.1, i32* %arrayidx2127.1, align 4, !tbaa !51 %call2128.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %sub2129.1 = add i32 %call2128.1, -128 %arrayidx2130.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 13, i32 1 store i32 %sub2129.1, i32* %arrayidx2130.1, align 4, !tbaa !51 %call2131.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 9) #7 %sub2132.1 = add i32 %call2131.1, -256 %arrayidx2133.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 14, i32 1 store i32 %sub2132.1, i32* %arrayidx2133.1, align 4, !tbaa !51 br label %for.inc2135.1 for.inc2135.1: ; preds = %if.then2124.1, %for.inc2135 %call2139 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %overlap_flag = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 15 store i32 %call2139, i32* %overlap_flag, align 4, !tbaa !266 %call2140 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %clip_to_restricted_range = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 16 store i32 %call2140, i32* %clip_to_restricted_range, align 8, !tbaa !267 br label %cleanup2152 lor.lhs.false2073.1: ; preds = %for.inc2107 %339 = load i32, i32* %chroma_scaling_from_luma3524, align 4, !tbaa !263 %tobool2075.not.1 = icmp eq i32 %339, 0 br i1 %tobool2075.not.1, label %for.inc2107.1, label %if.then2076.1 if.then2076.1: ; preds = %lor.lhs.false2073.1, %for.inc2107 %340 = load i32, i32* %num_y_points, align 4, !tbaa !262 %tobool2078.1 = icmp ne i32 %340, 0 %lnot.ext2082.1 = zext i1 %tobool2078.1 to i32 %add2083.1 = or i32 %mul2045, %lnot.ext2082.1 %cmp20863340.1 = icmp sgt i32 %add2083.1, 0 br i1 %cmp20863340.1, label %for.body2089.1, label %for.cond.cleanup2088.1 for.body2089.1: ; preds = %if.then2076.1, %for.body2089.1 %i2084.03341.1 = phi i32 [ %inc2096.1, %for.body2089.1 ], [ 0, %if.then2076.1 ] %call2090.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %341 = trunc i32 %call2090.1 to i8 %conv2092.1 = xor i8 %341, -128 %arrayidx2094.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 9, i32 1, i32 %i2084.03341.1 store i8 %conv2092.1, i8* %arrayidx2094.1, align 1, !tbaa !76 %inc2096.1 = add nuw nsw i32 %i2084.03341.1, 1 %exitcond.1.not = icmp eq i32 %inc2096.1, %add2083.1 br i1 %exitcond.1.not, label %for.cond.cleanup2088.loopexit.1, label %for.body2089.1 for.cond.cleanup2088.loopexit.1: ; preds = %for.body2089.1 %.pre3481 = load i32, i32* %num_y_points, align 4, !tbaa !262 br label %for.cond.cleanup2088.1 for.cond.cleanup2088.1: ; preds = %for.cond.cleanup2088.loopexit.1, %if.then2076.1 %342 = phi i32 [ %.pre3481, %for.cond.cleanup2088.loopexit.1 ], [ %340, %if.then2076.1 ] %tobool2100.not.1 = icmp eq i32 %342, 0 br i1 %tobool2100.not.1, label %if.then2101.1, label %for.inc2107.1 if.then2101.1: ; preds = %for.cond.cleanup2088.1 %arrayidx2104.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 9, i32 1, i32 %add2083.1 store i8 0, i8* %arrayidx2104.1, align 1, !tbaa !76 br label %for.inc2107.1 for.inc2107.1: ; preds = %if.then2101.1, %for.cond.cleanup2088.1, %lor.lhs.false2073.1 %call2111 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %add2112 = add i32 %call2111, 6 %conv2113 = zext i32 %add2112 to i64 %ar_coeff_shift = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 10 store i64 %conv2113, i64* %ar_coeff_shift, align 8, !tbaa !268 %call2114 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 2) #7 %grain_scale_shift = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 11 store i32 %call2114, i32* %grain_scale_shift, align 8, !tbaa !269 %343 = load i32, i32* %arrayidx2071, align 4, !tbaa !51 %tobool2123.not = icmp eq i32 %343, 0 br i1 %tobool2123.not, label %for.inc2135, label %if.then2124 for.cond1966.preheader.1: ; preds = %for.inc2006 %cmp19693347.1 = icmp sgt i32 %call1956.1, 0 br i1 %cmp19693347.1, label %for.body1972.1, label %if.end2011 for.body1972.1: ; preds = %for.cond1966.preheader.1, %if.end1994.1 %i1965.03348.1 = phi i32 [ %inc2002.1, %if.end1994.1 ], [ 0, %for.cond1966.preheader.1 ] %call1973.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1974.1 = trunc i32 %call1973.1 to i8 %arrayidx1977.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 1, i32 %i1965.03348.1, i32 0 store i8 %conv1974.1, i8* %arrayidx1977.1, align 2, !tbaa !76 %tobool1978.not.1 = icmp eq i32 %i1965.03348.1, 0 br i1 %tobool1978.not.1, label %if.end1994.1, label %land.lhs.true1979.1 land.lhs.true1979.1: ; preds = %for.body1972.1 %sub1982.1 = add nsw i32 %i1965.03348.1, -1 %arrayidx1984.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 1, i32 %sub1982.1, i32 0 %344 = load i8, i8* %arrayidx1984.1, align 2, !tbaa !76 %conv1985.1 = zext i8 %344 to i32 %conv1990.1 = and i32 %call1973.1, 255 %cmp1991.not.1 = icmp ugt i32 %conv1990.1, %conv1985.1 br i1 %cmp1991.not.1, label %if.end1994.1, label %error if.end1994.1: ; preds = %land.lhs.true1979.1, %for.body1972.1 %call1995.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 8) #7 %conv1996.1 = trunc i32 %call1995.1 to i8 %arrayidx2000.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 0, i32 0, i32 5, i32 1, i32 %i1965.03348.1, i32 1 store i8 %conv1996.1, i8* %arrayidx2000.1, align 1, !tbaa !76 %inc2002.1 = add nuw nsw i32 %i1965.03348.1, 1 %345 = load i32, i32* %arrayidx1958.1, align 4, !tbaa !51 %cmp1969.1 = icmp slt i32 %inc2002.1, %345 br i1 %cmp1969.1, label %for.body1972.1, label %if.end2011 for.inc1847.1: ; preds = %for.inc1847 %arrayidx1842.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 2 %346 = load i32, i32* %arrayidx1842.2, align 4, !tbaa !51 %cmp1843.2 = icmp eq i32 %346, %call1835 br i1 %cmp1843.2, label %lor.lhs.false1852, label %for.inc1847.2 for.inc1847.2: ; preds = %for.inc1847.1 %arrayidx1842.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 3 %347 = load i32, i32* %arrayidx1842.3, align 4, !tbaa !51 %cmp1843.3 = icmp eq i32 %347, %call1835 br i1 %cmp1843.3, label %lor.lhs.false1852, label %for.inc1847.3 for.inc1847.3: ; preds = %for.inc1847.2 %arrayidx1842.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 4 %348 = load i32, i32* %arrayidx1842.4, align 4, !tbaa !51 %cmp1843.4 = icmp eq i32 %348, %call1835 br i1 %cmp1843.4, label %lor.lhs.false1852, label %for.inc1847.4 for.inc1847.4: ; preds = %for.inc1847.3 %arrayidx1842.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 5 %349 = load i32, i32* %arrayidx1842.5, align 4, !tbaa !51 %cmp1843.5 = icmp eq i32 %349, %call1835 br i1 %cmp1843.5, label %lor.lhs.false1852, label %for.inc1847.5 for.inc1847.5: ; preds = %for.inc1847.4 %arrayidx1842.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 6 %350 = load i32, i32* %arrayidx1842.6, align 4, !tbaa !51 %cmp1843.6 = icmp eq i32 %350, %call1835 br i1 %cmp1843.6, label %lor.lhs.false1852, label %error if.then1587.1: ; preds = %get_poc_diff.exit3143 %cmp1588.1 = icmp eq i32 %spec.select3569, -1 br i1 %cmp1588.1, label %if.then1595.1, label %get_poc_diff.exit3132.1 get_poc_diff.exit3132.1: ; preds = %if.then1587.1 %sub1.i3125.1 = sub nsw i32 %352, %spec.select3569 %and.i3127.1 = and i32 %sub2.i3137.1, %sub1.i3125.1 %and3.i3128.1 = and i32 %shl.i3135.1, %sub1.i3125.1 %cmp1593.1 = icmp sgt i32 %and.i3127.1, %and3.i3128.1 br i1 %cmp1593.1, label %if.then1595.1, label %get_poc_diff.exit3143.2 if.then1595.1: ; preds = %get_poc_diff.exit3132.1, %if.then1587.1 br label %get_poc_diff.exit3143.2 get_poc_diff.exit3143.2: ; preds = %get_poc_diff.exit3143, %get_poc_diff.exit3132.1, %if.then1595.1 %off_before2.1.1.ph = phi i32 [ %spec.select3569, %get_poc_diff.exit3143 ], [ %spec.select3569, %get_poc_diff.exit3132.1 ], [ %352, %if.then1595.1 ] %off_before2_idx.1.1.ph = phi i32 [ 0, %get_poc_diff.exit3143 ], [ 0, %get_poc_diff.exit3132.1 ], [ 1, %if.then1595.1 ] %sub.i3134.2 = add nsw i32 %277, -1 %shl.i3135.2 = shl nuw i32 1, %sub.i3134.2 %sub1.i3136.2 = sub nsw i32 %356, %off_before.1.6 %sub2.i3137.2 = add nsw i32 %shl.i3135.2, -1 %and.i3138.2 = and i32 %sub2.i3137.2, %sub1.i3136.2 %and3.i3139.2 = and i32 %shl.i3135.2, %sub1.i3136.2 %cmp1585.2 = icmp slt i32 %and.i3138.2, %and3.i3139.2 br i1 %cmp1585.2, label %if.then1587.2, label %get_poc_diff.exit3143.3 if.then1587.2: ; preds = %get_poc_diff.exit3143.2 %cmp1588.2 = icmp eq i32 %off_before2.1.1.ph, -1 br i1 %cmp1588.2, label %if.then1595.2, label %get_poc_diff.exit3132.2 get_poc_diff.exit3132.2: ; preds = %if.then1587.2 %sub1.i3125.2 = sub nsw i32 %356, %off_before2.1.1.ph %and.i3127.2 = and i32 %sub2.i3137.2, %sub1.i3125.2 %and3.i3128.2 = and i32 %shl.i3135.2, %sub1.i3125.2 %cmp1593.2 = icmp sgt i32 %and.i3127.2, %and3.i3128.2 br i1 %cmp1593.2, label %if.then1595.2, label %get_poc_diff.exit3143.3 if.then1595.2: ; preds = %get_poc_diff.exit3132.2, %if.then1587.2 br label %get_poc_diff.exit3143.3 get_poc_diff.exit3143.3: ; preds = %get_poc_diff.exit3143.2, %get_poc_diff.exit3132.2, %if.then1595.2 %off_before2.1.2.ph = phi i32 [ %off_before2.1.1.ph, %get_poc_diff.exit3143.2 ], [ %off_before2.1.1.ph, %get_poc_diff.exit3132.2 ], [ %356, %if.then1595.2 ] %off_before2_idx.1.2.ph = phi i32 [ %off_before2_idx.1.1.ph, %get_poc_diff.exit3143.2 ], [ %off_before2_idx.1.1.ph, %get_poc_diff.exit3132.2 ], [ 2, %if.then1595.2 ] %sub.i3134.3 = add nsw i32 %277, -1 %shl.i3135.3 = shl nuw i32 1, %sub.i3134.3 %sub1.i3136.3 = sub nsw i32 %360, %off_before.1.6 %sub2.i3137.3 = add nsw i32 %shl.i3135.3, -1 %and.i3138.3 = and i32 %sub2.i3137.3, %sub1.i3136.3 %and3.i3139.3 = and i32 %shl.i3135.3, %sub1.i3136.3 %cmp1585.3 = icmp slt i32 %and.i3138.3, %and3.i3139.3 br i1 %cmp1585.3, label %if.then1587.3, label %get_poc_diff.exit3143.4 if.then1587.3: ; preds = %get_poc_diff.exit3143.3 %cmp1588.3 = icmp eq i32 %off_before2.1.2.ph, -1 br i1 %cmp1588.3, label %if.then1595.3, label %get_poc_diff.exit3132.3 get_poc_diff.exit3132.3: ; preds = %if.then1587.3 %sub1.i3125.3 = sub nsw i32 %360, %off_before2.1.2.ph %and.i3127.3 = and i32 %sub2.i3137.3, %sub1.i3125.3 %and3.i3128.3 = and i32 %shl.i3135.3, %sub1.i3125.3 %cmp1593.3 = icmp sgt i32 %and.i3127.3, %and3.i3128.3 br i1 %cmp1593.3, label %if.then1595.3, label %get_poc_diff.exit3143.4 if.then1595.3: ; preds = %get_poc_diff.exit3132.3, %if.then1587.3 br label %get_poc_diff.exit3143.4 get_poc_diff.exit3143.4: ; preds = %get_poc_diff.exit3143.3, %get_poc_diff.exit3132.3, %if.then1595.3 %off_before2.1.3.ph = phi i32 [ %off_before2.1.2.ph, %get_poc_diff.exit3143.3 ], [ %off_before2.1.2.ph, %get_poc_diff.exit3132.3 ], [ %360, %if.then1595.3 ] %off_before2_idx.1.3.ph = phi i32 [ %off_before2_idx.1.2.ph, %get_poc_diff.exit3143.3 ], [ %off_before2_idx.1.2.ph, %get_poc_diff.exit3132.3 ], [ 3, %if.then1595.3 ] %sub.i3134.4 = add nsw i32 %277, -1 %shl.i3135.4 = shl nuw i32 1, %sub.i3134.4 %sub1.i3136.4 = sub nsw i32 %364, %off_before.1.6 %sub2.i3137.4 = add nsw i32 %shl.i3135.4, -1 %and.i3138.4 = and i32 %sub2.i3137.4, %sub1.i3136.4 %and3.i3139.4 = and i32 %shl.i3135.4, %sub1.i3136.4 %cmp1585.4 = icmp slt i32 %and.i3138.4, %and3.i3139.4 br i1 %cmp1585.4, label %if.then1587.4, label %get_poc_diff.exit3143.5 if.then1587.4: ; preds = %get_poc_diff.exit3143.4 %cmp1588.4 = icmp eq i32 %off_before2.1.3.ph, -1 br i1 %cmp1588.4, label %if.then1595.4, label %get_poc_diff.exit3132.4 get_poc_diff.exit3132.4: ; preds = %if.then1587.4 %sub1.i3125.4 = sub nsw i32 %364, %off_before2.1.3.ph %and.i3127.4 = and i32 %sub2.i3137.4, %sub1.i3125.4 %and3.i3128.4 = and i32 %shl.i3135.4, %sub1.i3125.4 %cmp1593.4 = icmp sgt i32 %and.i3127.4, %and3.i3128.4 br i1 %cmp1593.4, label %if.then1595.4, label %get_poc_diff.exit3143.5 if.then1595.4: ; preds = %get_poc_diff.exit3132.4, %if.then1587.4 br label %get_poc_diff.exit3143.5 get_poc_diff.exit3143.5: ; preds = %get_poc_diff.exit3143.4, %get_poc_diff.exit3132.4, %if.then1595.4 %off_before2.1.4.ph = phi i32 [ %off_before2.1.3.ph, %get_poc_diff.exit3143.4 ], [ %off_before2.1.3.ph, %get_poc_diff.exit3132.4 ], [ %364, %if.then1595.4 ] %off_before2_idx.1.4.ph = phi i32 [ %off_before2_idx.1.3.ph, %get_poc_diff.exit3143.4 ], [ %off_before2_idx.1.3.ph, %get_poc_diff.exit3132.4 ], [ 4, %if.then1595.4 ] %sub.i3134.5 = add nsw i32 %277, -1 %shl.i3135.5 = shl nuw i32 1, %sub.i3134.5 %sub1.i3136.5 = sub nsw i32 %368, %off_before.1.6 %sub2.i3137.5 = add nsw i32 %shl.i3135.5, -1 %and.i3138.5 = and i32 %sub2.i3137.5, %sub1.i3136.5 %and3.i3139.5 = and i32 %shl.i3135.5, %sub1.i3136.5 %cmp1585.5 = icmp slt i32 %and.i3138.5, %and3.i3139.5 br i1 %cmp1585.5, label %if.then1587.5, label %get_poc_diff.exit3143.6 if.then1587.5: ; preds = %get_poc_diff.exit3143.5 %cmp1588.5 = icmp eq i32 %off_before2.1.4.ph, -1 br i1 %cmp1588.5, label %if.then1595.5, label %get_poc_diff.exit3132.5 get_poc_diff.exit3132.5: ; preds = %if.then1587.5 %sub1.i3125.5 = sub nsw i32 %368, %off_before2.1.4.ph %and.i3127.5 = and i32 %sub2.i3137.5, %sub1.i3125.5 %and3.i3128.5 = and i32 %shl.i3135.5, %sub1.i3125.5 %cmp1593.5 = icmp sgt i32 %and.i3127.5, %and3.i3128.5 br i1 %cmp1593.5, label %if.then1595.5, label %get_poc_diff.exit3143.6 if.then1595.5: ; preds = %get_poc_diff.exit3132.5, %if.then1587.5 br label %get_poc_diff.exit3143.6 get_poc_diff.exit3143.6: ; preds = %get_poc_diff.exit3143.5, %get_poc_diff.exit3132.5, %if.then1595.5 %off_before2.1.5.ph = phi i32 [ %off_before2.1.4.ph, %get_poc_diff.exit3143.5 ], [ %off_before2.1.4.ph, %get_poc_diff.exit3132.5 ], [ %368, %if.then1595.5 ] %off_before2_idx.1.5.ph = phi i32 [ %off_before2_idx.1.4.ph, %get_poc_diff.exit3143.5 ], [ %off_before2_idx.1.4.ph, %get_poc_diff.exit3132.5 ], [ 5, %if.then1595.5 ] %sub.i3134.6 = add nsw i32 %277, -1 %shl.i3135.6 = shl nuw i32 1, %sub.i3134.6 %sub1.i3136.6 = sub nsw i32 %372, %off_before.1.6 %sub2.i3137.6 = add nsw i32 %shl.i3135.6, -1 %and.i3138.6 = and i32 %sub2.i3137.6, %sub1.i3136.6 %and3.i3139.6 = and i32 %shl.i3135.6, %sub1.i3136.6 %cmp1585.6 = icmp slt i32 %and.i3138.6, %and3.i3139.6 br i1 %cmp1585.6, label %if.then1587.6, label %if.end1597.6 if.then1587.6: ; preds = %get_poc_diff.exit3143.6 %cmp1588.6 = icmp eq i32 %off_before2.1.5.ph, -1 br i1 %cmp1588.6, label %if.end1597.6, label %get_poc_diff.exit3132.6 get_poc_diff.exit3132.6: ; preds = %if.then1587.6 %sub1.i3125.6 = sub nsw i32 %372, %off_before2.1.5.ph %and.i3127.6 = and i32 %sub2.i3137.6, %sub1.i3125.6 %and3.i3128.6 = and i32 %shl.i3135.6, %sub1.i3125.6 %cmp1593.6 = icmp sgt i32 %and.i3127.6, %and3.i3128.6 br i1 %cmp1593.6, label %if.end1597.6, label %cond.true1630 if.end1597.6: ; preds = %if.then1587.6, %get_poc_diff.exit3132.6, %get_poc_diff.exit3143.6 %off_before2.1.6 = phi i32 [ %off_before2.1.5.ph, %get_poc_diff.exit3143.6 ], [ %372, %get_poc_diff.exit3132.6 ], [ %372, %if.then1587.6 ] %off_before2_idx.1.6 = phi i32 [ %off_before2_idx.1.5.ph, %get_poc_diff.exit3143.6 ], [ 6, %get_poc_diff.exit3132.6 ], [ 6, %if.then1587.6 ] %cmp1603.not = icmp eq i32 %off_before2.1.6, -1 br i1 %cmp1603.not, label %cond.end1633, label %cond.true1630 if.end1499.1: ; preds = %if.end1535 %frame_hdr1506.1 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %278, i32 0, i32 0, i32 1 %351 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.1, align 4, !tbaa !168 %frame_offset1507.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %351, i32 0, i32 4 %352 = load i32, i32* %frame_offset1507.1, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.1, label %get_poc_diff.exit3180.1 get_poc_diff.exit3180.1: ; preds = %if.end1499.1 %sub.i3171.1 = add nsw i32 %277, -1 %shl.i3172.1 = shl nuw i32 1, %sub.i3171.1 %sub1.i3173.1 = sub nsw i32 %352, %272 %sub2.i3174.1 = add nsw i32 %shl.i3172.1, -1 %and.i3175.1 = and i32 %sub2.i3174.1, %sub1.i3173.1 %and3.i3176.1 = and i32 %shl.i3172.1, %sub1.i3173.1 %sub4.i3177.1 = sub nsw i32 %and.i3175.1, %and3.i3176.1 %cmp1510.1 = icmp sgt i32 %sub4.i3177.1, 0 br i1 %cmp1510.1, label %if.then1512.1, label %if.else1522.1 if.else1522.1: ; preds = %get_poc_diff.exit3180.1 %cmp1523.1 = icmp slt i32 %sub4.i3177.1, 0 br i1 %cmp1523.1, label %land.lhs.true1525.1, label %if.end1535.1 land.lhs.true1525.1: ; preds = %if.else1522.1 %cmp1526.1 = icmp eq i32 %off_before.1, -1 br i1 %cmp1526.1, label %if.then1533.1, label %get_poc_diff.exit3158.1 get_poc_diff.exit3158.1: ; preds = %land.lhs.true1525.1 %sub1.i3151.1 = sub nsw i32 %352, %off_before.1 %and.i3153.1 = and i32 %sub2.i3174.1, %sub1.i3151.1 %and3.i3154.1 = and i32 %shl.i3172.1, %sub1.i3151.1 %cmp1531.1 = icmp sgt i32 %and.i3153.1, %and3.i3154.1 br i1 %cmp1531.1, label %if.then1533.1, label %if.end1535.1 if.then1533.1: ; preds = %get_poc_diff.exit3158.1, %land.lhs.true1525.1 br label %if.end1535.1 if.then1512.1: ; preds = %get_poc_diff.exit3180.1 %cmp1513.1 = icmp eq i32 %off_after.1, -1 br i1 %cmp1513.1, label %if.then1520.1, label %get_poc_diff.exit3169.1 get_poc_diff.exit3169.1: ; preds = %if.then1512.1 %sub1.i3162.1 = sub nsw i32 %off_after.1, %352 %and.i3164.1 = and i32 %sub2.i3174.1, %sub1.i3162.1 %and3.i3165.1 = and i32 %shl.i3172.1, %sub1.i3162.1 %cmp1518.1 = icmp sgt i32 %and.i3164.1, %and3.i3165.1 br i1 %cmp1518.1, label %if.then1520.1, label %if.end1535.1 if.then1520.1: ; preds = %get_poc_diff.exit3169.1, %if.then1512.1 br label %if.end1535.1 if.end1535.1: ; preds = %if.then1520.1, %get_poc_diff.exit3169.1, %if.then1533.1, %get_poc_diff.exit3158.1, %if.else1522.1, %if.end1499.1 %off_before.1.1 = phi i32 [ %off_before.1, %if.then1520.1 ], [ %off_before.1, %get_poc_diff.exit3169.1 ], [ %352, %if.then1533.1 ], [ %off_before.1, %get_poc_diff.exit3158.1 ], [ %off_before.1, %if.else1522.1 ], [ %off_before.1, %if.end1499.1 ] %off_after.1.1 = phi i32 [ %352, %if.then1520.1 ], [ %off_after.1, %get_poc_diff.exit3169.1 ], [ %off_after.1, %if.then1533.1 ], [ %off_after.1, %get_poc_diff.exit3158.1 ], [ %off_after.1, %if.else1522.1 ], [ %off_after.1, %if.end1499.1 ] %off_before_idx.1.1 = phi i32 [ 0, %if.then1520.1 ], [ 0, %get_poc_diff.exit3169.1 ], [ 1, %if.then1533.1 ], [ 0, %get_poc_diff.exit3158.1 ], [ 0, %if.else1522.1 ], [ 0, %if.end1499.1 ] %off_after_idx.1.1 = phi i32 [ 1, %if.then1520.1 ], [ 0, %get_poc_diff.exit3169.1 ], [ 0, %if.then1533.1 ], [ 0, %get_poc_diff.exit3158.1 ], [ 0, %if.else1522.1 ], [ 0, %if.end1499.1 ] %arrayidx1492.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 2 %353 = load i32, i32* %arrayidx1492.2, align 4, !tbaa !51 %arrayidx1496.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %353, i32 0, i32 0, i32 2, i32 0 %354 = load i8*, i8** %arrayidx1496.2, align 8, !tbaa !26 %tobool1497.not.2 = icmp eq i8* %354, null br i1 %tobool1497.not.2, label %cleanup2152, label %if.end1499.2 if.end1499.2: ; preds = %if.end1535.1 %frame_hdr1506.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %353, i32 0, i32 0, i32 1 %355 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.2, align 4, !tbaa !168 %frame_offset1507.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %355, i32 0, i32 4 %356 = load i32, i32* %frame_offset1507.2, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.2, label %get_poc_diff.exit3180.2 get_poc_diff.exit3180.2: ; preds = %if.end1499.2 %sub.i3171.2 = add nsw i32 %277, -1 %shl.i3172.2 = shl nuw i32 1, %sub.i3171.2 %sub1.i3173.2 = sub nsw i32 %356, %272 %sub2.i3174.2 = add nsw i32 %shl.i3172.2, -1 %and.i3175.2 = and i32 %sub2.i3174.2, %sub1.i3173.2 %and3.i3176.2 = and i32 %shl.i3172.2, %sub1.i3173.2 %sub4.i3177.2 = sub nsw i32 %and.i3175.2, %and3.i3176.2 %cmp1510.2 = icmp sgt i32 %sub4.i3177.2, 0 br i1 %cmp1510.2, label %if.then1512.2, label %if.else1522.2 if.else1522.2: ; preds = %get_poc_diff.exit3180.2 %cmp1523.2 = icmp slt i32 %sub4.i3177.2, 0 br i1 %cmp1523.2, label %land.lhs.true1525.2, label %if.end1535.2 land.lhs.true1525.2: ; preds = %if.else1522.2 %cmp1526.2 = icmp eq i32 %off_before.1.1, -1 br i1 %cmp1526.2, label %if.then1533.2, label %get_poc_diff.exit3158.2 get_poc_diff.exit3158.2: ; preds = %land.lhs.true1525.2 %sub1.i3151.2 = sub nsw i32 %356, %off_before.1.1 %and.i3153.2 = and i32 %sub2.i3174.2, %sub1.i3151.2 %and3.i3154.2 = and i32 %shl.i3172.2, %sub1.i3151.2 %cmp1531.2 = icmp sgt i32 %and.i3153.2, %and3.i3154.2 br i1 %cmp1531.2, label %if.then1533.2, label %if.end1535.2 if.then1533.2: ; preds = %get_poc_diff.exit3158.2, %land.lhs.true1525.2 br label %if.end1535.2 if.then1512.2: ; preds = %get_poc_diff.exit3180.2 %cmp1513.2 = icmp eq i32 %off_after.1.1, -1 br i1 %cmp1513.2, label %if.then1520.2, label %get_poc_diff.exit3169.2 get_poc_diff.exit3169.2: ; preds = %if.then1512.2 %sub1.i3162.2 = sub nsw i32 %off_after.1.1, %356 %and.i3164.2 = and i32 %sub2.i3174.2, %sub1.i3162.2 %and3.i3165.2 = and i32 %shl.i3172.2, %sub1.i3162.2 %cmp1518.2 = icmp sgt i32 %and.i3164.2, %and3.i3165.2 br i1 %cmp1518.2, label %if.then1520.2, label %if.end1535.2 if.then1520.2: ; preds = %get_poc_diff.exit3169.2, %if.then1512.2 br label %if.end1535.2 if.end1535.2: ; preds = %if.then1520.2, %get_poc_diff.exit3169.2, %if.then1533.2, %get_poc_diff.exit3158.2, %if.else1522.2, %if.end1499.2 %off_before.1.2 = phi i32 [ %off_before.1.1, %if.then1520.2 ], [ %off_before.1.1, %get_poc_diff.exit3169.2 ], [ %356, %if.then1533.2 ], [ %off_before.1.1, %get_poc_diff.exit3158.2 ], [ %off_before.1.1, %if.else1522.2 ], [ %off_before.1.1, %if.end1499.2 ] %off_after.1.2 = phi i32 [ %356, %if.then1520.2 ], [ %off_after.1.1, %get_poc_diff.exit3169.2 ], [ %off_after.1.1, %if.then1533.2 ], [ %off_after.1.1, %get_poc_diff.exit3158.2 ], [ %off_after.1.1, %if.else1522.2 ], [ %off_after.1.1, %if.end1499.2 ] %off_before_idx.1.2 = phi i32 [ %off_before_idx.1.1, %if.then1520.2 ], [ %off_before_idx.1.1, %get_poc_diff.exit3169.2 ], [ 2, %if.then1533.2 ], [ %off_before_idx.1.1, %get_poc_diff.exit3158.2 ], [ %off_before_idx.1.1, %if.else1522.2 ], [ %off_before_idx.1.1, %if.end1499.2 ] %off_after_idx.1.2 = phi i32 [ 2, %if.then1520.2 ], [ %off_after_idx.1.1, %get_poc_diff.exit3169.2 ], [ %off_after_idx.1.1, %if.then1533.2 ], [ %off_after_idx.1.1, %get_poc_diff.exit3158.2 ], [ %off_after_idx.1.1, %if.else1522.2 ], [ %off_after_idx.1.1, %if.end1499.2 ] %arrayidx1492.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 3 %357 = load i32, i32* %arrayidx1492.3, align 4, !tbaa !51 %arrayidx1496.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %357, i32 0, i32 0, i32 2, i32 0 %358 = load i8*, i8** %arrayidx1496.3, align 8, !tbaa !26 %tobool1497.not.3 = icmp eq i8* %358, null br i1 %tobool1497.not.3, label %cleanup2152, label %if.end1499.3 if.end1499.3: ; preds = %if.end1535.2 %frame_hdr1506.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %357, i32 0, i32 0, i32 1 %359 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.3, align 4, !tbaa !168 %frame_offset1507.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %359, i32 0, i32 4 %360 = load i32, i32* %frame_offset1507.3, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.3, label %get_poc_diff.exit3180.3 get_poc_diff.exit3180.3: ; preds = %if.end1499.3 %sub.i3171.3 = add nsw i32 %277, -1 %shl.i3172.3 = shl nuw i32 1, %sub.i3171.3 %sub1.i3173.3 = sub nsw i32 %360, %272 %sub2.i3174.3 = add nsw i32 %shl.i3172.3, -1 %and.i3175.3 = and i32 %sub2.i3174.3, %sub1.i3173.3 %and3.i3176.3 = and i32 %shl.i3172.3, %sub1.i3173.3 %sub4.i3177.3 = sub nsw i32 %and.i3175.3, %and3.i3176.3 %cmp1510.3 = icmp sgt i32 %sub4.i3177.3, 0 br i1 %cmp1510.3, label %if.then1512.3, label %if.else1522.3 if.else1522.3: ; preds = %get_poc_diff.exit3180.3 %cmp1523.3 = icmp slt i32 %sub4.i3177.3, 0 br i1 %cmp1523.3, label %land.lhs.true1525.3, label %if.end1535.3 land.lhs.true1525.3: ; preds = %if.else1522.3 %cmp1526.3 = icmp eq i32 %off_before.1.2, -1 br i1 %cmp1526.3, label %if.then1533.3, label %get_poc_diff.exit3158.3 get_poc_diff.exit3158.3: ; preds = %land.lhs.true1525.3 %sub1.i3151.3 = sub nsw i32 %360, %off_before.1.2 %and.i3153.3 = and i32 %sub2.i3174.3, %sub1.i3151.3 %and3.i3154.3 = and i32 %shl.i3172.3, %sub1.i3151.3 %cmp1531.3 = icmp sgt i32 %and.i3153.3, %and3.i3154.3 br i1 %cmp1531.3, label %if.then1533.3, label %if.end1535.3 if.then1533.3: ; preds = %get_poc_diff.exit3158.3, %land.lhs.true1525.3 br label %if.end1535.3 if.then1512.3: ; preds = %get_poc_diff.exit3180.3 %cmp1513.3 = icmp eq i32 %off_after.1.2, -1 br i1 %cmp1513.3, label %if.then1520.3, label %get_poc_diff.exit3169.3 get_poc_diff.exit3169.3: ; preds = %if.then1512.3 %sub1.i3162.3 = sub nsw i32 %off_after.1.2, %360 %and.i3164.3 = and i32 %sub2.i3174.3, %sub1.i3162.3 %and3.i3165.3 = and i32 %shl.i3172.3, %sub1.i3162.3 %cmp1518.3 = icmp sgt i32 %and.i3164.3, %and3.i3165.3 br i1 %cmp1518.3, label %if.then1520.3, label %if.end1535.3 if.then1520.3: ; preds = %get_poc_diff.exit3169.3, %if.then1512.3 br label %if.end1535.3 if.end1535.3: ; preds = %if.then1520.3, %get_poc_diff.exit3169.3, %if.then1533.3, %get_poc_diff.exit3158.3, %if.else1522.3, %if.end1499.3 %off_before.1.3 = phi i32 [ %off_before.1.2, %if.then1520.3 ], [ %off_before.1.2, %get_poc_diff.exit3169.3 ], [ %360, %if.then1533.3 ], [ %off_before.1.2, %get_poc_diff.exit3158.3 ], [ %off_before.1.2, %if.else1522.3 ], [ %off_before.1.2, %if.end1499.3 ] %off_after.1.3 = phi i32 [ %360, %if.then1520.3 ], [ %off_after.1.2, %get_poc_diff.exit3169.3 ], [ %off_after.1.2, %if.then1533.3 ], [ %off_after.1.2, %get_poc_diff.exit3158.3 ], [ %off_after.1.2, %if.else1522.3 ], [ %off_after.1.2, %if.end1499.3 ] %off_before_idx.1.3 = phi i32 [ %off_before_idx.1.2, %if.then1520.3 ], [ %off_before_idx.1.2, %get_poc_diff.exit3169.3 ], [ 3, %if.then1533.3 ], [ %off_before_idx.1.2, %get_poc_diff.exit3158.3 ], [ %off_before_idx.1.2, %if.else1522.3 ], [ %off_before_idx.1.2, %if.end1499.3 ] %off_after_idx.1.3 = phi i32 [ 3, %if.then1520.3 ], [ %off_after_idx.1.2, %get_poc_diff.exit3169.3 ], [ %off_after_idx.1.2, %if.then1533.3 ], [ %off_after_idx.1.2, %get_poc_diff.exit3158.3 ], [ %off_after_idx.1.2, %if.else1522.3 ], [ %off_after_idx.1.2, %if.end1499.3 ] %arrayidx1492.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 4 %361 = load i32, i32* %arrayidx1492.4, align 4, !tbaa !51 %arrayidx1496.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %361, i32 0, i32 0, i32 2, i32 0 %362 = load i8*, i8** %arrayidx1496.4, align 8, !tbaa !26 %tobool1497.not.4 = icmp eq i8* %362, null br i1 %tobool1497.not.4, label %cleanup2152, label %if.end1499.4 if.end1499.4: ; preds = %if.end1535.3 %frame_hdr1506.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %361, i32 0, i32 0, i32 1 %363 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.4, align 4, !tbaa !168 %frame_offset1507.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %363, i32 0, i32 4 %364 = load i32, i32* %frame_offset1507.4, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.4, label %get_poc_diff.exit3180.4 get_poc_diff.exit3180.4: ; preds = %if.end1499.4 %sub.i3171.4 = add nsw i32 %277, -1 %shl.i3172.4 = shl nuw i32 1, %sub.i3171.4 %sub1.i3173.4 = sub nsw i32 %364, %272 %sub2.i3174.4 = add nsw i32 %shl.i3172.4, -1 %and.i3175.4 = and i32 %sub2.i3174.4, %sub1.i3173.4 %and3.i3176.4 = and i32 %shl.i3172.4, %sub1.i3173.4 %sub4.i3177.4 = sub nsw i32 %and.i3175.4, %and3.i3176.4 %cmp1510.4 = icmp sgt i32 %sub4.i3177.4, 0 br i1 %cmp1510.4, label %if.then1512.4, label %if.else1522.4 if.else1522.4: ; preds = %get_poc_diff.exit3180.4 %cmp1523.4 = icmp slt i32 %sub4.i3177.4, 0 br i1 %cmp1523.4, label %land.lhs.true1525.4, label %if.end1535.4 land.lhs.true1525.4: ; preds = %if.else1522.4 %cmp1526.4 = icmp eq i32 %off_before.1.3, -1 br i1 %cmp1526.4, label %if.then1533.4, label %get_poc_diff.exit3158.4 get_poc_diff.exit3158.4: ; preds = %land.lhs.true1525.4 %sub1.i3151.4 = sub nsw i32 %364, %off_before.1.3 %and.i3153.4 = and i32 %sub2.i3174.4, %sub1.i3151.4 %and3.i3154.4 = and i32 %shl.i3172.4, %sub1.i3151.4 %cmp1531.4 = icmp sgt i32 %and.i3153.4, %and3.i3154.4 br i1 %cmp1531.4, label %if.then1533.4, label %if.end1535.4 if.then1533.4: ; preds = %get_poc_diff.exit3158.4, %land.lhs.true1525.4 br label %if.end1535.4 if.then1512.4: ; preds = %get_poc_diff.exit3180.4 %cmp1513.4 = icmp eq i32 %off_after.1.3, -1 br i1 %cmp1513.4, label %if.then1520.4, label %get_poc_diff.exit3169.4 get_poc_diff.exit3169.4: ; preds = %if.then1512.4 %sub1.i3162.4 = sub nsw i32 %off_after.1.3, %364 %and.i3164.4 = and i32 %sub2.i3174.4, %sub1.i3162.4 %and3.i3165.4 = and i32 %shl.i3172.4, %sub1.i3162.4 %cmp1518.4 = icmp sgt i32 %and.i3164.4, %and3.i3165.4 br i1 %cmp1518.4, label %if.then1520.4, label %if.end1535.4 if.then1520.4: ; preds = %get_poc_diff.exit3169.4, %if.then1512.4 br label %if.end1535.4 if.end1535.4: ; preds = %if.then1520.4, %get_poc_diff.exit3169.4, %if.then1533.4, %get_poc_diff.exit3158.4, %if.else1522.4, %if.end1499.4 %off_before.1.4 = phi i32 [ %off_before.1.3, %if.then1520.4 ], [ %off_before.1.3, %get_poc_diff.exit3169.4 ], [ %364, %if.then1533.4 ], [ %off_before.1.3, %get_poc_diff.exit3158.4 ], [ %off_before.1.3, %if.else1522.4 ], [ %off_before.1.3, %if.end1499.4 ] %off_after.1.4 = phi i32 [ %364, %if.then1520.4 ], [ %off_after.1.3, %get_poc_diff.exit3169.4 ], [ %off_after.1.3, %if.then1533.4 ], [ %off_after.1.3, %get_poc_diff.exit3158.4 ], [ %off_after.1.3, %if.else1522.4 ], [ %off_after.1.3, %if.end1499.4 ] %off_before_idx.1.4 = phi i32 [ %off_before_idx.1.3, %if.then1520.4 ], [ %off_before_idx.1.3, %get_poc_diff.exit3169.4 ], [ 4, %if.then1533.4 ], [ %off_before_idx.1.3, %get_poc_diff.exit3158.4 ], [ %off_before_idx.1.3, %if.else1522.4 ], [ %off_before_idx.1.3, %if.end1499.4 ] %off_after_idx.1.4 = phi i32 [ 4, %if.then1520.4 ], [ %off_after_idx.1.3, %get_poc_diff.exit3169.4 ], [ %off_after_idx.1.3, %if.then1533.4 ], [ %off_after_idx.1.3, %get_poc_diff.exit3158.4 ], [ %off_after_idx.1.3, %if.else1522.4 ], [ %off_after_idx.1.3, %if.end1499.4 ] %arrayidx1492.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 5 %365 = load i32, i32* %arrayidx1492.5, align 4, !tbaa !51 %arrayidx1496.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %365, i32 0, i32 0, i32 2, i32 0 %366 = load i8*, i8** %arrayidx1496.5, align 8, !tbaa !26 %tobool1497.not.5 = icmp eq i8* %366, null br i1 %tobool1497.not.5, label %cleanup2152, label %if.end1499.5 if.end1499.5: ; preds = %if.end1535.4 %frame_hdr1506.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %365, i32 0, i32 0, i32 1 %367 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.5, align 4, !tbaa !168 %frame_offset1507.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %367, i32 0, i32 4 %368 = load i32, i32* %frame_offset1507.5, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.5, label %get_poc_diff.exit3180.5 get_poc_diff.exit3180.5: ; preds = %if.end1499.5 %sub.i3171.5 = add nsw i32 %277, -1 %shl.i3172.5 = shl nuw i32 1, %sub.i3171.5 %sub1.i3173.5 = sub nsw i32 %368, %272 %sub2.i3174.5 = add nsw i32 %shl.i3172.5, -1 %and.i3175.5 = and i32 %sub2.i3174.5, %sub1.i3173.5 %and3.i3176.5 = and i32 %shl.i3172.5, %sub1.i3173.5 %sub4.i3177.5 = sub nsw i32 %and.i3175.5, %and3.i3176.5 %cmp1510.5 = icmp sgt i32 %sub4.i3177.5, 0 br i1 %cmp1510.5, label %if.then1512.5, label %if.else1522.5 if.else1522.5: ; preds = %get_poc_diff.exit3180.5 %cmp1523.5 = icmp slt i32 %sub4.i3177.5, 0 br i1 %cmp1523.5, label %land.lhs.true1525.5, label %if.end1535.5 land.lhs.true1525.5: ; preds = %if.else1522.5 %cmp1526.5 = icmp eq i32 %off_before.1.4, -1 br i1 %cmp1526.5, label %if.then1533.5, label %get_poc_diff.exit3158.5 get_poc_diff.exit3158.5: ; preds = %land.lhs.true1525.5 %sub1.i3151.5 = sub nsw i32 %368, %off_before.1.4 %and.i3153.5 = and i32 %sub2.i3174.5, %sub1.i3151.5 %and3.i3154.5 = and i32 %shl.i3172.5, %sub1.i3151.5 %cmp1531.5 = icmp sgt i32 %and.i3153.5, %and3.i3154.5 br i1 %cmp1531.5, label %if.then1533.5, label %if.end1535.5 if.then1533.5: ; preds = %get_poc_diff.exit3158.5, %land.lhs.true1525.5 br label %if.end1535.5 if.then1512.5: ; preds = %get_poc_diff.exit3180.5 %cmp1513.5 = icmp eq i32 %off_after.1.4, -1 br i1 %cmp1513.5, label %if.then1520.5, label %get_poc_diff.exit3169.5 get_poc_diff.exit3169.5: ; preds = %if.then1512.5 %sub1.i3162.5 = sub nsw i32 %off_after.1.4, %368 %and.i3164.5 = and i32 %sub2.i3174.5, %sub1.i3162.5 %and3.i3165.5 = and i32 %shl.i3172.5, %sub1.i3162.5 %cmp1518.5 = icmp sgt i32 %and.i3164.5, %and3.i3165.5 br i1 %cmp1518.5, label %if.then1520.5, label %if.end1535.5 if.then1520.5: ; preds = %get_poc_diff.exit3169.5, %if.then1512.5 br label %if.end1535.5 if.end1535.5: ; preds = %if.then1520.5, %get_poc_diff.exit3169.5, %if.then1533.5, %get_poc_diff.exit3158.5, %if.else1522.5, %if.end1499.5 %off_before.1.5 = phi i32 [ %off_before.1.4, %if.then1520.5 ], [ %off_before.1.4, %get_poc_diff.exit3169.5 ], [ %368, %if.then1533.5 ], [ %off_before.1.4, %get_poc_diff.exit3158.5 ], [ %off_before.1.4, %if.else1522.5 ], [ %off_before.1.4, %if.end1499.5 ] %off_after.1.5 = phi i32 [ %368, %if.then1520.5 ], [ %off_after.1.4, %get_poc_diff.exit3169.5 ], [ %off_after.1.4, %if.then1533.5 ], [ %off_after.1.4, %get_poc_diff.exit3158.5 ], [ %off_after.1.4, %if.else1522.5 ], [ %off_after.1.4, %if.end1499.5 ] %off_before_idx.1.5 = phi i32 [ %off_before_idx.1.4, %if.then1520.5 ], [ %off_before_idx.1.4, %get_poc_diff.exit3169.5 ], [ 5, %if.then1533.5 ], [ %off_before_idx.1.4, %get_poc_diff.exit3158.5 ], [ %off_before_idx.1.4, %if.else1522.5 ], [ %off_before_idx.1.4, %if.end1499.5 ] %off_after_idx.1.5 = phi i32 [ 5, %if.then1520.5 ], [ %off_after_idx.1.4, %get_poc_diff.exit3169.5 ], [ %off_after_idx.1.4, %if.then1533.5 ], [ %off_after_idx.1.4, %get_poc_diff.exit3158.5 ], [ %off_after_idx.1.4, %if.else1522.5 ], [ %off_after_idx.1.4, %if.end1499.5 ] %arrayidx1492.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 6 %369 = load i32, i32* %arrayidx1492.6, align 4, !tbaa !51 %arrayidx1496.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %369, i32 0, i32 0, i32 2, i32 0 %370 = load i8*, i8** %arrayidx1496.6, align 8, !tbaa !26 %tobool1497.not.6 = icmp eq i8* %370, null br i1 %tobool1497.not.6, label %cleanup2152, label %if.end1499.6 if.end1499.6: ; preds = %if.end1535.5 %frame_hdr1506.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %369, i32 0, i32 0, i32 1 %371 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr1506.6, align 4, !tbaa !168 %frame_offset1507.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %371, i32 0, i32 4 %372 = load i32, i32* %frame_offset1507.6, align 8, !tbaa !183 br i1 %tobool.not.i3170, label %if.end1535.6, label %get_poc_diff.exit3180.6 get_poc_diff.exit3180.6: ; preds = %if.end1499.6 %sub.i3171.6 = add nsw i32 %277, -1 %shl.i3172.6 = shl nuw i32 1, %sub.i3171.6 %sub1.i3173.6 = sub nsw i32 %372, %272 %sub2.i3174.6 = add nsw i32 %shl.i3172.6, -1 %and.i3175.6 = and i32 %sub2.i3174.6, %sub1.i3173.6 %and3.i3176.6 = and i32 %shl.i3172.6, %sub1.i3173.6 %sub4.i3177.6 = sub nsw i32 %and.i3175.6, %and3.i3176.6 %cmp1510.6 = icmp sgt i32 %sub4.i3177.6, 0 br i1 %cmp1510.6, label %if.then1512.6, label %if.else1522.6 if.else1522.6: ; preds = %get_poc_diff.exit3180.6 %cmp1523.6 = icmp slt i32 %sub4.i3177.6, 0 br i1 %cmp1523.6, label %land.lhs.true1525.6, label %if.end1535.6 land.lhs.true1525.6: ; preds = %if.else1522.6 %cmp1526.6 = icmp eq i32 %off_before.1.5, -1 br i1 %cmp1526.6, label %if.then1533.6, label %get_poc_diff.exit3158.6 get_poc_diff.exit3158.6: ; preds = %land.lhs.true1525.6 %sub1.i3151.6 = sub nsw i32 %372, %off_before.1.5 %and.i3153.6 = and i32 %sub2.i3174.6, %sub1.i3151.6 %and3.i3154.6 = and i32 %shl.i3172.6, %sub1.i3151.6 %cmp1531.6 = icmp sgt i32 %and.i3153.6, %and3.i3154.6 br i1 %cmp1531.6, label %if.then1533.6, label %if.end1535.6 if.then1533.6: ; preds = %get_poc_diff.exit3158.6, %land.lhs.true1525.6 br label %if.end1535.6 if.then1512.6: ; preds = %get_poc_diff.exit3180.6 %cmp1513.6 = icmp eq i32 %off_after.1.5, -1 br i1 %cmp1513.6, label %if.then1520.6, label %get_poc_diff.exit3169.6 get_poc_diff.exit3169.6: ; preds = %if.then1512.6 %sub1.i3162.6 = sub nsw i32 %off_after.1.5, %372 %and.i3164.6 = and i32 %sub2.i3174.6, %sub1.i3162.6 %and3.i3165.6 = and i32 %shl.i3172.6, %sub1.i3162.6 %cmp1518.6 = icmp sgt i32 %and.i3164.6, %and3.i3165.6 br i1 %cmp1518.6, label %if.then1520.6, label %if.end1535.6 if.then1520.6: ; preds = %get_poc_diff.exit3169.6, %if.then1512.6 br label %if.end1535.6 if.end1535.6: ; preds = %if.then1520.6, %get_poc_diff.exit3169.6, %if.then1533.6, %get_poc_diff.exit3158.6, %if.else1522.6, %if.end1499.6 %off_before.1.6 = phi i32 [ %off_before.1.5, %if.then1520.6 ], [ %off_before.1.5, %get_poc_diff.exit3169.6 ], [ %372, %if.then1533.6 ], [ %off_before.1.5, %get_poc_diff.exit3158.6 ], [ %off_before.1.5, %if.else1522.6 ], [ %off_before.1.5, %if.end1499.6 ] %off_after.1.6 = phi i32 [ %372, %if.then1520.6 ], [ %off_after.1.5, %get_poc_diff.exit3169.6 ], [ %off_after.1.5, %if.then1533.6 ], [ %off_after.1.5, %get_poc_diff.exit3158.6 ], [ %off_after.1.5, %if.else1522.6 ], [ %off_after.1.5, %if.end1499.6 ] %off_before_idx.1.6 = phi i32 [ %off_before_idx.1.5, %if.then1520.6 ], [ %off_before_idx.1.5, %get_poc_diff.exit3169.6 ], [ 6, %if.then1533.6 ], [ %off_before_idx.1.5, %get_poc_diff.exit3158.6 ], [ %off_before_idx.1.5, %if.else1522.6 ], [ %off_before_idx.1.5, %if.end1499.6 ] %off_after_idx.1.6 = phi i32 [ 6, %if.then1520.6 ], [ %off_after_idx.1.5, %get_poc_diff.exit3169.6 ], [ %off_after_idx.1.5, %if.then1533.6 ], [ %off_after_idx.1.5, %get_poc_diff.exit3158.6 ], [ %off_after_idx.1.5, %if.else1522.6 ], [ %off_after_idx.1.5, %if.end1499.6 ] %cmp1541 = icmp ne i32 %off_before.1.6, -1 %cmp1544 = icmp ne i32 %off_after.1.6, -1 %or.cond2169 = and i1 %cmp1541, %cmp1544 br i1 %or.cond2169, label %cond.true1630, label %if.else1553 if.then1283.1: ; preds = %for.inc1289 %call1284.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1287.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 0, i32 1 store i32 %call1284.1, i32* %arrayidx1287.1, align 4, !tbaa !51 br label %if.end1295 if.then1265.1: ; preds = %for.inc1271 %call1266.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 1 store i32 %call1266.1, i32* %arrayidx1269.1, align 4, !tbaa !51 br label %for.inc1271.1 for.inc1271.1: ; preds = %if.then1265.1, %for.inc1271 %call1263.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.2 = icmp eq i32 %call1263.2, 0 br i1 %tobool1264.not.2, label %for.inc1271.2, label %if.then1265.2 if.then1265.2: ; preds = %for.inc1271.1 %call1266.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 2 store i32 %call1266.2, i32* %arrayidx1269.2, align 4, !tbaa !51 br label %for.inc1271.2 for.inc1271.2: ; preds = %if.then1265.2, %for.inc1271.1 %call1263.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.3 = icmp eq i32 %call1263.3, 0 br i1 %tobool1264.not.3, label %for.inc1271.3, label %if.then1265.3 if.then1265.3: ; preds = %for.inc1271.2 %call1266.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 3 store i32 %call1266.3, i32* %arrayidx1269.3, align 4, !tbaa !51 br label %for.inc1271.3 for.inc1271.3: ; preds = %if.then1265.3, %for.inc1271.2 %call1263.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.4 = icmp eq i32 %call1263.4, 0 br i1 %tobool1264.not.4, label %for.inc1271.4, label %if.then1265.4 if.then1265.4: ; preds = %for.inc1271.3 %call1266.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 4 store i32 %call1266.4, i32* %arrayidx1269.4, align 4, !tbaa !51 br label %for.inc1271.4 for.inc1271.4: ; preds = %if.then1265.4, %for.inc1271.3 %call1263.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.5 = icmp eq i32 %call1263.5, 0 br i1 %tobool1264.not.5, label %for.inc1271.5, label %if.then1265.5 if.then1265.5: ; preds = %for.inc1271.4 %call1266.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 5 store i32 %call1266.5, i32* %arrayidx1269.5, align 4, !tbaa !51 br label %for.inc1271.5 for.inc1271.5: ; preds = %if.then1265.5, %for.inc1271.4 %call1263.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.6 = icmp eq i32 %call1263.6, 0 br i1 %tobool1264.not.6, label %for.inc1271.6, label %if.then1265.6 if.then1265.6: ; preds = %for.inc1271.5 %call1266.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 6 store i32 %call1266.6, i32* %arrayidx1269.6, align 4, !tbaa !51 br label %for.inc1271.6 for.inc1271.6: ; preds = %if.then1265.6, %for.inc1271.5 %call1263.7 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1264.not.7 = icmp eq i32 %call1263.7, 0 br i1 %tobool1264.not.7, label %for.inc1271.7, label %if.then1265.7 if.then1265.7: ; preds = %for.inc1271.6 %call1266.7 = tail call arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits* %gb, i32 6) #7 %arrayidx1269.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 39, i32 5, i32 1, i32 7 store i32 %call1266.7, i32* %arrayidx1269.7, align 4, !tbaa !51 br label %for.inc1271.7 for.inc1271.7: ; preds = %if.then1265.7, %for.inc1271.6 %call1281 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1282.not = icmp eq i32 %call1281, 0 br i1 %tobool1282.not, label %for.inc1289, label %if.then1283 if.then437.1: ; preds = %for.inc447 %call438.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 1 store i32 %call438.1, i32* %arrayidx440.1, align 4, !tbaa !51 br label %if.end441.1 if.end441.1: ; preds = %if.then437.1, %for.inc447 %373 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.1 = icmp eq i32 %373, 0 br i1 %tobool443.not.1, label %for.inc447.1, label %if.then444.1 if.then444.1: ; preds = %if.end441.1 %374 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %374) #7 br label %for.inc447.1 for.inc447.1: ; preds = %if.then444.1, %if.end441.1 %375 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.2 = icmp eq i32 %375, 0 br i1 %tobool436.not.2, label %if.then437.2, label %if.end441.2 if.then437.2: ; preds = %for.inc447.1 %call438.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 2 store i32 %call438.2, i32* %arrayidx440.2, align 4, !tbaa !51 br label %if.end441.2 if.end441.2: ; preds = %if.then437.2, %for.inc447.1 %376 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.2 = icmp eq i32 %376, 0 br i1 %tobool443.not.2, label %for.inc447.2, label %if.then444.2 if.then444.2: ; preds = %if.end441.2 %377 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %377) #7 br label %for.inc447.2 for.inc447.2: ; preds = %if.then444.2, %if.end441.2 %378 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.3 = icmp eq i32 %378, 0 br i1 %tobool436.not.3, label %if.then437.3, label %if.end441.3 if.then437.3: ; preds = %for.inc447.2 %call438.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 3 store i32 %call438.3, i32* %arrayidx440.3, align 4, !tbaa !51 br label %if.end441.3 if.end441.3: ; preds = %if.then437.3, %for.inc447.2 %379 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.3 = icmp eq i32 %379, 0 br i1 %tobool443.not.3, label %for.inc447.3, label %if.then444.3 if.then444.3: ; preds = %if.end441.3 %380 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %380) #7 br label %for.inc447.3 for.inc447.3: ; preds = %if.then444.3, %if.end441.3 %381 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.4 = icmp eq i32 %381, 0 br i1 %tobool436.not.4, label %if.then437.4, label %if.end441.4 if.then437.4: ; preds = %for.inc447.3 %call438.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 4 store i32 %call438.4, i32* %arrayidx440.4, align 4, !tbaa !51 br label %if.end441.4 if.end441.4: ; preds = %if.then437.4, %for.inc447.3 %382 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.4 = icmp eq i32 %382, 0 br i1 %tobool443.not.4, label %for.inc447.4, label %if.then444.4 if.then444.4: ; preds = %if.end441.4 %383 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %383) #7 br label %for.inc447.4 for.inc447.4: ; preds = %if.then444.4, %if.end441.4 %384 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.5 = icmp eq i32 %384, 0 br i1 %tobool436.not.5, label %if.then437.5, label %if.end441.5 if.then437.5: ; preds = %for.inc447.4 %call438.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 5 store i32 %call438.5, i32* %arrayidx440.5, align 4, !tbaa !51 br label %if.end441.5 if.end441.5: ; preds = %if.then437.5, %for.inc447.4 %385 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.5 = icmp eq i32 %385, 0 br i1 %tobool443.not.5, label %for.inc447.5, label %if.then444.5 if.then444.5: ; preds = %if.end441.5 %386 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %386) #7 br label %for.inc447.5 for.inc447.5: ; preds = %if.then444.5, %if.end441.5 %387 = load i32, i32* %frame_ref_short_signaling32513502, align 4, !tbaa !191 %tobool436.not.6 = icmp eq i32 %387, 0 br i1 %tobool436.not.6, label %if.then437.6, label %if.end441.6 if.then437.6: ; preds = %for.inc447.5 %call438.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %arrayidx440.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 28, i32 6 store i32 %call438.6, i32* %arrayidx440.6, align 4, !tbaa !51 br label %if.end441.6 if.end441.6: ; preds = %if.then437.6, %for.inc447.5 %388 = load i32, i32* %frame_id_numbers_present77, align 4, !tbaa !62 %tobool443.not.6 = icmp eq i32 %388, 0 br i1 %tobool443.not.6, label %for.inc447.6, label %if.then444.6 if.then444.6: ; preds = %if.end441.6 %389 = load i32, i32* %delta_frame_id_n_bits3504, align 4, !tbaa !63 %call445.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %389) #7 br label %for.inc447.6 for.inc447.6: ; preds = %if.then444.6, %if.end441.6 %390 = load i32, i32* %error_resilient_mode, align 4, !tbaa !178 %tobool452.not = icmp eq i32 %390, 0 br i1 %tobool452.not, label %land.rhs453, label %land.end456 if.then418.1: ; preds = %for.inc422 store i32 %spec.select.7, i32* %arrayidx234, align 4, !tbaa !51 br label %for.inc422.1 for.inc422.1: ; preds = %if.then418.1, %for.inc422 %391 = load i32, i32* %arrayidx232, align 4, !tbaa !51 %cmp417.2 = icmp slt i32 %391, 0 br i1 %cmp417.2, label %if.then418.2, label %for.inc422.2 if.then418.2: ; preds = %for.inc422.1 store i32 %spec.select.7, i32* %arrayidx232, align 4, !tbaa !51 br label %for.inc422.2 for.inc422.2: ; preds = %if.then418.2, %for.inc422.1 %392 = load i32, i32* %arrayidx237, align 4, !tbaa !51 %cmp417.3 = icmp slt i32 %392, 0 br i1 %cmp417.3, label %if.then418.3, label %for.inc422.3 if.then418.3: ; preds = %for.inc422.2 store i32 %spec.select.7, i32* %arrayidx237, align 4, !tbaa !51 br label %for.inc422.3 for.inc422.3: ; preds = %if.then418.3, %for.inc422.2 %393 = load i32, i32* %arrayidx243, align 4, !tbaa !51 %cmp417.4 = icmp slt i32 %393, 0 br i1 %cmp417.4, label %if.then418.4, label %for.inc422.4 if.then418.4: ; preds = %for.inc422.3 store i32 %spec.select.7, i32* %arrayidx243, align 4, !tbaa !51 br label %for.inc422.4 for.inc422.4: ; preds = %if.then418.4, %for.inc422.3 %394 = load i32, i32* %arrayidx241, align 4, !tbaa !51 %cmp417.5 = icmp slt i32 %394, 0 br i1 %cmp417.5, label %if.then418.5, label %for.inc422.5 if.then418.5: ; preds = %for.inc422.4 store i32 %spec.select.7, i32* %arrayidx241, align 4, !tbaa !51 br label %for.inc422.5 for.inc422.5: ; preds = %if.then418.5, %for.inc422.4 %395 = load i32, i32* %arrayidx239, align 4, !tbaa !51 %cmp417.6 = icmp slt i32 %395, 0 br i1 %cmp417.6, label %if.then418.6, label %if.end429 if.then418.6: ; preds = %for.inc422.5 store i32 %spec.select.7, i32* %arrayidx239, align 4, !tbaa !51 br label %if.end429 if.then377.1: ; preds = %if.end380 store i32 1, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.1 if.end380.1: ; preds = %if.then377.1, %if.end380 %396 = phi i32 [ %97, %if.end380 ], [ 1, %if.then377.1 ] %latest_frame_offset.3.1 = phi i32 [ %latest_frame_offset.3, %if.end380 ], [ %98, %if.then377.1 ] %397 = load i32, i32* %arrayidx281.2, align 4, !tbaa !51 %398 = load i32, i32* %arrayidx282.2, align 4, !tbaa !51 %tobool372.not.2 = icmp ne i32 %398, 0 %cmp374.2 = icmp sge i32 %397, %shl %or.cond3113.not.2 = or i1 %cmp374.2, %tobool372.not.2 %cmp376.not.2 = icmp slt i32 %397, %latest_frame_offset.3.1 %or.cond3114.2 = or i1 %cmp376.not.2, %or.cond3113.not.2 br i1 %or.cond3114.2, label %if.end380.2, label %if.then377.2 if.then377.2: ; preds = %if.end380.1 store i32 2, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.2 if.end380.2: ; preds = %if.then377.2, %if.end380.1 %399 = phi i32 [ %396, %if.end380.1 ], [ 2, %if.then377.2 ] %latest_frame_offset.3.2 = phi i32 [ %latest_frame_offset.3.1, %if.end380.1 ], [ %397, %if.then377.2 ] %400 = load i32, i32* %arrayidx281.3, align 4, !tbaa !51 %401 = load i32, i32* %arrayidx282.3, align 4, !tbaa !51 %tobool372.not.3 = icmp ne i32 %401, 0 %cmp374.3 = icmp sge i32 %400, %shl %or.cond3113.not.3 = or i1 %cmp374.3, %tobool372.not.3 %cmp376.not.3 = icmp slt i32 %400, %latest_frame_offset.3.2 %or.cond3114.3 = or i1 %cmp376.not.3, %or.cond3113.not.3 br i1 %or.cond3114.3, label %if.end380.3, label %if.then377.3 if.then377.3: ; preds = %if.end380.2 store i32 3, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.3 if.end380.3: ; preds = %if.then377.3, %if.end380.2 %402 = phi i32 [ %399, %if.end380.2 ], [ 3, %if.then377.3 ] %latest_frame_offset.3.3 = phi i32 [ %latest_frame_offset.3.2, %if.end380.2 ], [ %400, %if.then377.3 ] %403 = load i32, i32* %arrayidx281.4, align 4, !tbaa !51 %404 = load i32, i32* %arrayidx282.4, align 4, !tbaa !51 %tobool372.not.4 = icmp ne i32 %404, 0 %cmp374.4 = icmp sge i32 %403, %shl %or.cond3113.not.4 = or i1 %cmp374.4, %tobool372.not.4 %cmp376.not.4 = icmp slt i32 %403, %latest_frame_offset.3.3 %or.cond3114.4 = or i1 %cmp376.not.4, %or.cond3113.not.4 br i1 %or.cond3114.4, label %if.end380.4, label %if.then377.4 if.then377.4: ; preds = %if.end380.3 store i32 4, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.4 if.end380.4: ; preds = %if.then377.4, %if.end380.3 %405 = phi i32 [ %402, %if.end380.3 ], [ 4, %if.then377.4 ] %latest_frame_offset.3.4 = phi i32 [ %latest_frame_offset.3.3, %if.end380.3 ], [ %403, %if.then377.4 ] %406 = load i32, i32* %arrayidx281.5, align 4, !tbaa !51 %407 = load i32, i32* %arrayidx282.5, align 4, !tbaa !51 %tobool372.not.5 = icmp ne i32 %407, 0 %cmp374.5 = icmp sge i32 %406, %shl %or.cond3113.not.5 = or i1 %cmp374.5, %tobool372.not.5 %cmp376.not.5 = icmp slt i32 %406, %latest_frame_offset.3.4 %or.cond3114.5 = or i1 %cmp376.not.5, %or.cond3113.not.5 br i1 %or.cond3114.5, label %if.end380.5, label %if.then377.5 if.then377.5: ; preds = %if.end380.4 store i32 5, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.5 if.end380.5: ; preds = %if.then377.5, %if.end380.4 %408 = phi i32 [ %405, %if.end380.4 ], [ 5, %if.then377.5 ] %latest_frame_offset.3.5 = phi i32 [ %latest_frame_offset.3.4, %if.end380.4 ], [ %406, %if.then377.5 ] %409 = load i32, i32* %arrayidx281.6, align 4, !tbaa !51 %410 = load i32, i32* %arrayidx282.6, align 4, !tbaa !51 %tobool372.not.6 = icmp ne i32 %410, 0 %cmp374.6 = icmp sge i32 %409, %shl %or.cond3113.not.6 = or i1 %cmp374.6, %tobool372.not.6 %cmp376.not.6 = icmp slt i32 %409, %latest_frame_offset.3.5 %or.cond3114.6 = or i1 %cmp376.not.6, %or.cond3113.not.6 br i1 %or.cond3114.6, label %if.end380.6, label %if.then377.6 if.then377.6: ; preds = %if.end380.5 store i32 6, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.6 if.end380.6: ; preds = %if.then377.6, %if.end380.5 %411 = phi i32 [ %408, %if.end380.5 ], [ 6, %if.then377.6 ] %latest_frame_offset.3.6 = phi i32 [ %latest_frame_offset.3.5, %if.end380.5 ], [ %409, %if.then377.6 ] %412 = load i32, i32* %arrayidx281.7, align 4, !tbaa !51 %413 = load i32, i32* %arrayidx282.7, align 4, !tbaa !51 %tobool372.not.7 = icmp ne i32 %413, 0 %cmp374.7 = icmp sge i32 %412, %shl %or.cond3113.not.7 = or i1 %cmp374.7, %tobool372.not.7 %cmp376.not.7 = icmp slt i32 %412, %latest_frame_offset.3.6 %or.cond3114.7 = or i1 %cmp376.not.7, %or.cond3113.not.7 br i1 %or.cond3114.7, label %if.end380.7, label %if.then377.7 if.then377.7: ; preds = %if.end380.6 store i32 7, i32* %arrayidx362, align 4, !tbaa !51 br label %if.end380.7 if.end380.7: ; preds = %if.then377.7, %if.end380.6 %414 = phi i32 [ %411, %if.end380.6 ], [ 7, %if.then377.7 ] %latest_frame_offset.3.7 = phi i32 [ %latest_frame_offset.3.6, %if.end380.6 ], [ %412, %if.then377.7 ] %cmp385.not = icmp eq i32 %latest_frame_offset.3.7, -1 br i1 %cmp385.not, label %for.inc392, label %if.then386 if.then342.1: ; preds = %if.end345 store i32 1, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.1 if.end345.1: ; preds = %if.then342.1, %if.end345 %415 = phi i32 [ %91, %if.end345 ], [ 1, %if.then342.1 ] %earliest_frame_offset.3.1 = phi i32 [ %earliest_frame_offset.3, %if.end345 ], [ %79, %if.then342.1 ] %416 = load i32, i32* %arrayidx282.2, align 4, !tbaa !51 %tobool337.not.2 = icmp eq i32 %416, 0 %or.cond3111.not.2 = and i1 %cmp312.not.2, %tobool337.not.2 %cmp341.2 = icmp slt i32 %78, %earliest_frame_offset.3.1 %or.cond3112.2 = and i1 %cmp341.2, %or.cond3111.not.2 br i1 %or.cond3112.2, label %if.then342.2, label %if.end345.2 if.then342.2: ; preds = %if.end345.1 store i32 2, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.2 if.end345.2: ; preds = %if.then342.2, %if.end345.1 %417 = phi i32 [ %415, %if.end345.1 ], [ 2, %if.then342.2 ] %earliest_frame_offset.3.2 = phi i32 [ %earliest_frame_offset.3.1, %if.end345.1 ], [ %78, %if.then342.2 ] %418 = load i32, i32* %arrayidx282.3, align 4, !tbaa !51 %tobool337.not.3 = icmp eq i32 %418, 0 %or.cond3111.not.3 = and i1 %cmp312.not.3, %tobool337.not.3 %cmp341.3 = icmp slt i32 %77, %earliest_frame_offset.3.2 %or.cond3112.3 = and i1 %cmp341.3, %or.cond3111.not.3 br i1 %or.cond3112.3, label %if.then342.3, label %if.end345.3 if.then342.3: ; preds = %if.end345.2 store i32 3, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.3 if.end345.3: ; preds = %if.then342.3, %if.end345.2 %419 = phi i32 [ %417, %if.end345.2 ], [ 3, %if.then342.3 ] %earliest_frame_offset.3.3 = phi i32 [ %earliest_frame_offset.3.2, %if.end345.2 ], [ %77, %if.then342.3 ] %420 = load i32, i32* %arrayidx282.4, align 4, !tbaa !51 %tobool337.not.4 = icmp eq i32 %420, 0 %or.cond3111.not.4 = and i1 %cmp312.not.4, %tobool337.not.4 %cmp341.4 = icmp slt i32 %76, %earliest_frame_offset.3.3 %or.cond3112.4 = and i1 %cmp341.4, %or.cond3111.not.4 br i1 %or.cond3112.4, label %if.then342.4, label %if.end345.4 if.then342.4: ; preds = %if.end345.3 store i32 4, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.4 if.end345.4: ; preds = %if.then342.4, %if.end345.3 %421 = phi i32 [ %419, %if.end345.3 ], [ 4, %if.then342.4 ] %earliest_frame_offset.3.4 = phi i32 [ %earliest_frame_offset.3.3, %if.end345.3 ], [ %76, %if.then342.4 ] %422 = load i32, i32* %arrayidx282.5, align 4, !tbaa !51 %tobool337.not.5 = icmp eq i32 %422, 0 %or.cond3111.not.5 = and i1 %cmp312.not.5, %tobool337.not.5 %cmp341.5 = icmp slt i32 %75, %earliest_frame_offset.3.4 %or.cond3112.5 = and i1 %cmp341.5, %or.cond3111.not.5 br i1 %or.cond3112.5, label %if.then342.5, label %if.end345.5 if.then342.5: ; preds = %if.end345.4 store i32 5, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.5 if.end345.5: ; preds = %if.then342.5, %if.end345.4 %423 = phi i32 [ %421, %if.end345.4 ], [ 5, %if.then342.5 ] %earliest_frame_offset.3.5 = phi i32 [ %earliest_frame_offset.3.4, %if.end345.4 ], [ %75, %if.then342.5 ] %424 = load i32, i32* %arrayidx282.6, align 4, !tbaa !51 %tobool337.not.6 = icmp eq i32 %424, 0 %or.cond3111.not.6 = and i1 %cmp312.not.6, %tobool337.not.6 %cmp341.6 = icmp slt i32 %74, %earliest_frame_offset.3.5 %or.cond3112.6 = and i1 %cmp341.6, %or.cond3111.not.6 br i1 %or.cond3112.6, label %if.then342.6, label %if.end345.6 if.then342.6: ; preds = %if.end345.5 store i32 6, i32* %arrayidx241, align 4, !tbaa !51 br label %if.end345.6 if.end345.6: ; preds = %if.then342.6, %if.end345.5 %425 = phi i32 [ %423, %if.end345.5 ], [ 6, %if.then342.6 ] %earliest_frame_offset.3.6 = phi i32 [ %earliest_frame_offset.3.5, %if.end345.5 ], [ %74, %if.then342.6 ] %426 = load i32, i32* %arrayidx282.7, align 4, !tbaa !51 %tobool337.not.7 = icmp eq i32 %426, 0 %or.cond3111.not.7 = and i1 %cmp312.not.7, %tobool337.not.7 %cmp341.7 = icmp slt i32 %add265.7.sink, %earliest_frame_offset.3.6 %or.cond3112.7 = and i1 %cmp341.7, %or.cond3111.not.7 br i1 %or.cond3112.7, label %if.end345.7.thread, label %if.end345.7 if.end345.7.thread: ; preds = %if.end345.6 store i32 7, i32* %arrayidx241, align 4, !tbaa !51 br label %if.then351 if.end345.7: ; preds = %if.end345.6 %cmp350.not = icmp eq i32 %earliest_frame_offset.3.6, 2147483647 br i1 %cmp350.not, label %for.body360.preheader, label %if.then351 if.then315.1: ; preds = %if.end318 store i32 1, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.1 if.end318.1: ; preds = %if.then315.1, %if.end318 %427 = phi i32 [ %87, %if.end318 ], [ 1, %if.then315.1 ] %earliest_frame_offset.1.1 = phi i32 [ %earliest_frame_offset.1, %if.end318 ], [ %79, %if.then315.1 ] %428 = load i32, i32* %arrayidx282.2, align 4, !tbaa !51 %tobool310.not.2 = icmp eq i32 %428, 0 %cmp312.not.2 = icmp sge i32 %78, %shl %or.cond3109.not.2 = and i1 %cmp312.not.2, %tobool310.not.2 %cmp314.2 = icmp slt i32 %78, %earliest_frame_offset.1.1 %or.cond3110.2 = and i1 %cmp314.2, %or.cond3109.not.2 br i1 %or.cond3110.2, label %if.then315.2, label %if.end318.2 if.then315.2: ; preds = %if.end318.1 store i32 2, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.2 if.end318.2: ; preds = %if.then315.2, %if.end318.1 %429 = phi i32 [ %427, %if.end318.1 ], [ 2, %if.then315.2 ] %earliest_frame_offset.1.2 = phi i32 [ %earliest_frame_offset.1.1, %if.end318.1 ], [ %78, %if.then315.2 ] %430 = load i32, i32* %arrayidx282.3, align 4, !tbaa !51 %tobool310.not.3 = icmp eq i32 %430, 0 %cmp312.not.3 = icmp sge i32 %77, %shl %or.cond3109.not.3 = and i1 %cmp312.not.3, %tobool310.not.3 %cmp314.3 = icmp slt i32 %77, %earliest_frame_offset.1.2 %or.cond3110.3 = and i1 %cmp314.3, %or.cond3109.not.3 br i1 %or.cond3110.3, label %if.then315.3, label %if.end318.3 if.then315.3: ; preds = %if.end318.2 store i32 3, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.3 if.end318.3: ; preds = %if.then315.3, %if.end318.2 %431 = phi i32 [ %429, %if.end318.2 ], [ 3, %if.then315.3 ] %earliest_frame_offset.1.3 = phi i32 [ %earliest_frame_offset.1.2, %if.end318.2 ], [ %77, %if.then315.3 ] %432 = load i32, i32* %arrayidx282.4, align 4, !tbaa !51 %tobool310.not.4 = icmp eq i32 %432, 0 %cmp312.not.4 = icmp sge i32 %76, %shl %or.cond3109.not.4 = and i1 %cmp312.not.4, %tobool310.not.4 %cmp314.4 = icmp slt i32 %76, %earliest_frame_offset.1.3 %or.cond3110.4 = and i1 %cmp314.4, %or.cond3109.not.4 br i1 %or.cond3110.4, label %if.then315.4, label %if.end318.4 if.then315.4: ; preds = %if.end318.3 store i32 4, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.4 if.end318.4: ; preds = %if.then315.4, %if.end318.3 %433 = phi i32 [ %431, %if.end318.3 ], [ 4, %if.then315.4 ] %earliest_frame_offset.1.4 = phi i32 [ %earliest_frame_offset.1.3, %if.end318.3 ], [ %76, %if.then315.4 ] %434 = load i32, i32* %arrayidx282.5, align 4, !tbaa !51 %tobool310.not.5 = icmp eq i32 %434, 0 %cmp312.not.5 = icmp sge i32 %75, %shl %or.cond3109.not.5 = and i1 %cmp312.not.5, %tobool310.not.5 %cmp314.5 = icmp slt i32 %75, %earliest_frame_offset.1.4 %or.cond3110.5 = and i1 %cmp314.5, %or.cond3109.not.5 br i1 %or.cond3110.5, label %if.then315.5, label %if.end318.5 if.then315.5: ; preds = %if.end318.4 store i32 5, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.5 if.end318.5: ; preds = %if.then315.5, %if.end318.4 %435 = phi i32 [ %433, %if.end318.4 ], [ 5, %if.then315.5 ] %earliest_frame_offset.1.5 = phi i32 [ %earliest_frame_offset.1.4, %if.end318.4 ], [ %75, %if.then315.5 ] %436 = load i32, i32* %arrayidx282.6, align 4, !tbaa !51 %tobool310.not.6 = icmp eq i32 %436, 0 %cmp312.not.6 = icmp sge i32 %74, %shl %or.cond3109.not.6 = and i1 %cmp312.not.6, %tobool310.not.6 %cmp314.6 = icmp slt i32 %74, %earliest_frame_offset.1.5 %or.cond3110.6 = and i1 %cmp314.6, %or.cond3109.not.6 br i1 %or.cond3110.6, label %if.then315.6, label %if.end318.6 if.then315.6: ; preds = %if.end318.5 store i32 6, i32* %arrayidx243, align 8, !tbaa !51 br label %if.end318.6 if.end318.6: ; preds = %if.then315.6, %if.end318.5 %437 = phi i32 [ %435, %if.end318.5 ], [ 6, %if.then315.6 ] %earliest_frame_offset.1.6 = phi i32 [ %earliest_frame_offset.1.5, %if.end318.5 ], [ %74, %if.then315.6 ] %438 = load i32, i32* %arrayidx282.7, align 4, !tbaa !51 %tobool310.not.7 = icmp eq i32 %438, 0 %cmp312.not.7 = icmp sge i32 %add265.7.sink, %shl %or.cond3109.not.7 = and i1 %cmp312.not.7, %tobool310.not.7 %cmp314.7 = icmp slt i32 %add265.7.sink, %earliest_frame_offset.1.6 %or.cond3110.7 = and i1 %cmp314.7, %or.cond3109.not.7 br i1 %or.cond3110.7, label %if.end318.7.thread, label %if.end318.7 if.end318.7.thread: ; preds = %if.end318.6 store i32 7, i32* %arrayidx243, align 8, !tbaa !51 br label %if.then324 if.end318.7: ; preds = %if.end318.6 %cmp323.not = icmp eq i32 %earliest_frame_offset.1.6, 2147483647 br i1 %cmp323.not, label %if.end328, label %if.then324 if.then288.1: ; preds = %if.end291 store i32 1, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.1 if.end291.1: ; preds = %if.then288.1, %if.end291 %439 = phi i32 [ %84, %if.end291 ], [ 1, %if.then288.1 ] %latest_frame_offset.1.1 = phi i32 [ %latest_frame_offset.1, %if.end291 ], [ %79, %if.then288.1 ] %arrayidx281.2 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 2 %arrayidx282.2 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 2 %440 = load i32, i32* %arrayidx282.2, align 4, !tbaa !51 %tobool283.not.2 = icmp ne i32 %440, 0 %cmp285.not.2 = icmp slt i32 %78, %shl %or.cond.2 = or i1 %cmp285.not.2, %tobool283.not.2 %cmp287.not.2 = icmp slt i32 %78, %latest_frame_offset.1.1 %or.cond3108.2 = or i1 %cmp287.not.2, %or.cond.2 br i1 %or.cond3108.2, label %if.end291.2, label %if.then288.2 if.then288.2: ; preds = %if.end291.1 store i32 2, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.2 if.end291.2: ; preds = %if.then288.2, %if.end291.1 %441 = phi i32 [ %439, %if.end291.1 ], [ 2, %if.then288.2 ] %latest_frame_offset.1.2 = phi i32 [ %latest_frame_offset.1.1, %if.end291.1 ], [ %78, %if.then288.2 ] %arrayidx281.3 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 3 %arrayidx282.3 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 3 %442 = load i32, i32* %arrayidx282.3, align 4, !tbaa !51 %tobool283.not.3 = icmp ne i32 %442, 0 %cmp285.not.3 = icmp slt i32 %77, %shl %or.cond.3 = or i1 %cmp285.not.3, %tobool283.not.3 %cmp287.not.3 = icmp slt i32 %77, %latest_frame_offset.1.2 %or.cond3108.3 = or i1 %cmp287.not.3, %or.cond.3 br i1 %or.cond3108.3, label %if.end291.3, label %if.then288.3 if.then288.3: ; preds = %if.end291.2 store i32 3, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.3 if.end291.3: ; preds = %if.then288.3, %if.end291.2 %443 = phi i32 [ %441, %if.end291.2 ], [ 3, %if.then288.3 ] %latest_frame_offset.1.3 = phi i32 [ %latest_frame_offset.1.2, %if.end291.2 ], [ %77, %if.then288.3 ] %arrayidx281.4 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 4 %arrayidx282.4 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 4 %444 = load i32, i32* %arrayidx282.4, align 4, !tbaa !51 %tobool283.not.4 = icmp ne i32 %444, 0 %cmp285.not.4 = icmp slt i32 %76, %shl %or.cond.4 = or i1 %cmp285.not.4, %tobool283.not.4 %cmp287.not.4 = icmp slt i32 %76, %latest_frame_offset.1.3 %or.cond3108.4 = or i1 %cmp287.not.4, %or.cond.4 br i1 %or.cond3108.4, label %if.end291.4, label %if.then288.4 if.then288.4: ; preds = %if.end291.3 store i32 4, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.4 if.end291.4: ; preds = %if.then288.4, %if.end291.3 %445 = phi i32 [ %443, %if.end291.3 ], [ 4, %if.then288.4 ] %latest_frame_offset.1.4 = phi i32 [ %latest_frame_offset.1.3, %if.end291.3 ], [ %76, %if.then288.4 ] %arrayidx281.5 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 5 %arrayidx282.5 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 5 %446 = load i32, i32* %arrayidx282.5, align 4, !tbaa !51 %tobool283.not.5 = icmp ne i32 %446, 0 %cmp285.not.5 = icmp slt i32 %75, %shl %or.cond.5 = or i1 %cmp285.not.5, %tobool283.not.5 %cmp287.not.5 = icmp slt i32 %75, %latest_frame_offset.1.4 %or.cond3108.5 = or i1 %cmp287.not.5, %or.cond.5 br i1 %or.cond3108.5, label %if.end291.5, label %if.then288.5 if.then288.5: ; preds = %if.end291.4 store i32 5, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.5 if.end291.5: ; preds = %if.then288.5, %if.end291.4 %447 = phi i32 [ %445, %if.end291.4 ], [ 5, %if.then288.5 ] %latest_frame_offset.1.5 = phi i32 [ %latest_frame_offset.1.4, %if.end291.4 ], [ %75, %if.then288.5 ] %arrayidx281.6 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 6 %arrayidx282.6 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 6 %448 = load i32, i32* %arrayidx282.6, align 4, !tbaa !51 %tobool283.not.6 = icmp ne i32 %448, 0 %cmp285.not.6 = icmp slt i32 %74, %shl %or.cond.6 = or i1 %cmp285.not.6, %tobool283.not.6 %cmp287.not.6 = icmp slt i32 %74, %latest_frame_offset.1.5 %or.cond3108.6 = or i1 %cmp287.not.6, %or.cond.6 br i1 %or.cond3108.6, label %if.end291.6, label %if.then288.6 if.then288.6: ; preds = %if.end291.5 store i32 6, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.6 if.end291.6: ; preds = %if.then288.6, %if.end291.5 %449 = phi i32 [ %447, %if.end291.5 ], [ 6, %if.then288.6 ] %latest_frame_offset.1.6 = phi i32 [ %latest_frame_offset.1.5, %if.end291.5 ], [ %74, %if.then288.6 ] %arrayidx281.7 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 7 %arrayidx282.7 = getelementptr inbounds [8 x i32], [8 x i32]* %used_frame, i32 0, i32 7 %450 = load i32, i32* %arrayidx282.7, align 4, !tbaa !51 %tobool283.not.7 = icmp ne i32 %450, 0 %cmp285.not.7 = icmp slt i32 %add265.7.sink, %shl %or.cond.7 = or i1 %cmp285.not.7, %tobool283.not.7 %cmp287.not.7 = icmp slt i32 %add265.7.sink, %latest_frame_offset.1.6 %or.cond3108.7 = or i1 %cmp287.not.7, %or.cond.7 br i1 %or.cond3108.7, label %if.end291.7, label %if.then288.7 if.then288.7: ; preds = %if.end291.6 store i32 7, i32* %arrayidx239, align 8, !tbaa !51 br label %if.end291.7 if.end291.7: ; preds = %if.then288.7, %if.end291.6 %451 = phi i32 [ %449, %if.end291.6 ], [ 7, %if.then288.7 ] %latest_frame_offset.1.7 = phi i32 [ %latest_frame_offset.1.6, %if.end291.6 ], [ %add265.7.sink, %if.then288.7 ] %cmp296.not = icmp eq i32 %latest_frame_offset.1.7, -1 br i1 %cmp296.not, label %if.end301, label %if.then297 get_poc_diff.exit.us.1: ; preds = %get_poc_diff.exit.us %arrayidx266.us.1 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 1 store i32 %shl, i32* %arrayidx266.us.1, align 4, !tbaa !51 %frame_hdr252.us.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0, i32 0, i32 1 %452 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.2, align 4, !tbaa !168 %tobool253.not.us.2 = icmp eq %struct.Dav1dFrameHeader* %452, null br i1 %tobool253.not.us.2, label %cleanup426, label %get_poc_diff.exit.us.2 get_poc_diff.exit.us.2: ; preds = %get_poc_diff.exit.us.1 %arrayidx266.us.2 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 2 store i32 %shl, i32* %arrayidx266.us.2, align 4, !tbaa !51 %frame_hdr252.us.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0, i32 0, i32 1 %453 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.3, align 4, !tbaa !168 %tobool253.not.us.3 = icmp eq %struct.Dav1dFrameHeader* %453, null br i1 %tobool253.not.us.3, label %cleanup426, label %get_poc_diff.exit.us.3 get_poc_diff.exit.us.3: ; preds = %get_poc_diff.exit.us.2 %arrayidx266.us.3 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 3 store i32 %shl, i32* %arrayidx266.us.3, align 4, !tbaa !51 %frame_hdr252.us.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0, i32 0, i32 1 %454 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.4, align 4, !tbaa !168 %tobool253.not.us.4 = icmp eq %struct.Dav1dFrameHeader* %454, null br i1 %tobool253.not.us.4, label %cleanup426, label %get_poc_diff.exit.us.4 get_poc_diff.exit.us.4: ; preds = %get_poc_diff.exit.us.3 %arrayidx266.us.4 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 4 store i32 %shl, i32* %arrayidx266.us.4, align 4, !tbaa !51 %frame_hdr252.us.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0, i32 0, i32 1 %455 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.5, align 4, !tbaa !168 %tobool253.not.us.5 = icmp eq %struct.Dav1dFrameHeader* %455, null br i1 %tobool253.not.us.5, label %cleanup426, label %get_poc_diff.exit.us.5 get_poc_diff.exit.us.5: ; preds = %get_poc_diff.exit.us.4 %arrayidx266.us.5 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 5 store i32 %shl, i32* %arrayidx266.us.5, align 4, !tbaa !51 %frame_hdr252.us.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0, i32 0, i32 1 %456 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.6, align 4, !tbaa !168 %tobool253.not.us.6 = icmp eq %struct.Dav1dFrameHeader* %456, null br i1 %tobool253.not.us.6, label %cleanup426, label %get_poc_diff.exit.us.6 get_poc_diff.exit.us.6: ; preds = %get_poc_diff.exit.us.5 %arrayidx266.us.6 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 6 store i32 %shl, i32* %arrayidx266.us.6, align 4, !tbaa !51 %frame_hdr252.us.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0, i32 0, i32 1 %457 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.us.7, align 4, !tbaa !168 %tobool253.not.us.7 = icmp eq %struct.Dav1dFrameHeader* %457, null br i1 %tobool253.not.us.7, label %cleanup426, label %for.end269 if.end.i.1: ; preds = %if.end.i %frame_offset262.1 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %73, i32 0, i32 4 %458 = load i32, i32* %frame_offset262.1, align 8, !tbaa !183 %sub1.i.1 = sub nsw i32 %458, %71 %and.i.1 = and i32 %sub1.i.1, %sub2.i %and3.i.1 = and i32 %sub1.i.1, %shl %sub4.i.1 = sub nsw i32 %and.i.1, %and3.i.1 %add265.1 = add nsw i32 %sub4.i.1, %shl %arrayidx266.1 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 1 store i32 %add265.1, i32* %arrayidx266.1, align 4, !tbaa !51 %frame_hdr252.2 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 2, i32 0, i32 0, i32 1 %459 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.2, align 4, !tbaa !168 %tobool253.not.2 = icmp eq %struct.Dav1dFrameHeader* %459, null br i1 %tobool253.not.2, label %cleanup426, label %if.end.i.2 if.end.i.2: ; preds = %if.end.i.1 %frame_offset262.2 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %459, i32 0, i32 4 %460 = load i32, i32* %frame_offset262.2, align 8, !tbaa !183 %sub1.i.2 = sub nsw i32 %460, %71 %and.i.2 = and i32 %sub1.i.2, %sub2.i %and3.i.2 = and i32 %sub1.i.2, %shl %sub4.i.2 = sub nsw i32 %and.i.2, %and3.i.2 %add265.2 = add nsw i32 %sub4.i.2, %shl %arrayidx266.2 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 2 store i32 %add265.2, i32* %arrayidx266.2, align 4, !tbaa !51 %frame_hdr252.3 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 3, i32 0, i32 0, i32 1 %461 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.3, align 4, !tbaa !168 %tobool253.not.3 = icmp eq %struct.Dav1dFrameHeader* %461, null br i1 %tobool253.not.3, label %cleanup426, label %if.end.i.3 if.end.i.3: ; preds = %if.end.i.2 %frame_offset262.3 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %461, i32 0, i32 4 %462 = load i32, i32* %frame_offset262.3, align 8, !tbaa !183 %sub1.i.3 = sub nsw i32 %462, %71 %and.i.3 = and i32 %sub1.i.3, %sub2.i %and3.i.3 = and i32 %sub1.i.3, %shl %sub4.i.3 = sub nsw i32 %and.i.3, %and3.i.3 %add265.3 = add nsw i32 %sub4.i.3, %shl %arrayidx266.3 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 3 store i32 %add265.3, i32* %arrayidx266.3, align 4, !tbaa !51 %frame_hdr252.4 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 4, i32 0, i32 0, i32 1 %463 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.4, align 4, !tbaa !168 %tobool253.not.4 = icmp eq %struct.Dav1dFrameHeader* %463, null br i1 %tobool253.not.4, label %cleanup426, label %if.end.i.4 if.end.i.4: ; preds = %if.end.i.3 %frame_offset262.4 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %463, i32 0, i32 4 %464 = load i32, i32* %frame_offset262.4, align 8, !tbaa !183 %sub1.i.4 = sub nsw i32 %464, %71 %and.i.4 = and i32 %sub1.i.4, %sub2.i %and3.i.4 = and i32 %sub1.i.4, %shl %sub4.i.4 = sub nsw i32 %and.i.4, %and3.i.4 %add265.4 = add nsw i32 %sub4.i.4, %shl %arrayidx266.4 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 4 store i32 %add265.4, i32* %arrayidx266.4, align 4, !tbaa !51 %frame_hdr252.5 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 5, i32 0, i32 0, i32 1 %465 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.5, align 4, !tbaa !168 %tobool253.not.5 = icmp eq %struct.Dav1dFrameHeader* %465, null br i1 %tobool253.not.5, label %cleanup426, label %if.end.i.5 if.end.i.5: ; preds = %if.end.i.4 %frame_offset262.5 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %465, i32 0, i32 4 %466 = load i32, i32* %frame_offset262.5, align 8, !tbaa !183 %sub1.i.5 = sub nsw i32 %466, %71 %and.i.5 = and i32 %sub1.i.5, %sub2.i %and3.i.5 = and i32 %sub1.i.5, %shl %sub4.i.5 = sub nsw i32 %and.i.5, %and3.i.5 %add265.5 = add nsw i32 %sub4.i.5, %shl %arrayidx266.5 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 5 store i32 %add265.5, i32* %arrayidx266.5, align 4, !tbaa !51 %frame_hdr252.6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 6, i32 0, i32 0, i32 1 %467 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.6, align 4, !tbaa !168 %tobool253.not.6 = icmp eq %struct.Dav1dFrameHeader* %467, null br i1 %tobool253.not.6, label %cleanup426, label %if.end.i.6 if.end.i.6: ; preds = %if.end.i.5 %frame_offset262.6 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %467, i32 0, i32 4 %468 = load i32, i32* %frame_offset262.6, align 8, !tbaa !183 %sub1.i.6 = sub nsw i32 %468, %71 %and.i.6 = and i32 %sub1.i.6, %sub2.i %and3.i.6 = and i32 %sub1.i.6, %shl %sub4.i.6 = sub nsw i32 %and.i.6, %and3.i.6 %add265.6 = add nsw i32 %sub4.i.6, %shl %arrayidx266.6 = getelementptr inbounds [8 x i32], [8 x i32]* %shifted_frame_offset, i32 0, i32 6 store i32 %add265.6, i32* %arrayidx266.6, align 4, !tbaa !51 %frame_hdr252.7 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 7, i32 0, i32 0, i32 1 %469 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr252.7, align 4, !tbaa !168 %tobool253.not.7 = icmp eq %struct.Dav1dFrameHeader* %469, null br i1 %tobool253.not.7, label %cleanup426, label %if.end.i.7 if.end.i.7: ; preds = %if.end.i.6 %frame_offset262.7 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %469, i32 0, i32 4 %470 = load i32, i32* %frame_offset262.7, align 8, !tbaa !183 %sub1.i.7 = sub nsw i32 %470, %71 %and.i.7 = and i32 %sub1.i.7, %sub2.i %and3.i.7 = and i32 %sub1.i.7, %shl %sub4.i.7 = sub nsw i32 %and.i.7, %and3.i.7 %add265.7 = add nsw i32 %sub4.i.7, %shl br label %for.end269 } declare dso_local arm_aapcs_vfpcc void @dav1d_data_unref_internal(%struct.Dav1dData*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_log(%struct.Dav1dContext*, i8*, ...) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_bytealign_get_bits(%struct.GetBits*) local_unnamed_addr #2 ; Function Attrs: nounwind declare dso_local arm_aapcs_vfpcc noalias i8* @realloc(i8* nocapture, i32) local_unnamed_addr #5 declare dso_local arm_aapcs_vfpcc void @dav1d_data_ref(%struct.Dav1dData*, %struct.Dav1dData*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_picture_ref(%struct.Dav1dPicture*, %struct.Dav1dPicture*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_data_props_copy(%struct.Dav1dDataProps*, %struct.Dav1dDataProps*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_thread_picture_ref(%struct.Dav1dThreadPicture*, %struct.Dav1dThreadPicture*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_cdf_thread_ref(%struct.CdfThreadContext*, %struct.CdfThreadContext*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @dav1d_ref_inc(%struct.Dav1dRef*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc i32 @dav1d_submit_frame(%struct.Dav1dContext*) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_vlc(%struct.GetBits*) local_unnamed_addr #2 ; Function Attrs: nounwind define internal arm_aapcs_vfpcc i32 @read_frame_size(%struct.Dav1dContext* nocapture readonly %c, %struct.GetBits* %gb, i32 %use_ref) unnamed_addr #0 { entry: %seq_hdr = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 7 %0 = load %struct.Dav1dSequenceHeader*, %struct.Dav1dSequenceHeader** %seq_hdr, align 4, !tbaa !92 %frame_hdr = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 9 %1 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr, align 4, !tbaa !93 %tobool.not = icmp eq i32 %use_ref, 0 br i1 %tobool.not, label %if.end48, label %for.body.preheader for.body.preheader: ; preds = %entry %call = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not = icmp eq i32 %call, 0 br i1 %tobool1.not, label %for.inc, label %if.then2 if.then2: ; preds = %for.inc.5, %for.inc.4, %for.inc.3, %for.inc.2, %for.inc.1, %for.inc, %for.body.preheader %i.0201.lcssa = phi i32 [ 0, %for.body.preheader ], [ 1, %for.inc ], [ 2, %for.inc.1 ], [ 3, %for.inc.2 ], [ 4, %for.inc.3 ], [ 5, %for.inc.4 ], [ 6, %for.inc.5 ] %2 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr, align 4, !tbaa !93 %arrayidx = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %2, i32 0, i32 28, i32 %i.0201.lcssa %3 = load i32, i32* %arrayidx, align 4, !tbaa !51 %arrayidx6 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %3, i32 0, i32 0, i32 2, i32 0 %4 = load i8*, i8** %arrayidx6, align 8, !tbaa !26 %tobool7.not = icmp eq i8* %4, null br i1 %tobool7.not, label %cleanup118, label %if.end if.end: ; preds = %if.then2 %w = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %3, i32 0, i32 0, i32 4, i32 0 %5 = load i32, i32* %w, align 4, !tbaa !270 %width = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2 %arrayidx11 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 store i32 %5, i32* %arrayidx11, align 4, !tbaa !51 %h = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %3, i32 0, i32 0, i32 4, i32 1 %6 = load i32, i32* %h, align 4, !tbaa !271 %height = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 3 store i32 %6, i32* %height, align 4, !tbaa !118 %frame_hdr15 = getelementptr inbounds %struct.Dav1dContext, %struct.Dav1dContext* %c, i32 0, i32 19, i32 %3, i32 0, i32 0, i32 1 %7 = load %struct.Dav1dFrameHeader*, %struct.Dav1dFrameHeader** %frame_hdr15, align 4, !tbaa !272 %render_width = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %7, i32 0, i32 22 %8 = load i32, i32* %render_width, align 4, !tbaa !273 %render_width16 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 22 store i32 %8, i32* %render_width16, align 4, !tbaa !273 %render_height = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %7, i32 0, i32 23 %9 = load i32, i32* %render_height, align 8, !tbaa !274 %render_height19 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 23 store i32 %9, i32* %render_height19, align 8, !tbaa !274 %super_res = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 43 %10 = load i32, i32* %super_res, align 4, !tbaa !77 %tobool20.not = icmp eq i32 %10, 0 br i1 %tobool20.not, label %land.end.thread, label %land.end land.end.thread: ; preds = %if.end %enabled193 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 store i32 0, i32* %enabled193, align 4, !tbaa !189 br label %if.else land.end: ; preds = %if.end %call21 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool22 = icmp ne i32 %call21, 0 %land.ext = zext i1 %tobool22 to i32 %enabled = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 store i32 %land.ext, i32* %enabled, align 4, !tbaa !189 br i1 %tobool22, label %if.then27, label %land.end.if.else_crit_edge land.end.if.else_crit_edge: ; preds = %land.end %.pre = load i32, i32* %arrayidx11, align 4, !tbaa !51 br label %if.else if.then27: ; preds = %land.end %call28 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %add = add i32 %call28, 9 %width_scale_denominator = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 0 store i32 %add, i32* %width_scale_denominator, align 4, !tbaa !275 %11 = load i32, i32* %arrayidx11, align 4, !tbaa !51 %mul = shl nsw i32 %11, 3 %shr = ashr i32 %add, 1 %add32 = add nsw i32 %mul, %shr %div = sdiv i32 %add32, %add %12 = icmp slt i32 %11, 16 %cond.i = select i1 %12, i32 %11, i32 16 %cmp.i189 = icmp sgt i32 %div, %cond.i %cond.i190 = select i1 %cmp.i189, i32 %div, i32 %cond.i %arrayidx38 = getelementptr inbounds [2 x i32], [2 x i32]* %width, i32 0, i32 0 store i32 %cond.i190, i32* %arrayidx38, align 4, !tbaa !51 br label %cleanup118 if.else: ; preds = %land.end.if.else_crit_edge, %land.end.thread %13 = phi i32 [ %.pre, %land.end.if.else_crit_edge ], [ %5, %land.end.thread ] %width_scale_denominator40 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 0 store i32 8, i32* %width_scale_denominator40, align 4, !tbaa !275 %arrayidx44 = getelementptr inbounds [2 x i32], [2 x i32]* %width, i32 0, i32 0 store i32 %13, i32* %arrayidx44, align 4, !tbaa !51 br label %cleanup118 for.inc: ; preds = %for.body.preheader %call.1 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.1 = icmp eq i32 %call.1, 0 br i1 %tobool1.not.1, label %for.inc.1, label %if.then2 if.end48: ; preds = %for.inc.5, %entry %frame_size_override = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 17 %14 = load i32, i32* %frame_size_override, align 4, !tbaa !182 %tobool49.not = icmp eq i32 %14, 0 br i1 %tobool49.not, label %if.else58, label %if.then50 if.then50: ; preds = %if.end48 %width_n_bits = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 25 %15 = load i32, i32* %width_n_bits, align 4, !tbaa !58 %call51 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %15) #7 %add52 = add i32 %call51, 1 %arrayidx54 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 store i32 %add52, i32* %arrayidx54, align 4, !tbaa !51 %height_n_bits = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 26 %16 = load i32, i32* %height_n_bits, align 4, !tbaa !59 %call55 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 %16) #7 %add56 = add i32 %call55, 1 br label %if.end62 if.else58: ; preds = %if.end48 %max_width = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 1 %17 = load i32, i32* %max_width, align 4, !tbaa !60 %arrayidx60 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 store i32 %17, i32* %arrayidx60, align 4, !tbaa !51 %max_height = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 2 %18 = load i32, i32* %max_height, align 4, !tbaa !61 br label %if.end62 if.end62: ; preds = %if.else58, %if.then50 %add56.sink = phi i32 [ %18, %if.else58 ], [ %add56, %if.then50 ] %19 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 3 store i32 %add56.sink, i32* %19, align 4 %super_res63 = getelementptr inbounds %struct.Dav1dSequenceHeader, %struct.Dav1dSequenceHeader* %0, i32 0, i32 43 %20 = load i32, i32* %super_res63, align 4, !tbaa !77 %tobool64.not = icmp eq i32 %20, 0 br i1 %tobool64.not, label %land.end68.thread, label %land.end68 land.end68.thread: ; preds = %if.end62 %enabled71198 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 store i32 0, i32* %enabled71198, align 4, !tbaa !189 br label %if.else93 land.end68: ; preds = %if.end62 %call66 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool67 = icmp ne i32 %call66, 0 %land.ext69 = zext i1 %tobool67 to i32 %enabled71 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 1 store i32 %land.ext69, i32* %enabled71, align 4, !tbaa !189 br i1 %tobool67, label %if.then75, label %if.else93 if.then75: ; preds = %land.end68 %call77 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 3) #7 %add78 = add i32 %call77, 9 %width_scale_denominator80 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 0 store i32 %add78, i32* %width_scale_denominator80, align 4, !tbaa !275 %arrayidx82 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 %21 = load i32, i32* %arrayidx82, align 4, !tbaa !51 %mul83 = shl nsw i32 %21, 3 %shr84 = ashr i32 %add78, 1 %add85 = add nsw i32 %mul83, %shr84 %div86 = sdiv i32 %add85, %add78 %22 = icmp slt i32 %21, 16 %cond.i188 = select i1 %22, i32 %21, i32 16 %cmp.i185 = icmp sgt i32 %div86, %cond.i188 %cond.i186 = select i1 %cmp.i185, i32 %div86, i32 %cond.i188 br label %if.end100 if.else93: ; preds = %land.end68.thread, %land.end68 %width_scale_denominator95 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 24, i32 0 store i32 8, i32* %width_scale_denominator95, align 4, !tbaa !275 %arrayidx97 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 %23 = load i32, i32* %arrayidx97, align 4, !tbaa !51 br label %if.end100 if.end100: ; preds = %if.else93, %if.then75 %.sink = phi i32 [ %23, %if.else93 ], [ %cond.i186, %if.then75 ] %arrayidx99 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 0 store i32 %.sink, i32* %arrayidx99, align 4, !tbaa !51 %call101 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %have_render_size = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 25 store i32 %call101, i32* %have_render_size, align 4, !tbaa !276 %tobool103.not = icmp eq i32 %call101, 0 br i1 %tobool103.not, label %if.else111, label %if.then104 if.then104: ; preds = %if.end100 %call105 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 16) #7 %add106 = add i32 %call105, 1 %render_width107 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 22 store i32 %add106, i32* %render_width107, align 4, !tbaa !273 %call108 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 16) #7 %add109 = add i32 %call108, 1 %render_height110 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 23 store i32 %add109, i32* %render_height110, align 8, !tbaa !274 br label %cleanup118 if.else111: ; preds = %if.end100 %arrayidx113 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 2, i32 1 %24 = load i32, i32* %arrayidx113, align 4, !tbaa !51 %render_width114 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 22 store i32 %24, i32* %render_width114, align 4, !tbaa !273 %25 = load i32, i32* %19, align 4, !tbaa !118 %render_height116 = getelementptr inbounds %struct.Dav1dFrameHeader, %struct.Dav1dFrameHeader* %1, i32 0, i32 23 store i32 %25, i32* %render_height116, align 8, !tbaa !274 br label %cleanup118 cleanup118: ; preds = %if.then27, %if.else, %if.then2, %if.then104, %if.else111 %retval.2 = phi i32 [ 0, %if.else111 ], [ 0, %if.then104 ], [ 0, %if.then27 ], [ 0, %if.else ], [ -1, %if.then2 ] ret i32 %retval.2 for.inc.1: ; preds = %for.inc %call.2 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.2 = icmp eq i32 %call.2, 0 br i1 %tobool1.not.2, label %for.inc.2, label %if.then2 for.inc.2: ; preds = %for.inc.1 %call.3 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.3 = icmp eq i32 %call.3, 0 br i1 %tobool1.not.3, label %for.inc.3, label %if.then2 for.inc.3: ; preds = %for.inc.2 %call.4 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.4 = icmp eq i32 %call.4, 0 br i1 %tobool1.not.4, label %for.inc.4, label %if.then2 for.inc.4: ; preds = %for.inc.3 %call.5 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.5 = icmp eq i32 %call.5, 0 br i1 %tobool1.not.5, label %for.inc.5, label %if.then2 for.inc.5: ; preds = %for.inc.4 %call.6 = tail call arm_aapcs_vfpcc i32 @dav1d_get_bits(%struct.GetBits* %gb, i32 1) #7 %tobool1.not.6 = icmp eq i32 %call.6, 0 br i1 %tobool1.not.6, label %if.end48, label %if.then2 } declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_uniform(%struct.GetBits*, i32) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_sbits(%struct.GetBits*, i32) local_unnamed_addr #2 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #1 declare dso_local arm_aapcs_vfpcc i32 @dav1d_get_bits_subexp(%struct.GetBits*, i32, i32) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @AcquireSRWLockExclusive(%struct._RTL_SRWLOCK*) local_unnamed_addr #2 declare dllimport arm_aapcs_vfpcc i32 @SleepConditionVariableSRW(%struct._RTL_CONDITION_VARIABLE*, %struct._RTL_SRWLOCK*, i32, i32) local_unnamed_addr #2 declare dso_local arm_aapcs_vfpcc void @ReleaseSRWLockExclusive(%struct._RTL_SRWLOCK*) local_unnamed_addr #2 ; Function Attrs: nounwind willreturn declare void @llvm.assume(i1) #6 ; Function Attrs: argmemonly nounwind willreturn writeonly declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #3 attributes #0 = { nounwind "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"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+neon,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp" "unsafe-fp-math"="true" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } attributes #2 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+neon,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp" "unsafe-fp-math"="true" "use-soft-float"="false" } attributes #3 = { argmemonly nounwind willreturn writeonly } attributes #4 = { nofree nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+neon,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp" "unsafe-fp-math"="true" "use-soft-float"="false" } attributes #5 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+neon,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp" "unsafe-fp-math"="true" "use-soft-float"="false" } attributes #6 = { nounwind willreturn } attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} !0 = !{i32 1, !"wchar_size", i32 2} !1 = !{i32 1, !"min_enum_size", i32 4} !2 = !{!"clang version 12.0.0 (https://github.com/llvm/llvm-project 8d6aa688eeffea4b9151d1a208ed619ca50c823a)"} !3 = !{!4, !5, i64 0} !4 = !{!"Dav1dData", !5, i64 0, !8, i64 4, !5, i64 8, !9, i64 16} !5 = !{!"any pointer", !6, i64 0} !6 = !{!"omnipotent char", !7, i64 0} !7 = !{!"Simple C/C++ TBAA"} !8 = !{!"int", !6, i64 0} !9 = !{!"Dav1dDataProps", !10, i64 0, !10, i64 8, !10, i64 16, !8, i64 24, !11, i64 28} !10 = !{!"long long", !6, i64 0} !11 = !{!"Dav1dUserData", !5, i64 0, !5, i64 4} !12 = !{!4, !8, i64 4} !13 = !{!14, !8, i64 0} !14 = !{!"GetBits", !8, i64 0, !8, i64 4, !10, i64 8, !8, i64 16, !5, i64 20, !5, i64 24, !5, i64 28} !15 = !{!14, !5, i64 20} !16 = !{!14, !5, i64 24} !17 = !{!14, !8, i64 16} !18 = !{!19, !8, i64 31012} !19 = !{!"Dav1dContext", !5, i64 0, !8, i64 4, !5, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !5, i64 24, !5, i64 28, !5, i64 32, !5, i64 36, !5, i64 40, !5, i64 44, !5, i64 48, !5, i64 52, !5, i64 56, !5, i64 60, !4, i64 64, !20, i64 120, !22, i64 280, !6, i64 296, !6, i64 2024, !6, i64 2152, !23, i64 7168, !24, i64 30992, !8, i64 31004, !8, i64 31008, !8, i64 31012, !8, i64 31016, !8, i64 31020, !8, i64 31024, !25, i64 31028} !20 = !{!"Dav1dPicture", !5, i64 0, !5, i64 4, !6, i64 8, !6, i64 20, !21, i64 28, !9, i64 48, !5, i64 88, !5, i64 92, !5, i64 96, !6, i64 100, !5, i64 116, !5, i64 120, !5, i64 124, !5, i64 128, !5, i64 132, !6, i64 136, !5, i64 152, !5, i64 156} !21 = !{!"Dav1dPictureParameters", !8, i64 0, !8, i64 4, !6, i64 8, !8, i64 12} !22 = !{!"", !5, i64 0, !8, i64 4, !6, i64 8, !5, i64 12} !23 = !{!"", !6, i64 0, !6, i64 8, !6, i64 9868, !6, i64 12304, !6, i64 21520} !24 = !{!"Dav1dPicAllocator", !5, i64 0, !5, i64 4, !5, i64 8} !25 = !{!"Dav1dLogger", !5, i64 0, !5, i64 4} !26 = !{!5, !5, i64 0} !27 = !{!28, !5, i64 0} !28 = !{!"Dav1dRef", !5, i64 0, !5, i64 4, !6, i64 8, !5, i64 12, !5, i64 16} !29 = !{!30, !8, i64 0} !30 = !{!"Dav1dSequenceHeader", !8, i64 0, !8, i64 4, !8, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !8, i64 32, !8, i64 36, !8, i64 40, !6, i64 44, !8, i64 940, !8, i64 944, !8, i64 948, !8, i64 952, !8, i64 956, !8, i64 960, !8, i64 964, !8, i64 968, !8, i64 972, !8, i64 976, !8, i64 980, !8, i64 984, !8, i64 988, !8, i64 992, !8, i64 996, !8, i64 1000, !8, i64 1004, !8, i64 1008, !8, i64 1012, !8, i64 1016, !8, i64 1020, !8, i64 1024, !8, i64 1028, !8, i64 1032, !8, i64 1036, !8, i64 1040, !8, i64 1044, !8, i64 1048, !6, i64 1052, !6, i64 1056, !8, i64 1060, !8, i64 1064, !8, i64 1068, !8, i64 1072, !8, i64 1076, !8, i64 1080, !8, i64 1084, !8, i64 1088, !8, i64 1092, !8, i64 1096, !6, i64 1100} !31 = !{!30, !8, i64 940} !32 = !{!30, !8, i64 944} !33 = !{!30, !8, i64 948} !34 = !{!30, !8, i64 968} !35 = !{!30, !8, i64 988} !36 = !{!30, !8, i64 40} !37 = !{!38, !8, i64 12} !38 = !{!"Dav1dSequenceHeaderOperatingPoint", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24} !39 = !{!38, !8, i64 0} !40 = !{!38, !8, i64 4} !41 = !{!38, !8, i64 16} !42 = !{!38, !8, i64 20} !43 = !{!38, !8, i64 24} !44 = !{!30, !8, i64 952} !45 = !{!30, !8, i64 956} !46 = !{!30, !8, i64 960} !47 = !{!30, !8, i64 964} !48 = !{!30, !8, i64 972} !49 = !{!30, !8, i64 976} !50 = !{!30, !8, i64 980} !51 = !{!8, !8, i64 0} !52 = !{!19, !8, i64 31008} !53 = !{!54, !8, i64 0} !54 = !{!"Dav1dSequenceHeaderOperatingParameterInfo", !8, i64 0, !8, i64 4, !8, i64 8} !55 = !{!54, !8, i64 4} !56 = !{!54, !8, i64 8} !57 = !{!38, !8, i64 8} !58 = !{!30, !8, i64 992} !59 = !{!30, !8, i64 996} !60 = !{!30, !8, i64 4} !61 = !{!30, !8, i64 8} !62 = !{!30, !8, i64 1000} !63 = !{!30, !8, i64 1004} !64 = !{!30, !8, i64 1012} !65 = !{!30, !8, i64 1016} !66 = !{!30, !8, i64 1020} !67 = !{!30, !8, i64 1060} !68 = !{!30, !6, i64 1052} !69 = !{!30, !8, i64 1024} !70 = !{!30, !8, i64 1028} !71 = !{!30, !8, i64 1032} !72 = !{!30, !8, i64 1036} !73 = !{!30, !8, i64 1040} !74 = !{!30, !8, i64 1044} !75 = !{!30, !6, i64 1056} !76 = !{!6, !6, i64 0} !77 = !{!30, !8, i64 1064} !78 = !{!30, !8, i64 1068} !79 = !{!30, !8, i64 1072} !80 = !{!30, !8, i64 32} !81 = !{!30, !8, i64 1084} !82 = !{!30, !8, i64 1088} !83 = !{!30, !6, i64 16} !84 = !{!30, !6, i64 20} !85 = !{!30, !8, i64 36} !86 = !{!30, !6, i64 12} !87 = !{!30, !8, i64 1080} !88 = !{!30, !8, i64 1076} !89 = !{!30, !6, i64 28} !90 = !{!30, !8, i64 1092} !91 = !{!30, !8, i64 1096} !92 = !{!19, !5, i64 28} !93 = !{!19, !5, i64 36} !94 = !{!19, !5, i64 52} !95 = !{!19, !5, i64 44} !96 = !{!19, !5, i64 24} !97 = !{!19, !5, i64 32} !98 = !{!99, !8, i64 252} !99 = !{!"Dav1dFrameHeader", !100, i64 0, !6, i64 232, !6, i64 236, !8, i64 244, !8, i64 248, !8, i64 252, !8, i64 256, !8, i64 260, !8, i64 264, !8, i64 268, !8, i64 272, !8, i64 276, !8, i64 280, !8, i64 284, !8, i64 288, !8, i64 292, !8, i64 296, !8, i64 300, !8, i64 304, !8, i64 308, !6, i64 312, !8, i64 440, !8, i64 444, !8, i64 448, !102, i64 452, !8, i64 460, !8, i64 464, !8, i64 468, !6, i64 472, !8, i64 500, !6, i64 504, !8, i64 508, !8, i64 512, !8, i64 516, !103, i64 520, !104, i64 824, !105, i64 864, !107, i64 1208, !8, i64 1228, !109, i64 1232, !111, i64 1300, !112, i64 1372, !6, i64 1392, !8, i64 1396, !8, i64 1400, !8, i64 1404, !6, i64 1408, !8, i64 1416, !8, i64 1420, !6, i64 1424} !100 = !{!"", !101, i64 0, !8, i64 224, !8, i64 228} !101 = !{!"Dav1dFilmGrainData", !8, i64 0, !8, i64 4, !6, i64 8, !8, i64 36, !6, i64 40, !6, i64 48, !8, i64 88, !8, i64 92, !6, i64 96, !6, i64 120, !10, i64 176, !8, i64 184, !6, i64 188, !6, i64 196, !6, i64 204, !8, i64 212, !8, i64 216} !102 = !{!"", !8, i64 0, !8, i64 4} !103 = !{!"", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24, !8, i64 28, !8, i64 32, !8, i64 36, !6, i64 40, !6, i64 170, !8, i64 300} !104 = !{!"", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24, !8, i64 28, !8, i64 32, !8, i64 36} !105 = !{!"", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !106, i64 16, !6, i64 280, !6, i64 312} !106 = !{!"Dav1dSegmentationDataSet", !6, i64 0, !8, i64 256, !8, i64 260} !107 = !{!"", !102, i64 0, !108, i64 8} !108 = !{!"", !8, i64 0, !8, i64 4, !8, i64 8} !109 = !{!"", !6, i64 0, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !110, i64 24, !8, i64 64} !110 = !{!"Dav1dLoopfilterModeRefDeltas", !6, i64 0, !6, i64 8} !111 = !{!"", !8, i64 0, !8, i64 4, !6, i64 8, !6, i64 40} !112 = !{!"", !6, i64 0, !6, i64 12} !113 = !{!99, !8, i64 256} !114 = !{!19, !8, i64 16} !115 = !{!19, !8, i64 20} !116 = !{!19, !5, i64 8} !117 = !{!19, !8, i64 31020} !118 = !{!99, !8, i64 244} !119 = !{!99, !8, i64 260} !120 = !{!19, !8, i64 12} !121 = !{!99, !8, i64 540} !122 = !{!99, !8, i64 556} !123 = !{!99, !8, i64 536} !124 = !{!99, !8, i64 552} !125 = !{!126, !8, i64 56} !126 = !{!"Dav1dTileGroup", !4, i64 0, !8, i64 56, !8, i64 60} !127 = !{!126, !8, i64 60} !128 = !{!126, !5, i64 0} !129 = !{!126, !8, i64 4} !130 = !{!131, !8, i64 0} !131 = !{!"Dav1dContentLightLevel", !8, i64 0, !8, i64 4} !132 = !{!131, !8, i64 4} !133 = !{!19, !5, i64 40} !134 = !{!135, !135, i64 0} !135 = !{!"short", !6, i64 0} !136 = !{!137, !8, i64 16} !137 = !{!"Dav1dMasteringDisplay", !6, i64 0, !6, i64 12, !8, i64 16, !8, i64 20} !138 = !{!137, !8, i64 20} !139 = !{!19, !5, i64 48} !140 = !{!141, !5, i64 8} !141 = !{!"Dav1dITUTT35", !6, i64 0, !6, i64 1, !8, i64 4, !5, i64 8} !142 = !{!141, !6, i64 0} !143 = !{!141, !6, i64 1} !144 = !{!141, !8, i64 4} !145 = !{!19, !5, i64 60} !146 = !{!19, !5, i64 56} !147 = !{!99, !8, i64 264} !148 = !{!19, !8, i64 4} !149 = !{!19, !8, i64 284} !150 = !{!19, !5, i64 0} !151 = !{!152, !8, i64 1936} !152 = !{!"Dav1dFrameContext", !5, i64 0, !5, i64 4, !5, i64 8, !5, i64 12, !6, i64 16, !20, i64 1248, !153, i64 1408, !5, i64 1584, !5, i64 1588, !6, i64 1592, !6, i64 1620, !5, i64 1648, !5, i64 1652, !5, i64 1656, !5, i64 1660, !6, i64 1664, !6, i64 1692, !6, i64 1888, !154, i64 1896, !154, i64 1912, !5, i64 1928, !8, i64 1932, !8, i64 1936, !6, i64 1940, !6, i64 2052, !6, i64 2060, !5, i64 2068, !5, i64 2072, !8, i64 2076, !5, i64 2080, !8, i64 2084, !5, i64 2088, !155, i64 2092, !8, i64 2112, !6, i64 2116, !8, i64 2128, !8, i64 2132, !8, i64 2136, !8, i64 2140, !8, i64 2144, !8, i64 2148, !8, i64 2152, !8, i64 2156, !8, i64 2160, !8, i64 2164, !8, i64 2168, !6, i64 2172, !6, i64 2268, !5, i64 2724, !8, i64 2728, !156, i64 2732, !6, i64 2916, !8, i64 2968, !157, i64 2972, !162, i64 3040, !164, i64 3840} !153 = !{!"Dav1dThreadPicture", !20, i64 0, !8, i64 160, !5, i64 164, !5, i64 168} !154 = !{!"CdfThreadContext", !5, i64 0, !6, i64 4, !5, i64 8, !5, i64 12} !155 = !{!"", !5, i64 0, !5, i64 4, !5, i64 8, !5, i64 12, !5, i64 16} !156 = !{!"refmvs_frame", !5, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24, !6, i64 28, !6, i64 35, !6, i64 42, !6, i64 49, !6, i64 52, !6, i64 64, !8, i64 148, !5, i64 152, !5, i64 156, !5, i64 160, !8, i64 164, !5, i64 168, !8, i64 172, !8, i64 176, !8, i64 180} !157 = !{!"", !158, i64 0, !8, i64 24, !8, i64 28, !5, i64 32, !5, i64 36, !5, i64 40, !5, i64 44, !5, i64 48, !8, i64 52, !8, i64 56, !8, i64 60, !5, i64 64} !158 = !{!"thread_data", !159, i64 0, !160, i64 12, !161, i64 16, !8, i64 20} !159 = !{!"", !5, i64 0, !5, i64 4, !5, i64 8} !160 = !{!"_RTL_CONDITION_VARIABLE", !5, i64 0} !161 = !{!"_RTL_SRWLOCK", !5, i64 0} !162 = !{!"", !5, i64 0, !5, i64 4, !5, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !6, i64 24, !8, i64 32, !8, i64 36, !163, i64 48, !8, i64 192, !6, i64 196, !6, i64 708, !5, i64 716, !6, i64 720, !6, i64 744, !8, i64 756, !6, i64 760, !6, i64 772, !5, i64 784, !5, i64 788, !8, i64 792} !163 = !{!"Av1FilterLUT", !6, i64 0, !6, i64 64, !6, i64 128} !164 = !{!"FrameTileThreadData", !10, i64 0, !161, i64 8, !160, i64 12, !160, i64 16, !8, i64 20, !8, i64 24, !5, i64 28, !8, i64 32, !6, i64 36, !6, i64 44, !8, i64 176} !165 = !{!19, !5, i64 280} !166 = !{!153, !5, i64 168} !167 = !{!153, !8, i64 160} !168 = !{!169, !5, i64 4} !169 = !{!"", !153, i64 0, !5, i64 176, !5, i64 180, !6, i64 184} !170 = !{!99, !6, i64 232} !171 = !{!169, !5, i64 176} !172 = !{!30, !8, i64 984} !173 = !{!99, !8, i64 272} !174 = !{!30, !8, i64 1008} !175 = !{!99, !8, i64 268} !176 = !{!99, !8, i64 276} !177 = !{!99, !8, i64 280} !178 = !{!99, !8, i64 284} !179 = !{!99, !8, i64 288} !180 = !{!99, !8, i64 292} !181 = !{!99, !8, i64 296} !182 = !{!99, !8, i64 300} !183 = !{!99, !8, i64 248} !184 = !{!99, !8, i64 304} !185 = !{!99, !8, i64 308} !186 = !{!187, !8, i64 0} !187 = !{!"Dav1dFrameHeaderOperatingPoint", !8, i64 0} !188 = !{!99, !8, i64 440} !189 = !{!99, !8, i64 456} !190 = !{!99, !8, i64 464} !191 = !{!99, !8, i64 468} !192 = !{!99, !8, i64 500} !193 = !{!99, !6, i64 504} !194 = !{!99, !8, i64 508} !195 = !{!30, !8, i64 1048} !196 = !{!99, !8, i64 512} !197 = !{!99, !8, i64 516} !198 = !{!99, !8, i64 520} !199 = !{!99, !8, i64 528} !200 = !{!99, !8, i64 532} !201 = !{!99, !8, i64 548} !202 = distinct !{!202, !203} !203 = !{!"llvm.loop.isvectorized", i32 1} !204 = !{!99, !8, i64 544} !205 = distinct !{!205, !206, !203} !206 = !{!"llvm.loop.unroll.runtime.disable"} !207 = distinct !{!207, !203} !208 = distinct !{!208, !206, !203} !209 = !{!99, !8, i64 820} !210 = !{!99, !8, i64 524} !211 = !{!99, !8, i64 824} !212 = !{!99, !8, i64 828} !213 = !{!99, !8, i64 832} !214 = !{!99, !8, i64 836} !215 = !{!99, !8, i64 840} !216 = !{!99, !8, i64 844} !217 = !{!99, !8, i64 848} !218 = !{!99, !8, i64 852} !219 = !{!99, !8, i64 856} !220 = !{!99, !8, i64 860} !221 = !{!99, !8, i64 864} !222 = !{!99, !8, i64 868} !223 = !{!99, !8, i64 872} !224 = !{!99, !8, i64 876} !225 = !{!99, !8, i64 1136} !226 = !{!99, !8, i64 1140} !227 = !{!228, !8, i64 24} !228 = !{!"Dav1dSegmentationData", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24, !8, i64 28} !229 = !{!228, !8, i64 28} !230 = !{i64 0, i64 256, !76, i64 256, i64 4, !51, i64 260, i64 4, !51} !231 = !{!228, !8, i64 20} !232 = !{!99, !8, i64 1208} !233 = !{!99, !8, i64 1212} !234 = !{!99, !8, i64 1216} !235 = !{!99, !8, i64 1220} !236 = !{!99, !8, i64 1224} !237 = !{!99, !8, i64 1228} !238 = !{!228, !8, i64 0} !239 = !{!99, !8, i64 1296} !240 = !{!99, !8, i64 1248} !241 = !{!99, !8, i64 1252} !242 = !{i64 0, i64 8, !76, i64 8, i64 32, !76} !243 = !{!99, !8, i64 1240} !244 = !{!99, !8, i64 1244} !245 = !{!99, !8, i64 1300} !246 = !{!99, !8, i64 1304} !247 = !{!99, !6, i64 1392} !248 = !{!99, !8, i64 1396} !249 = !{!99, !8, i64 1400} !250 = !{!99, !8, i64 1404} !251 = !{!99, !8, i64 1416} !252 = !{!99, !8, i64 1420} !253 = !{i64 0, i64 4, !76, i64 4, i64 24, !76, i64 28, i64 2, !134, i64 30, i64 2, !134, i64 32, i64 2, !134, i64 34, i64 2, !134, i64 28, i64 8, !76} !254 = !{!255, !6, i64 0} !255 = !{!"Dav1dWarpedMotionParams", !6, i64 0, !6, i64 4, !6, i64 28} !256 = !{!99, !8, i64 224} !257 = !{!99, !8, i64 228} !258 = !{i64 0, i64 4, !51, i64 4, i64 4, !51, i64 8, i64 28, !76, i64 36, i64 4, !51, i64 40, i64 8, !76, i64 48, i64 40, !76, i64 88, i64 4, !51, i64 92, i64 4, !51, i64 96, i64 24, !76, i64 120, i64 56, !76, i64 176, i64 8, !259, i64 184, i64 4, !51, i64 188, i64 8, !76, i64 196, i64 8, !76, i64 204, i64 8, !76, i64 212, i64 4, !51, i64 216, i64 4, !51} !259 = !{!10, !10, i64 0} !260 = !{!99, !8, i64 0} !261 = !{!101, !8, i64 0} !262 = !{!101, !8, i64 4} !263 = !{!101, !8, i64 36} !264 = !{!101, !8, i64 88} !265 = !{!101, !8, i64 92} !266 = !{!101, !8, i64 212} !267 = !{!101, !8, i64 216} !268 = !{!101, !10, i64 176} !269 = !{!101, !8, i64 184} !270 = !{!153, !8, i64 28} !271 = !{!153, !8, i64 32} !272 = !{!153, !5, i64 4} !273 = !{!99, !8, i64 444} !274 = !{!99, !8, i64 448} !275 = !{!99, !8, i64 452} !276 = !{!99, !8, i64 460}