1; RUN: llc -verify-machineinstrs < %s | FileCheck %s 2 3target 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" 4target triple = "powerpc-unknown-linux-gnu" 5 %struct.BiPartSrcDescriptor = type <{ %"struct.BiPartSrcDescriptor::$_105" }> 6 %"struct.BiPartSrcDescriptor::$_105" = type { %struct.BiPartSrcDescriptor_NO_VECTOR_ALIGNMENT_size_is_16 } 7 %struct.BiPartSrcDescriptor_NO_VECTOR_ALIGNMENT_size_is_16 = type { [2 x %struct.MotionVectors], [2 x i8], %struct.Map4x4ToPartIdx, [2 x i8], i8, i8 } 8 %struct.Condv = type opaque 9 %struct.DHBFLayerId = type { i8 } 10 %struct.DecodeComplexityInfo = type { i32, i32, i32, i32, %"struct.DecodeComplexityInfo::IntraStats", %"struct.DecodeComplexityInfo::InterStats" } 11 %"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 } 12 %"struct.DecodeComplexityInfo::IntraStats" = type { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] } 13 %struct.DecodeComplexityOptions = type { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 } 14 %struct.DescriptorAllocator = type { ptr, ptr, ptr, i32, i32, ptr, i32, i32, ptr, i32, i32 } 15 %struct.DetailsFromSliceType = type <{ i8 }> 16 %struct.FlatnessAnalysis = type { i16, i16, i32, ptr, ptr, [512 x i32], [256 x i32] } 17 %struct.Frame = type <{ i8, i8, i8, i8, i8, [3 x i8], i32, i32, ptr, ptr, [8 x i8], %struct.FramePixels, %struct.FrameMotionVectorCache, %struct.FrameIndex, i32, ptr, ptr, ptr, ptr, ptr, %struct.FlatnessAnalysis, %struct.NoiseAnalysis, %struct.VisualActivity, %struct.FrameMotionInfo, %struct.FrameMotionAnalysis, %struct.FrameDataRateParameters, %struct.FrameEncoderTags, %struct.DecodeComplexityInfo, %struct.DecodeComplexityOptions, ptr, [1 x i32] }> 18 %struct.FrameDataRateParameters = type { i32, float, i8, i8 } 19 %struct.FrameEncoderTags = type { i8, i8, i32, i8, i8, float } 20 %struct.FrameIndex = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i32, i32, ptr, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %struct.DHBFLayerId } 21 %struct.FrameMotionAnalysis = type { i32, i32, i32, ptr, ptr, i32, i32, i16, i16, i32, i32, i32, i32, i8, i8 } 22 %struct.FrameMotionInfo = type { i32, i32, ptr, i32, i32, i32, i32, i32 } 23 %struct.FrameMotionVectorCache = type <{ ptr, i32, i32, i32, %struct.BiPartSrcDescriptor, %struct.BiPartSrcDescriptor, %struct.BiPartSrcDescriptor, [3 x ptr], ptr }> 24 %struct.FramePixels = type <{ i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, i32, [4 x ptr], [4 x ptr], [2 x [4 x i32]], [2 x [4 x i32]], %struct.PixelData, ptr, ptr, ptr, [16 x i16], [16 x i16], [12 x i8], %"struct.PortableSInt32Array<4>", %"struct.PortableSInt32Array<8>", %struct.ICOffsetArraysY, ptr, ptr, ptr, [3 x i32] }> 25 %struct.ICOffsetArraysY = type { [21 x i32], [21 x i32], [4 x [21 x i32]] } 26 %struct.InterpolationCache = type opaque 27 %struct.LoopFilterInfo = type { ptr, i32, i32, i32, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i32 } 28 %"struct.LoopFilterInfo::SliceInfoStruct" = type { %"struct.LoopFilterInfo::SliceInfoStruct::LFDisableStats", i8, i8, i8, i8, [17 x ptr], [17 x ptr] } 29 %"struct.LoopFilterInfo::SliceInfoStruct::LFDisableStats" = type { i32, i32 } 30 %struct.LoopFilterParam = type { i32, ptr, ptr, ptr } 31 %struct.Map4x4ToPartIdx = type { i16 } 32 %struct.MbAnalysis = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %struct.RdCost, %struct.RdCost, i32 } 33 %struct.MoEstMbMotionInfo = type { i32, i32, i32, i32, [16 x %struct.MoEstPartMotionInfo] } 34 %struct.MoEstMotion16x16 = type { [2 x i8], [2 x %struct.MotionVectors], i8, [3 x %struct.MoEstPredCost] } 35 %struct.MoEstPartMotionInfo = type { i32, %struct.PartGeom, i32, i32, [2 x %struct.MotionVectors], [2 x i8], i16 } 36 %struct.MoEstPredCost = type { i32, i16, i16 } 37 %struct.MotionInfoFor16x16_FasterSP = type { [2 x %struct.MotionVectors], [2 x i8], i8, [2 x i32], i32, i32 } 38 %struct.MotionVectors = type { %"struct.MotionVectors::$_103" } 39 %"struct.MotionVectors::$_103" = type { i32 } 40 %struct.Mutex = type opaque 41 %struct.NoiseAnalysis = type { i16, i16, i32, ptr, ptr, ptr, [512 x i32] } 42 %struct.PartGeom = type { %struct.Map4x4ToPartIdx } 43 %struct.PerMacroblockBoundaryStrengths = type { [16 x i8], [16 x i8], [4 x i8], [4 x i8], [2 x i32] } 44 %struct.PixelData = type { ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 } 45 %"struct.PortableSInt32Array<4>" = type { [4 x i32] } 46 %"struct.PortableSInt32Array<8>" = type { [8 x i32] } 47 %struct.RdCost = type { i32, i32, i32, double } 48 %struct.ThreadAllocator = type { ptr, ptr, [256 x ptr], i32, i32, i32 } 49 %struct.ThreadedBatch = type opaque 50 %struct.UVSrcOffsetEtcX_Struct = type <{ i16 }> 51 %struct.VisualActivity = type { i16, i16, i32, i32, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, ptr, i32, [2 x i32], i32, i32, i32, ptr, i16, i16, i16, i16, float, ptr, ptr, i32, i32, i8 } 52@_ZL33table_8_14_indexA_to_alpha_scalar = external constant [64 x i8] ; <ptr> [#uses=0] 53@_ZL32table_8_14_indexB_to_beta_scalar = external constant [64 x i8] ; <ptr> [#uses=0] 54@_ZL34table_8_15_indexA_bS_to_tc0_scalar = external constant [64 x [4 x i8]] ; <ptr> [#uses=0] 55@gkDummy = external global i32 ; <ptr> [#uses=0] 56@gkDetailsFromSliceTypeArray = external constant [10 x %struct.DetailsFromSliceType] ; <ptr> [#uses=0] 57 58declare i32 @_Z20LoopFilter_ConstructP14LoopFilterInfojj(ptr, i32, i32) 59 60declare i32 @_Z25LF_Threading2_assert_doneP14LoopFilterInfo(ptr) nounwind 61 62declare i32 @_Z54S_CalcIfLargeMVDeltaForBMbBothPredictionsFromSameFramePK19BiPartSrcDescriptorS1_ijj(ptr, ptr, i32, i32, i32) nounwind 63 64declare void @_Z30LoopFilter_Internal_FilterLumaPhiiiiii(ptr, i32, i32, i32, i32, i32, i32) nounwind 65 66declare void @_Z33LoopFilter_Internal_FilterChromaVPhiiiiiiiiii(ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) nounwind 67 68declare void @_Z33LoopFilter_Internal_FilterChromaHPhiiiiii(ptr, i32, i32, i32, i32, i32, i32) nounwind 69 70declare void @_Z42LoopFilter_Internal_filter_macroblock_lumaPK14LoopFilterInfoPhS2_iiiPK30PerMacroblockBoundaryStrengthsjj(ptr, ptr, ptr, i32, i32, i32, ptr, i32, i32) nounwind 71 72declare i32 @_Z40LoopFilter_Internal_FilterLumaPlaneMBAFFPK14LoopFilterInfojjj(ptr, i32, i32, i32) nounwind 73 74declare void @_Z18LoopFilter_DestroyP14LoopFilterInfo(ptr) 75 76declare void @MutexDispose(ptr) 77 78declare void @_ZdaPv(ptr) nounwind 79 80declare void @jvtDisposePTRVectorAligned(ptr) 81 82declare void @jvtDisposePTR(ptr) 83 84declare void @jvtDisposePTRMemAligned(ptr) 85 86declare void @_Z31LoopFilter_Internal_ResetTablesP14LoopFilterInfo(ptr) nounwind 87 88; CHECK: _Z60LoopFilter_Internal_CalculateBoundaryStrengths_MbaffFramePicPK14LoopFilterInfoP22FrameMotionVectorCachejj 89; CHECK: blr 90 91define i32 @_Z60LoopFilter_Internal_CalculateBoundaryStrengths_MbaffFramePicPK14LoopFilterInfoP22FrameMotionVectorCachejj(ptr %lfiPtr, ptr %frameMotionVectorCachePtr, i32 %mbY_min, i32 %mbY_maxPlus1) nounwind { 92entry: 93 icmp ult i32 %mbY_min, %mbY_maxPlus1 ; <i1>:0 [#uses=1] 94 br i1 %0, label %bb16, label %bb642 95 96bb16: ; preds = %entry 97 bitcast ptr null to ptr ; <ptr>:1 [#uses=3] 98 getelementptr i32, ptr %1, i32 1 ; <ptr>:2 [#uses=0] 99 getelementptr i32, ptr %1, i32 2 ; <ptr>:3 [#uses=0] 100 getelementptr i32, ptr %1, i32 3 ; <ptr>:4 [#uses=0] 101 bitcast ptr null to ptr ; <ptr>:5 [#uses=3] 102 getelementptr i32, ptr %5, i32 1 ; <ptr>:6 [#uses=0] 103 getelementptr i32, ptr %5, i32 2 ; <ptr>:7 [#uses=0] 104 getelementptr i32, ptr %5, i32 3 ; <ptr>: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, ptr null, i32 0, i32 2 ; <ptr>:22 [#uses=1] 121 getelementptr %struct.PerMacroblockBoundaryStrengths, ptr null, i32 0, i32 2, i32 0 ; <ptr>:23 [#uses=0] 122 and i32 0, -2 ; <i32>:24 [#uses=1] 123 add i32 %24, -1 ; <i32>:25 [#uses=0] 124 bitcast ptr %22 to ptr ; <ptr>:26 [#uses=3] 125 getelementptr i32, ptr %26, i32 1 ; <ptr>:27 [#uses=0] 126 getelementptr i32, ptr %26, i32 2 ; <ptr>:28 [#uses=0] 127 getelementptr i32, ptr %26, i32 3 ; <ptr>:29 [#uses=0] 128 br label %bb144 129 130bb144: ; 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 ptr [ null, %bb16 ], [ %158, %bb395 ] ; <ptr> [#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 ptr, ptr null, i32 %mbIndexLeft.2772 ; <ptr>:31 [#uses=1] 140 load ptr, ptr %31, align 4 ; <ptr>: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, ptr %boundaryStrengthsV.1771, align 1 144 br label %labelContinueEdgesLoopV 145 146bb200: ; 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 157bb205: ; preds = %bb200 158 store i8 32, ptr %158, align 1 159 br label %labelContinueEdgesLoopV 160 161bb206: ; preds = %bb200 162 icmp eq i32 %33, 15 ; <i1>:41 [#uses=1] 163 br i1 %41, label %labelContinueEdgesLoopV, label %bb210.preheader 164 165bb210.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 ptr, ptr null, i32 %53 ; <ptr>:56 [#uses=1] 184 load ptr, ptr %56, align 4 ; <ptr>:57 [#uses=7] 185 getelementptr ptr, ptr null, i32 %55 ; <ptr>:58 [#uses=1] 186 load ptr, ptr %58, align 4 ; <ptr>:59 [#uses=5] 187 icmp slt i32 %159, 0 ; <i1>:60 [#uses=0] 188 icmp eq ptr %57, %59 ; <i1>:61 [#uses=0] 189 bitcast ptr %57 to ptr ; <ptr>:62 [#uses=5] 190 load i16, ptr %62, align 2 ; <i16>:63 [#uses=2] 191 getelementptr i16, ptr %62, i32 1 ; <ptr>:64 [#uses=1] 192 load i16, ptr %64, align 2 ; <i16>:65 [#uses=2] 193 getelementptr i16, ptr %62, i32 2 ; <ptr>:66 [#uses=1] 194 load i16, ptr %66, align 2 ; <i16>:67 [#uses=2] 195 getelementptr i16, ptr %62, i32 3 ; <ptr>:68 [#uses=1] 196 load i16, ptr %68, align 2 ; <i16>:69 [#uses=2] 197 getelementptr i16, ptr %62, i32 6 ; <ptr>:70 [#uses=1] 198 load i16, ptr %70, align 2 ; <i16>:71 [#uses=2] 199 bitcast ptr %59 to ptr ; <ptr>:72 [#uses=5] 200 load i16, ptr %72, align 2 ; <i16>:73 [#uses=2] 201 getelementptr i16, ptr %72, i32 1 ; <ptr>:74 [#uses=1] 202 load i16, ptr %74, align 2 ; <i16>:75 [#uses=2] 203 getelementptr i16, ptr %72, i32 2 ; <ptr>:76 [#uses=1] 204 load i16, ptr %76, align 2 ; <i16>:77 [#uses=2] 205 getelementptr i16, ptr %72, i32 3 ; <ptr>:78 [#uses=1] 206 load i16, ptr %78, align 2 ; <i16>:79 [#uses=2] 207 getelementptr i16, ptr %72, i32 6 ; <ptr>:80 [#uses=1] 208 load i16, ptr %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, ptr %57, i32 0, i32 0, i32 0, i32 1, i32 0 ; <ptr>:97 [#uses=1] 230 load i8, ptr %97, align 1 ; <i8>:98 [#uses=1] 231 zext i8 %98 to i32 ; <i32>:99 [#uses=1] 232 getelementptr %struct.BiPartSrcDescriptor, ptr %57, i32 0, i32 0, i32 0, i32 1, i32 1 ; <ptr>:100 [#uses=1] 233 load i8, ptr %100, align 1 ; <i8>:101 [#uses=1] 234 zext i8 %101 to i32 ; <i32>:102 [#uses=1] 235 getelementptr %struct.BiPartSrcDescriptor, ptr %57, i32 0, i32 0, i32 0, i32 3, i32 0 ; <ptr>:103 [#uses=1] 236 load i8, ptr %103, align 1 ; <i8>:104 [#uses=2] 237 zext i8 %104 to i32 ; <i32>:105 [#uses=1] 238 getelementptr %struct.BiPartSrcDescriptor, ptr %59, i32 0, i32 0, i32 0, i32 3, i32 0 ; <ptr>:106 [#uses=1] 239 load i8, ptr %106, align 1 ; <i8>:107 [#uses=2] 240 zext i8 %107 to i32 ; <i32>:108 [#uses=1] 241 getelementptr %struct.BiPartSrcDescriptor, ptr %57, i32 0, i32 0, i32 0, i32 3, i32 1 ; <ptr>:109 [#uses=1] 242 load i8, ptr %109, align 1 ; <i8>:110 [#uses=1] 243 zext i8 %110 to i32 ; <i32>:111 [#uses=1] 244 getelementptr %struct.BiPartSrcDescriptor, ptr %59, i32 0, i32 0, i32 0, i32 3, i32 1 ; <ptr>:112 [#uses=1] 245 load i8, ptr %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 255bb297: ; preds = %bb210.preheader 256 br label %bb298 257 258bb298: ; 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 277bb303: ; 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 301bb328: ; 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( ptr %57, ptr %59, i32 %19, i32 0, i32 0 ) nounwind ; <i32>:151 [#uses=0] 316 unreachable 317 318labelContinueEdgesLoopV: ; 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 ptr [ %158, %bb205 ], [ %boundaryStrengthsV.1771, %bb144 ], [ %158, %bb206 ] ; <ptr> [#uses=3] 324 or i32 %fMacroblockHasNonZeroBS.6, %fEdgeHasNonZeroBS.0 ; <i32>:152 [#uses=2] 325 load i8, ptr %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, ptr %boundaryStrengthsV.3, align 1 331 getelementptr i8, ptr %boundaryStrengthsV.3, i32 4 ; <ptr>: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 337bb395: ; 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 342bb398: ; preds = %bb395 343 call void asm sideeffect "dcbt $0, $1", "b%,r,~{memory}"( i32 19, ptr null ) nounwind 344 unreachable 345 346bb642: ; preds = %entry 347 ret i32 0 348} 349 350declare i16 @llvm.bswap.i16(i16) nounwind readnone 351 352declare ptr @jvtNewPtrVectorAligned(i32) 353 354declare ptr @jvtNewPtr(i32) 355 356declare ptr @jvtNewPtrMemAligned(i32) 357 358declare ptr @MutexNew() 359 360declare ptr @_Znam(i32) 361 362declare i32 @_Z24LoopFilter_FilterMbGroupP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheP19ThreadedBatchStructjjij(ptr, ptr, ptr, ptr, i32, i32, i32, i32) 363 364declare void @MutexLock(ptr) 365 366declare void @MutexUnlock(ptr) 367 368declare i32 @_Z35LoopFilter_Internal_FilterLumaPlanePK14LoopFilterInfojjjjj(ptr, i32, i32, i32, i32, i32) 369 370declare i32 @_Z37LoopFilter_Internal_FilterChromaPlanePK14LoopFilterInfojjjjj(ptr, i32, i32, i32, i32, i32) 371 372declare void @_Z44LoopFilter_Internal_filter_macroblock_chromaPK14LoopFilterInfoPhS2_iiiPK30PerMacroblockBoundaryStrengthsjj(ptr, ptr, ptr, i32, i32, i32, ptr, i32, i32) nounwind 373 374declare i32 @_Z42LoopFilter_Internal_FilterChromaPlaneMBAFFPK14LoopFilterInfojjj(ptr, i32, i32, i32) nounwind 375 376declare i32 @_Z26LF_Threading2_ProcessTasksP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheij(ptr, ptr, ptr, i32, i32) 377 378declare i32 @_Z46LoopFilter_Internal_CalculateBoundaryStrengthsPK14LoopFilterInfoP22FrameMotionVectorCachejj(ptr, ptr, i32, i32) 379 380declare i32 @_Z44LoopFilter_Internal_FilterLumaChromaPlane_PPP14LoopFilterInfojjjjj(ptr, i32, i32, i32, i32, i32) 381 382declare i32 @_Z22LoopFilter_FilterFrameP14LoopFilterInfoP11FramePixelsP22FrameMotionVectorCacheP19ThreadedBatchStructij(ptr, ptr, ptr, ptr, i32, i32) 383 384declare void @_Z34LF_Threading2_ProcessTasks_WrapperPv(ptr) 385 386