Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc < %s
      2 target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128"
      3 target triple = "powerpc-apple-darwin9"
      4 	%struct.BiPartSrcDescriptor = type <{ %"struct.BiPartSrcDescriptor::$_105" }>
      5 	%"struct.BiPartSrcDescriptor::$_105" = type { %struct.BiPartSrcDescriptor_NO_VECTOR_ALIGNMENT_size_is_16 }
      6 	%struct.BiPartSrcDescriptor_NO_VECTOR_ALIGNMENT_size_is_16 = type { [2 x %struct.MotionVectors], [2 x i8], %struct.Map4x4ToPartIdx, [2 x i8], i8, i8 }
      7 	%struct.Condv = type opaque
      8 	%struct.DHBFLayerId = type { i8 }
      9 	%struct.DecodeComplexityInfo = type { i32, i32, i32, i32, %"struct.DecodeComplexityInfo::IntraStats", %"struct.DecodeComplexityInfo::InterStats" }
     10 	%"struct.DecodeComplexityInfo::InterStats" = type { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, %struct.MotionVectors, %struct.MotionVectors }
     11 	%"struct.DecodeComplexityInfo::IntraStats" = type { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }
     12 	%struct.DecodeComplexityOptions = type { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }
     13 	%struct.DescriptorAllocator = type { %struct.Mutex*, %struct.Mutex*, i8**, i32, i32, i8**, i32, i32, i8**, i32, i32 }
     14 	%struct.DetailsFromSliceType = type <{ i8 }>
     15 	%struct.FlatnessAnalysis = type { i16, i16, i32, i32*, i8*, [512 x i32], [256 x i32] }
     16 	%struct.Frame = type <{ i8, i8, i8, i8, i8, [3 x i8], i32, i32, %struct.Mutex*, %struct.Condv*, [8 x i8], %struct.FramePixels, %struct.FrameMotionVectorCache, %struct.FrameIndex, i32, i8*, i8*, i8*, i8*, i16*, %struct.FlatnessAnalysis, %struct.NoiseAnalysis, %struct.VisualActivity, %struct.FrameMotionInfo, %struct.FrameMotionAnalysis, %struct.FrameDataRateParameters, %struct.FrameEncoderTags, %struct.DecodeComplexityInfo, %struct.DecodeComplexityOptions, %struct.MotionInfoFor16x16_FasterSP*, [1 x i32] }>
     17 	%struct.FrameDataRateParameters = type { i32, float, i8, i8 }
     18 	%struct.FrameEncoderTags = type { i8, i8, i32, i8, i8, float }
     19 	%struct.FrameIndex = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i32, i32, %struct.Frame*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %struct.DHBFLayerId }
     20 	%struct.FrameMotionAnalysis = type { i32, i32, i32, %struct.MoEstMotion16x16*, %struct.MbAnalysis*, i32, i32, i16, i16, i32, i32, i32, i32, i8, i8 }
     21 	%struct.FrameMotionInfo = type { i32, i32, %struct.MoEstMbMotionInfo*, i32, i32, i32, i32, i32 }
     22 	%struct.FrameMotionVectorCache = type <{ %struct.ThreadAllocator**, i32, i32, i32, %struct.BiPartSrcDescriptor, %struct.BiPartSrcDescriptor, %struct.BiPartSrcDescriptor, [3 x %struct.BiPartSrcDescriptor*], %struct.BiPartSrcDescriptor** }>
     23 	%struct.FramePixels = type <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], %struct.PixelData, %struct.InterpolationCache*, %struct.InterpolationCache*, %struct.InterpolationCache*, [16 x i16], [16 x i16], [12 x i8], %"struct.PortableSInt32Array<4>", %"struct.PortableSInt32Array<8>", %struct.ICOffsetArraysY, %struct.UVSrcOffsetEtcX_Struct*, i32*, i32*, [3 x i32] }>
     24 	%struct.ICOffsetArraysY = type { [21 x i32], [21 x i32], [4 x [21 x i32]] }
     25 	%struct.InterpolationCache = type opaque
     26 	%struct.LoopFilterInfo = type { %struct.BiPartSrcDescriptor**, i32, i32, i32, i32, i32*, i32, %"struct.LoopFilterInfo::SliceInfoStruct"*, i32, %struct.Mutex*, i16*, %struct.FramePixels*, i8*, i8*, i8*, i8*, i8*, %struct.PerMacroblockBoundaryStrengths*, %struct.Mutex*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8*, i8*, i8, void (i8*, i8*, i32, i32, i32, i32, i32, i8*, i32)*, void (i8*, i8*, i32, i32, i32, i32, i32, i8*, i32, i8*)*, i32 }
     27 	%"struct.LoopFilterInfo::SliceInfoStruct" = type { %"struct.LoopFilterInfo::SliceInfoStruct::LFDisableStats", i8, i8, i8, i8, [17 x %struct.Frame*], [17 x %struct.Frame*] }
     28 	%"struct.LoopFilterInfo::SliceInfoStruct::LFDisableStats" = type { i32, i32 }
     29 	%struct.LoopFilterParam = type { i32, %struct.LoopFilterInfo*, %struct.FramePixels*, %struct.FrameMotionVectorCache* }
     30 	%struct.Map4x4ToPartIdx = type { i16 }
     31 	%struct.MbAnalysis = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %struct.RdCost, %struct.RdCost, i32 }
     32 	%struct.MoEstMbMotionInfo = type { i32, i32, i32, i32, [16 x %struct.MoEstPartMotionInfo] }
     33 	%struct.MoEstMotion16x16 = type { [2 x i8], [2 x %struct.MotionVectors], i8, [3 x %struct.MoEstPredCost] }
     34 	%struct.MoEstPartMotionInfo = type { i32, %struct.PartGeom, i32, i32, [2 x %struct.MotionVectors], [2 x i8], i16 }
     35 	%struct.MoEstPredCost = type { i32, i16, i16 }
     36 	%struct.MotionInfoFor16x16_FasterSP = type { [2 x %struct.MotionVectors], [2 x i8], i8, [2 x i32], i32, i32 }
     37 	%struct.MotionVectors = type { %"struct.MotionVectors::$_103" }
     38 	%"struct.MotionVectors::$_103" = type { i32 }
     39 	%struct.Mutex = type opaque
     40 	%struct.NoiseAnalysis = type { i16, i16, i32, i8*, i8*, i8*, [512 x i32] }
     41 	%struct.PartGeom = type { %struct.Map4x4ToPartIdx }
     42 	%struct.PerMacroblockBoundaryStrengths = type { [16 x i8], [16 x i8], [4 x i8], [4 x i8], [2 x i32] }
     43 	%struct.PixelData = type { i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }
     44 	%"struct.PortableSInt32Array<4>" = type { [4 x i32] }
     45 	%"struct.PortableSInt32Array<8>" = type { [8 x i32] }
     46 	%struct.RdCost = type { i32, i32, i32, double }
     47 	%struct.ThreadAllocator = type { %struct.DescriptorAllocator*, %struct.BiPartSrcDescriptor*, [256 x %struct.BiPartSrcDescriptor*], i32, i32, i32 }
     48 	%struct.ThreadedBatch = type opaque
     49 	%struct.UVSrcOffsetEtcX_Struct = type <{ i16 }>
     50 	%struct.VisualActivity = type { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, [2 x i32], i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }
     51 @_ZL33table_8_14_indexA_to_alpha_scalar = external constant [64 x i8]		; <[64 x i8]*> [#uses=0]
     52 @_ZL32table_8_14_indexB_to_beta_scalar = external constant [64 x i8]		; <[64 x i8]*> [#uses=0]
     53 @_ZL34table_8_15_indexA_bS_to_tc0_scalar = external constant [64 x [4 x i8]]		; <[64 x [4 x i8]]*> [#uses=0]
     54 @gkDummy = external global i32		; <i32*> [#uses=0]
     55 @gkDetailsFromSliceTypeArray = external constant [10 x %struct.DetailsFromSliceType]		; <[10 x %struct.DetailsFromSliceType]*> [#uses=0]
     56 
     57 declare i32 @_Z20LoopFilter_ConstructP14LoopFilterInfojj(%struct.LoopFilterInfo*, i32, i32)
     58 
     59 declare i32 @_Z25LF_Threading2_assert_doneP14LoopFilterInfo(%struct.LoopFilterInfo*) nounwind 
     60 
     61 declare i32 @_Z54S_CalcIfLargeMVDeltaForBMbBothPredictionsFromSameFramePK19BiPartSrcDescriptorS1_ijj(%struct.BiPartSrcDescriptor*, %struct.BiPartSrcDescriptor*, i32, i32, i32) nounwind 
     62 
     63 declare void @_Z30LoopFilter_Internal_FilterLumaPhiiiiii(i8*, i32, i32, i32, i32, i32, i32) nounwind 
     64 
     65 declare void @_Z33LoopFilter_Internal_FilterChromaVPhiiiiiiiiii(i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) nounwind 
     66 
     67 declare void @_Z33LoopFilter_Internal_FilterChromaHPhiiiiii(i8*, i32, i32, i32, i32, i32, i32) nounwind 
     68 
     69 declare void @_Z42LoopFilter_Internal_filter_macroblock_lumaPK14LoopFilterInfoPhS2_iiiPK30PerMacroblockBoundaryStrengthsjj(%struct.LoopFilterInfo*, i8*, i8*, i32, i32, i32, %struct.PerMacroblockBoundaryStrengths*, i32, i32) nounwind 
     70 
     71 declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) nounwind 
     72 
     73 declare i32 @_Z40LoopFilter_Internal_FilterLumaPlaneMBAFFPK14LoopFilterInfojjj(%struct.LoopFilterInfo*, i32, i32, i32) nounwind 
     74 
     75 declare void @_Z18LoopFilter_DestroyP14LoopFilterInfo(%struct.LoopFilterInfo*)
     76 
     77 declare void @MutexDispose(%struct.Mutex*)
     78 
     79 declare void @_ZdaPv(i8*) nounwind 
     80 
     81 declare void @jvtDisposePTRVectorAligned(i8*)
     82 
     83 declare void @jvtDisposePTR(i8*)
     84 
     85 declare void @jvtDisposePTRMemAligned(i8*)
     86 
     87 declare void @_Z31LoopFilter_Internal_ResetTablesP14LoopFilterInfo(%struct.LoopFilterInfo*) nounwind 
     88 
     89 declare void @llvm.memset.i32(i8*, i8, i32, i32) nounwind 
     90 
     91 define i32 @_Z60LoopFilter_Internal_CalculateBoundaryStrengths_MbaffFramePicPK14LoopFilterInfoP22FrameMotionVectorCachejj(%struct.LoopFilterInfo* %lfiPtr, %struct.FrameMotionVectorCache* %frameMotionVectorCachePtr, i32 %mbY_min, i32 %mbY_maxPlus1) nounwind  {
     92 entry:
     93 	icmp ult i32 %mbY_min, %mbY_maxPlus1		; <i1>:0 [#uses=1]
     94 	br i1 %0, label %bb16, label %bb642
     95 
     96 bb16:		; preds = %entry
     97 	bitcast %struct.PerMacroblockBoundaryStrengths* null to i32*		; <i32*>:1 [#uses=3]
     98 	getelementptr i32* %1, i32 1		; <i32*>:2 [#uses=0]
     99 	getelementptr i32* %1, i32 2		; <i32*>:3 [#uses=0]
    100 	getelementptr i32* %1, i32 3		; <i32*>:4 [#uses=0]
    101 	bitcast [16 x i8]* null to i32*		; <i32*>:5 [#uses=3]
    102 	getelementptr i32* %5, i32 1		; <i32*>:6 [#uses=0]
    103 	getelementptr i32* %5, i32 2		; <i32*>:7 [#uses=0]
    104 	getelementptr i32* %5, i32 3		; <i32*>:8 [#uses=0]
    105 	icmp eq i32 0, 0		; <i1>:9 [#uses=0]
    106 	lshr i32 0, 30		; <i32>:10 [#uses=0]
    107 	and i32 0, 268435455		; <i32>:11 [#uses=0]
    108 	lshr i32 0, 28		; <i32>:12 [#uses=1]
    109 	and i32 %12, 3		; <i32>:13 [#uses=0]
    110 	and i32 0, 1		; <i32>:14 [#uses=1]
    111 	icmp eq i32 %14, 0		; <i1>:15 [#uses=0]
    112 	zext i8 0 to i32		; <i32>:16 [#uses=1]
    113 	%.not656 = icmp ne i32 0, 0		; <i1> [#uses=1]
    114 	icmp eq i8 0, 0		; <i1>:17 [#uses=0]
    115 	trunc i32 0 to i8		; <i8>:18 [#uses=2]
    116 	add i32 0, 1		; <i32>:19 [#uses=1]
    117 	%.not658 = icmp ne i32 0, 0		; <i1> [#uses=1]
    118 	and i32 0, 268369920		; <i32>:20 [#uses=1]
    119 	icmp eq i32 %20, 268369920		; <i1>:21 [#uses=2]
    120 	getelementptr %struct.PerMacroblockBoundaryStrengths* null, i32 0, i32 2		; <[4 x i8]*>:22 [#uses=1]
    121 	getelementptr %struct.PerMacroblockBoundaryStrengths* null, i32 0, i32 2, i32 0		; <i8*>:23 [#uses=0]
    122 	and i32 0, -2		; <i32>:24 [#uses=1]
    123 	add i32 %24, -1		; <i32>:25 [#uses=0]
    124 	bitcast [4 x i8]* %22 to i32*		; <i32*>:26 [#uses=3]
    125 	getelementptr i32* %26, i32 1		; <i32*>:27 [#uses=0]
    126 	getelementptr i32* %26, i32 2		; <i32*>:28 [#uses=0]
    127 	getelementptr i32* %26, i32 3		; <i32*>:29 [#uses=0]
    128 	br label %bb144
    129 
    130 bb144:		; preds = %bb395, %bb16
    131 	%idxEachField11.0773 = phi i32 [ 0, %bb16 ], [ %162, %bb395 ]		; <i32> [#uses=3]
    132 	%mbYLeft.2776 = phi i32 [ 0, %bb16 ], [ %mbYLeft.2776, %bb395 ]		; <i32> [#uses=3]
    133 	%mbXYLeft.2775 = phi i32 [ 0, %bb16 ], [ %mbXYLeft.2775, %bb395 ]		; <i32> [#uses=1]
    134 	%mixedModeLeftEdgeOfMbFlag.2774 = phi i32 [ 0, %bb16 ], [ 0, %bb395 ]		; <i32> [#uses=0]
    135 	%mbIndexLeft.2772 = phi i32 [ 0, %bb16 ], [ %mbIndexLeft.2772, %bb395 ]		; <i32> [#uses=2]
    136 	%boundaryStrengthsV.1771 = phi i8* [ null, %bb16 ], [ %158, %bb395 ]		; <i8*> [#uses=2]
    137 	%numEdgesToTest.1770 = phi i32 [ 4, %bb16 ], [ %numEdgesToTest.2, %bb395 ]		; <i32> [#uses=1]
    138 	icmp eq i32 %idxEachField11.0773, 0		; <i1>:30 [#uses=0]
    139 	getelementptr %struct.BiPartSrcDescriptor** null, i32 %mbIndexLeft.2772		; <%struct.BiPartSrcDescriptor**>:31 [#uses=1]
    140 	load %struct.BiPartSrcDescriptor** %31, align 4		; <%struct.BiPartSrcDescriptor*>:32 [#uses=0]
    141 	%fMacroblockHasNonZeroBS.4 = select i1 %21, i32 1, i32 0		; <i32> [#uses=1]
    142 	%numEdgesToTest.2 = select i1 %21, i32 1, i32 %numEdgesToTest.1770		; <i32> [#uses=2]
    143 	store i8 32, i8* %boundaryStrengthsV.1771, align 1
    144 	br label %labelContinueEdgesLoopV
    145 
    146 bb200:		; preds = %labelContinueEdgesLoopV
    147 	lshr i32 %159, 28		; <i32>:33 [#uses=2]
    148 	and i32 %160, %16		; <i32>:34 [#uses=1]
    149 	icmp eq i32 %34, 0		; <i1>:35 [#uses=0]
    150 	icmp eq i32 %160, 0		; <i1>:36 [#uses=3]
    151 	zext i1 %36 to i32		; <i32>:37 [#uses=1]
    152 	or i32 %37, -1		; <i32>:38 [#uses=1]
    153 	or i32 %38, %33		; <i32>:39 [#uses=1]
    154 	icmp eq i32 %39, 0		; <i1>:40 [#uses=1]
    155 	br i1 %40, label %bb205, label %bb206
    156 
    157 bb205:		; preds = %bb200
    158 	store i8 32, i8* %158, align 1
    159 	br label %labelContinueEdgesLoopV
    160 
    161 bb206:		; preds = %bb200
    162 	icmp eq i32 %33, 15		; <i1>:41 [#uses=1]
    163 	br i1 %41, label %labelContinueEdgesLoopV, label %bb210.preheader
    164 
    165 bb210.preheader:		; preds = %bb206
    166 	add i32 %160, 0		; <i32>:42 [#uses=2]
    167 	%bothcond657 = and i1 %36, %.not656		; <i1> [#uses=0]
    168 	shl i32 %idxEachField11.0773, 1		; <i32>:43 [#uses=1]
    169 	add i32 %43, 0		; <i32>:44 [#uses=0]
    170 	shl i32 %mbYLeft.2776, 2		; <i32>:45 [#uses=0]
    171 	add i32 %42, -1		; <i32>:46 [#uses=1]
    172 	icmp eq i32 0, 0		; <i1>:47 [#uses=1]
    173 	%brmerge689.not = and i1 %47, false		; <i1> [#uses=0]
    174 	%bothcond659 = and i1 %36, %.not658		; <i1> [#uses=0]
    175 	shl i32 %mbYLeft.2776, 1		; <i32>:48 [#uses=1]
    176 	or i32 %48, 0		; <i32>:49 [#uses=1]
    177 	shl i32 %49, 1		; <i32>:50 [#uses=0]
    178 	add i32 0, 0		; <i32>:51 [#uses=2]
    179 	mul i32 %51, 0		; <i32>:52 [#uses=1]
    180 	add i32 %52, %42		; <i32>:53 [#uses=1]
    181 	mul i32 %51, 0		; <i32>:54 [#uses=1]
    182 	add i32 %46, %54		; <i32>:55 [#uses=1]
    183 	getelementptr %struct.BiPartSrcDescriptor** null, i32 %53		; <%struct.BiPartSrcDescriptor**>:56 [#uses=1]
    184 	load %struct.BiPartSrcDescriptor** %56, align 4		; <%struct.BiPartSrcDescriptor*>:57 [#uses=7]
    185 	getelementptr %struct.BiPartSrcDescriptor** null, i32 %55		; <%struct.BiPartSrcDescriptor**>:58 [#uses=1]
    186 	load %struct.BiPartSrcDescriptor** %58, align 4		; <%struct.BiPartSrcDescriptor*>:59 [#uses=5]
    187 	icmp slt i32 %159, 0		; <i1>:60 [#uses=0]
    188 	icmp eq %struct.BiPartSrcDescriptor* %57, %59		; <i1>:61 [#uses=0]
    189 	bitcast %struct.BiPartSrcDescriptor* %57 to i16*		; <i16*>:62 [#uses=5]
    190 	load i16* %62, align 2		; <i16>:63 [#uses=2]
    191 	getelementptr i16* %62, i32 1		; <i16*>:64 [#uses=1]
    192 	load i16* %64, align 2		; <i16>:65 [#uses=2]
    193 	getelementptr i16* %62, i32 2		; <i16*>:66 [#uses=1]
    194 	load i16* %66, align 2		; <i16>:67 [#uses=2]
    195 	getelementptr i16* %62, i32 3		; <i16*>:68 [#uses=1]
    196 	load i16* %68, align 2		; <i16>:69 [#uses=2]
    197 	getelementptr i16* %62, i32 6		; <i16*>:70 [#uses=1]
    198 	load i16* %70, align 2		; <i16>:71 [#uses=2]
    199 	bitcast %struct.BiPartSrcDescriptor* %59 to i16*		; <i16*>:72 [#uses=5]
    200 	load i16* %72, align 2		; <i16>:73 [#uses=2]
    201 	getelementptr i16* %72, i32 1		; <i16*>:74 [#uses=1]
    202 	load i16* %74, align 2		; <i16>:75 [#uses=2]
    203 	getelementptr i16* %72, i32 2		; <i16*>:76 [#uses=1]
    204 	load i16* %76, align 2		; <i16>:77 [#uses=2]
    205 	getelementptr i16* %72, i32 3		; <i16*>:78 [#uses=1]
    206 	load i16* %78, align 2		; <i16>:79 [#uses=2]
    207 	getelementptr i16* %72, i32 6		; <i16*>:80 [#uses=1]
    208 	load i16* %80, align 2		; <i16>:81 [#uses=2]
    209 	sub i16 %63, %73		; <i16>:82 [#uses=3]
    210 	sub i16 %65, %75		; <i16>:83 [#uses=3]
    211 	sub i16 %67, %77		; <i16>:84 [#uses=3]
    212 	sub i16 %69, %79		; <i16>:85 [#uses=3]
    213 	sub i16 %71, %81		; <i16>:86 [#uses=3]
    214 	sub i16 0, %82		; <i16>:87 [#uses=1]
    215 	icmp slt i16 %82, 0		; <i1>:88 [#uses=1]
    216 	%. = select i1 %88, i16 %87, i16 %82		; <i16> [#uses=1]
    217 	sub i16 0, %83		; <i16>:89 [#uses=1]
    218 	icmp slt i16 %83, 0		; <i1>:90 [#uses=1]
    219 	%.660 = select i1 %90, i16 %89, i16 %83		; <i16> [#uses=1]
    220 	sub i16 0, %84		; <i16>:91 [#uses=1]
    221 	icmp slt i16 %84, 0		; <i1>:92 [#uses=1]
    222 	%.661 = select i1 %92, i16 %91, i16 %84		; <i16> [#uses=1]
    223 	sub i16 0, %85		; <i16>:93 [#uses=1]
    224 	icmp slt i16 %85, 0		; <i1>:94 [#uses=1]
    225 	%.662 = select i1 %94, i16 %93, i16 %85		; <i16> [#uses=1]
    226 	sub i16 0, %86		; <i16>:95 [#uses=1]
    227 	icmp slt i16 %86, 0		; <i1>:96 [#uses=1]
    228 	%.663 = select i1 %96, i16 %95, i16 %86		; <i16> [#uses=1]
    229 	getelementptr %struct.BiPartSrcDescriptor* %57, i32 0, i32 0, i32 0, i32 1, i32 0		; <i8*>:97 [#uses=1]
    230 	load i8* %97, align 1		; <i8>:98 [#uses=1]
    231 	zext i8 %98 to i32		; <i32>:99 [#uses=1]
    232 	getelementptr %struct.BiPartSrcDescriptor* %57, i32 0, i32 0, i32 0, i32 1, i32 1		; <i8*>:100 [#uses=1]
    233 	load i8* %100, align 1		; <i8>:101 [#uses=1]
    234 	zext i8 %101 to i32		; <i32>:102 [#uses=1]
    235 	getelementptr %struct.BiPartSrcDescriptor* %57, i32 0, i32 0, i32 0, i32 3, i32 0		; <i8*>:103 [#uses=1]
    236 	load i8* %103, align 1		; <i8>:104 [#uses=2]
    237 	zext i8 %104 to i32		; <i32>:105 [#uses=1]
    238 	getelementptr %struct.BiPartSrcDescriptor* %59, i32 0, i32 0, i32 0, i32 3, i32 0		; <i8*>:106 [#uses=1]
    239 	load i8* %106, align 1		; <i8>:107 [#uses=2]
    240 	zext i8 %107 to i32		; <i32>:108 [#uses=1]
    241 	getelementptr %struct.BiPartSrcDescriptor* %57, i32 0, i32 0, i32 0, i32 3, i32 1		; <i8*>:109 [#uses=1]
    242 	load i8* %109, align 1		; <i8>:110 [#uses=1]
    243 	zext i8 %110 to i32		; <i32>:111 [#uses=1]
    244 	getelementptr %struct.BiPartSrcDescriptor* %59, i32 0, i32 0, i32 0, i32 3, i32 1		; <i8*>:112 [#uses=1]
    245 	load i8* %112, align 1		; <i8>:113 [#uses=1]
    246 	zext i8 %113 to i32		; <i32>:114 [#uses=1]
    247 	lshr i32 %99, 4		; <i32>:115 [#uses=1]
    248 	and i32 %115, 2		; <i32>:116 [#uses=1]
    249 	lshr i32 %102, 5		; <i32>:117 [#uses=1]
    250 	or i32 %116, %117		; <i32>:118 [#uses=3]
    251 	icmp eq i32 %118, 0		; <i1>:119 [#uses=0]
    252 	icmp eq i32 %118, 1		; <i1>:120 [#uses=1]
    253 	br i1 %120, label %bb297, label %bb298
    254 
    255 bb297:		; preds = %bb210.preheader
    256 	br label %bb298
    257 
    258 bb298:		; preds = %bb297, %bb210.preheader
    259 	%vu8Mask_0.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=1]
    260 	%vu8Mask_1.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=1]
    261 	%vu8Mask_2.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=0]
    262 	%vu8Mask_3.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=1]
    263 	%vu8Mask_4.1 = phi i8 [ 0, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=0]
    264 	%vu8Mask_5.1 = phi i8 [ 0, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=1]
    265 	%vu8Mask_6.1 = phi i8 [ 0, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=0]
    266 	%vu8Mask_7.1 = phi i8 [ 0, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=1]
    267 	%vu8Mask_12.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=0]
    268 	%vu8Mask_13.1 = phi i8 [ -1, %bb297 ], [ 0, %bb210.preheader ]		; <i8> [#uses=0]
    269 	icmp eq i32 %118, 2		; <i1>:121 [#uses=0]
    270 	and i8 %vu8Mask_1.1, 3		; <i8>:122 [#uses=0]
    271 	and i8 %vu8Mask_5.1, 3		; <i8>:123 [#uses=0]
    272 	and i8 %vu8Mask_3.1, %18		; <i8>:124 [#uses=0]
    273 	and i8 %vu8Mask_7.1, %18		; <i8>:125 [#uses=0]
    274 	icmp eq i8 %104, %107		; <i1>:126 [#uses=1]
    275 	br i1 %126, label %bb328, label %bb303
    276 
    277 bb303:		; preds = %bb298
    278 	call i16 @llvm.bswap.i16( i16 %81 )		; <i16>:127 [#uses=1]
    279 	sub i16 %63, %77		; <i16>:128 [#uses=3]
    280 	sub i16 %65, %79		; <i16>:129 [#uses=3]
    281 	sub i16 %67, %73		; <i16>:130 [#uses=3]
    282 	sub i16 %69, %75		; <i16>:131 [#uses=3]
    283 	sub i16 %71, %127		; <i16>:132 [#uses=3]
    284 	sub i16 0, %128		; <i16>:133 [#uses=1]
    285 	icmp slt i16 %128, 0		; <i1>:134 [#uses=1]
    286 	%.673 = select i1 %134, i16 %133, i16 %128		; <i16> [#uses=1]
    287 	sub i16 0, %129		; <i16>:135 [#uses=1]
    288 	icmp slt i16 %129, 0		; <i1>:136 [#uses=1]
    289 	%.674 = select i1 %136, i16 %135, i16 %129		; <i16> [#uses=1]
    290 	sub i16 0, %130		; <i16>:137 [#uses=1]
    291 	icmp slt i16 %130, 0		; <i1>:138 [#uses=1]
    292 	%.675 = select i1 %138, i16 %137, i16 %130		; <i16> [#uses=1]
    293 	sub i16 0, %131		; <i16>:139 [#uses=1]
    294 	icmp slt i16 %131, 0		; <i1>:140 [#uses=1]
    295 	%.676 = select i1 %140, i16 %139, i16 %131		; <i16> [#uses=1]
    296 	sub i16 0, %132		; <i16>:141 [#uses=1]
    297 	icmp slt i16 %132, 0		; <i1>:142 [#uses=1]
    298 	%.677 = select i1 %142, i16 %141, i16 %132		; <i16> [#uses=1]
    299 	br label %bb328
    300 
    301 bb328:		; preds = %bb303, %bb298
    302 	%vu16Delta_0.0 = phi i16 [ %.673, %bb303 ], [ %., %bb298 ]		; <i16> [#uses=1]
    303 	%vu16Delta_1.0 = phi i16 [ %.674, %bb303 ], [ %.660, %bb298 ]		; <i16> [#uses=0]
    304 	%vu16Delta_2.0 = phi i16 [ %.675, %bb303 ], [ %.661, %bb298 ]		; <i16> [#uses=0]
    305 	%vu16Delta_3.0 = phi i16 [ %.676, %bb303 ], [ %.662, %bb298 ]		; <i16> [#uses=0]
    306 	%vu16Delta_6.0 = phi i16 [ %.677, %bb303 ], [ %.663, %bb298 ]		; <i16> [#uses=0]
    307 	lshr i16 %vu16Delta_0.0, 8		; <i16>:143 [#uses=1]
    308 	trunc i16 %143 to i8		; <i8>:144 [#uses=1]
    309 	and i8 %144, %vu8Mask_0.1		; <i8>:145 [#uses=1]
    310 	icmp eq i8 %145, 0		; <i1>:146 [#uses=0]
    311 	sub i32 %105, %114		; <i32>:147 [#uses=1]
    312 	sub i32 %111, %108		; <i32>:148 [#uses=1]
    313 	or i32 %147, %148		; <i32>:149 [#uses=1]
    314 	icmp eq i32 %149, 0		; <i1>:150 [#uses=0]
    315 	call i32 @_Z54S_CalcIfLargeMVDeltaForBMbBothPredictionsFromSameFramePK19BiPartSrcDescriptorS1_ijj( %struct.BiPartSrcDescriptor* %57, %struct.BiPartSrcDescriptor* %59, i32 %19, i32 0, i32 0 ) nounwind 		; <i32>:151 [#uses=0]
    316 	unreachable
    317 
    318 labelContinueEdgesLoopV:		; preds = %bb206, %bb205, %bb144
    319 	%fEdgeHasNonZeroBS.0 = phi i32 [ 0, %bb205 ], [ 0, %bb144 ], [ 1, %bb206 ]		; <i32> [#uses=2]
    320 	%fMacroblockHasNonZeroBS.6 = phi i32 [ %152, %bb205 ], [ %fMacroblockHasNonZeroBS.4, %bb144 ], [ %152, %bb206 ]		; <i32> [#uses=1]
    321 	%ixEdge.1 = phi i32 [ %160, %bb205 ], [ 0, %bb144 ], [ %160, %bb206 ]		; <i32> [#uses=1]
    322 	%bfNZ12.2 = phi i32 [ %159, %bb205 ], [ 0, %bb144 ], [ %159, %bb206 ]		; <i32> [#uses=1]
    323 	%boundaryStrengthsV.3 = phi i8* [ %158, %bb205 ], [ %boundaryStrengthsV.1771, %bb144 ], [ %158, %bb206 ]		; <i8*> [#uses=3]
    324 	or i32 %fMacroblockHasNonZeroBS.6, %fEdgeHasNonZeroBS.0		; <i32>:152 [#uses=2]
    325 	load i8* %boundaryStrengthsV.3, align 1		; <i8>:153 [#uses=1]
    326 	trunc i32 %fEdgeHasNonZeroBS.0 to i8		; <i8>:154 [#uses=1]
    327 	shl i8 %154, 5		; <i8>:155 [#uses=1]
    328 	xor i8 %155, 32		; <i8>:156 [#uses=1]
    329 	or i8 %153, %156		; <i8>:157 [#uses=1]
    330 	store i8 %157, i8* %boundaryStrengthsV.3, align 1
    331 	getelementptr i8* %boundaryStrengthsV.3, i32 4		; <i8*>:158 [#uses=4]
    332 	shl i32 %bfNZ12.2, 4		; <i32>:159 [#uses=4]
    333 	add i32 %ixEdge.1, 1		; <i32>:160 [#uses=6]
    334 	icmp ult i32 %160, %numEdgesToTest.2		; <i1>:161 [#uses=1]
    335 	br i1 %161, label %bb200, label %bb395
    336 
    337 bb395:		; preds = %labelContinueEdgesLoopV
    338 	add i32 %idxEachField11.0773, 1		; <i32>:162 [#uses=2]
    339 	icmp ugt i32 %162, 0		; <i1>:163 [#uses=1]
    340 	br i1 %163, label %bb398, label %bb144
    341 
    342 bb398:		; preds = %bb395
    343 	call void asm sideeffect "dcbt $0, $1", "b%,r,~{memory}"( i32 19, i32* null ) nounwind 
    344 	unreachable
    345 
    346 bb642:		; preds = %entry
    347 	ret i32 0
    348 }
    349 
    350 declare i16 @llvm.bswap.i16(i16) nounwind readnone 
    351 
    352 declare i8* @jvtNewPtrVectorAligned(i32)
    353 
    354 declare i8* @jvtNewPtr(i32)
    355 
    356 declare i8* @jvtNewPtrMemAligned(i32)
    357 
    358 declare %struct.Mutex* @MutexNew()
    359 
    360 declare i8* @_Znam(i32)
    361 
    362 declare i32 @_Z24LoopFilter_FilterMbGroupP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheP19ThreadedBatchStructjjij(%struct.LoopFilterInfo*, %struct.FramePixels*, %struct.FrameMotionVectorCache*, %struct.ThreadedBatch*, i32, i32, i32, i32)
    363 
    364 declare void @MutexLock(%struct.Mutex*)
    365 
    366 declare void @MutexUnlock(%struct.Mutex*)
    367 
    368 declare i32 @_Z35LoopFilter_Internal_FilterLumaPlanePK14LoopFilterInfojjjjj(%struct.LoopFilterInfo*, i32, i32, i32, i32, i32)
    369 
    370 declare i32 @_Z37LoopFilter_Internal_FilterChromaPlanePK14LoopFilterInfojjjjj(%struct.LoopFilterInfo*, i32, i32, i32, i32, i32)
    371 
    372 declare void @_Z44LoopFilter_Internal_filter_macroblock_chromaPK14LoopFilterInfoPhS2_iiiPK30PerMacroblockBoundaryStrengthsjj(%struct.LoopFilterInfo*, i8*, i8*, i32, i32, i32, %struct.PerMacroblockBoundaryStrengths*, i32, i32) nounwind 
    373 
    374 declare i32 @_Z42LoopFilter_Internal_FilterChromaPlaneMBAFFPK14LoopFilterInfojjj(%struct.LoopFilterInfo*, i32, i32, i32) nounwind 
    375 
    376 declare i32 @_Z26LF_Threading2_ProcessTasksP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheij(%struct.LoopFilterInfo*, %struct.FramePixels*, %struct.FrameMotionVectorCache*, i32, i32)
    377 
    378 declare i32 @_Z46LoopFilter_Internal_CalculateBoundaryStrengthsPK14LoopFilterInfoP22FrameMotionVectorCachejj(%struct.LoopFilterInfo*, %struct.FrameMotionVectorCache*, i32, i32)
    379 
    380 declare i32 @_Z44LoopFilter_Internal_FilterLumaChromaPlane_PPP14LoopFilterInfojjjjj(%struct.LoopFilterInfo*, i32, i32, i32, i32, i32)
    381 
    382 declare i32 @_Z22LoopFilter_FilterFrameP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheP19ThreadedBatchStructij(%struct.LoopFilterInfo*, %struct.FramePixels*, %struct.FrameMotionVectorCache*, %struct.ThreadedBatch*, i32, i32)
    383 
    384 declare void @_Z34LF_Threading2_ProcessTasks_WrapperPv(i8*)
    385 
    386 declare void @llvm.memset.i64(i8*, i8, i64, i32) nounwind 
    387