<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 23, 2013 at 10:13 AM, Francois Pichet <span dir="ltr"><<a href="mailto:pichet2000@gmail.com" target="_blank">pichet2000@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hi, this change break the Opus DSP out of tree backend. (we just updated to trunk)<div>
<br></div><div>The reason is that the Opus DSP backend end up creating a new BasicBlock in eliminateCallFramePseudoInstr (called by <span style="font-family:arial,sans-serif;font-size:13px">replaceFrameIndices)</span></div>
<div>Your change assume that the no new BBs are created in <span style="font-family:arial,sans-serif;font-size:13px">replaceFrameIndices</span></div><div><div><br></div><div>Because:</div><div> SmallVector<int, 8> SPState;</div>
<div> SPState.resize(Fn.getNumBlockIDs());</div></div><div><br></div><div>SPState won't change size.</div><div><br></div><div>Is it reasonable to change your loop to be able to deal with new BasicBlock created during replaceFrameIndices. It might not be I haven't really analyzed everything but it is working if I revert this specific commit.</div>
</div></blockquote><div><br></div><div>Before the commit, we use</div><div> for (MachineFunction::iterator BB = Fn.begin(), E = Fn.end(); BB != E; ++BB) {<br> int SPAdj = 0;<br> replaceFrameIndices(BB, Fn, SPAdj);<br>
}<br></div><div><br></div><div>I don't think it will work if <span style="font-family:arial,sans-serif;font-size:13px">replaceFrameIndices can create new BBs.</span></div><div>Let's figure out the issue first, then talk about what to do.</div>
<div><br></div><div>Thanks,</div><div>Manman <div dir="ltr">
<div><br></div></div><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 15, 2013 at 7:47 PM, Manman Ren <span dir="ltr"><<a href="mailto:mren@apple.com" target="_blank">mren@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: mren<br>
Date: Mon Jul 15 18:47:29 2013<br>
New Revision: 186364<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=186364&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=186364&view=rev</a><br>
Log:<br>
PEI: Support for non-zero SPAdj at beginning of a basic block.<br>
<br>
We can have a FrameSetup in one basic block and the matching FrameDestroy<br>
in a different basic block when we have struct byval. In that case, SPAdj<br>
is not zero at beginning of the basic block.<br>
<br>
Modify PEI to correctly set SPAdj at beginning of each basic block using<br>
DFS traversal. We used to assume SPAdj is 0 at beginning of each basic block.<br>
<br>
PEI had an assert SPAdjCount || SPAdj == 0.<br>
If we have a Destroy <n> followed by a Setup <m>, PEI will assert failure.<br>
We can add an extra condition to make sure the pairs are matched:<br>
The pairs start with a FrameSetup.<br>
But since we are doing a much better job in the verifier, this patch removes<br>
the check in PEI.<br>
<br>
PR16393<br>
<br>
Added:<br>
llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll<br>
llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll<br>
Modified:<br>
llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp<br>
<br>
Modified: llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=186364&r1=186363&r2=186364&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=186364&r1=186363&r2=186364&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp Mon Jul 15 18:47:29 2013<br>
@@ -728,7 +728,33 @@ void PEI::insertPrologEpilogCode(Machine<br>
void PEI::replaceFrameIndices(MachineFunction &Fn) {<br>
if (!Fn.getFrameInfo()->hasStackObjects()) return; // Nothing to do?<br>
<br>
+ // Store SPAdj at exit of a basic block.<br>
+ SmallVector<int, 8> SPState;<br>
+ SPState.resize(Fn.getNumBlockIDs());<br>
+ SmallPtrSet<MachineBasicBlock*, 8> Reachable;<br>
+<br>
+ // Iterate over the reachable blocks in DFS order.<br>
+ for (df_ext_iterator<MachineFunction*, SmallPtrSet<MachineBasicBlock*, 8> ><br>
+ DFI = df_ext_begin(&Fn, Reachable), DFE = df_ext_end(&Fn, Reachable);<br>
+ DFI != DFE; ++DFI) {<br>
+ int SPAdj = 0;<br>
+ // Check the exit state of the DFS stack predecessor.<br>
+ if (DFI.getPathLength() >= 2) {<br>
+ MachineBasicBlock *StackPred = DFI.getPath(DFI.getPathLength() - 2);<br>
+ assert(Reachable.count(StackPred) &&<br>
+ "DFS stack predecessor is already visited.\n");<br>
+ SPAdj = SPState[StackPred->getNumber()];<br>
+ }<br>
+ MachineBasicBlock *BB = *DFI;<br>
+ replaceFrameIndices(BB, Fn, SPAdj);<br>
+ SPState[BB->getNumber()] = SPAdj;<br>
+ }<br>
+<br>
+ // Handle the unreachable blocks.<br>
for (MachineFunction::iterator BB = Fn.begin(), E = Fn.end(); BB != E; ++BB) {<br>
+ if (Reachable.count(BB))<br>
+ // Already handled in DFS traversal.<br>
+ continue;<br>
int SPAdj = 0;<br>
replaceFrameIndices(BB, Fn, SPAdj);<br>
}<br>
@@ -746,19 +772,12 @@ void PEI::replaceFrameIndices(MachineBas<br>
int FrameSetupOpcode = TII.getCallFrameSetupOpcode();<br>
int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();<br>
<br>
-#ifndef NDEBUG<br>
- int SPAdjCount = 0; // frame setup / destroy count.<br>
-#endif<br>
if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);<br>
<br>
for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {<br>
<br>
if (I->getOpcode() == FrameSetupOpcode ||<br>
I->getOpcode() == FrameDestroyOpcode) {<br>
-#ifndef NDEBUG<br>
- // Track whether we see even pairs of them<br>
- SPAdjCount += I->getOpcode() == FrameSetupOpcode ? 1 : -1;<br>
-#endif<br>
// Remember how much SP has been adjusted to create the call<br>
// frame.<br>
int Size = I->getOperand(0).getImm();<br>
@@ -833,14 +852,6 @@ void PEI::replaceFrameIndices(MachineBas<br>
// Update register states.<br>
if (RS && !FrameIndexVirtualScavenging && MI) RS->forward(MI);<br>
}<br>
-<br>
- // If we have evenly matched pairs of frame setup / destroy instructions,<br>
- // make sure the adjustments come out to zero. If we don't have matched<br>
- // pairs, we can't be sure the missing bit isn't in another basic block<br>
- // due to a custom inserter playing tricks, so just asserting SPAdj==0<br>
- // isn't sufficient. See tMOVCC on Thumb1, for example.<br>
- assert((SPAdjCount || SPAdj == 0) &&<br>
- "Unbalanced call frame setup / destroy pairs?");<br>
}<br>
<br>
/// scavengeFrameVirtualRegs - Replace all frame index virtual registers<br>
<br>
Added: llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll?rev=186364&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll?rev=186364&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll (added)<br>
+++ llvm/trunk/test/CodeGen/ARM/2013-06-03-ByVal-2Kbytes.ll Mon Jul 15 18:47:29 2013<br>
@@ -0,0 +1,30 @@<br>
+; RUN: llc < %s -mcpu=cortex-a15 | FileCheck %s<br>
+; ModuleID = 'attri_16.c'<br>
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64"<br>
+target triple = "armv4t--linux-gnueabihf"<br>
+<br>
+%big_struct0 = type { [517 x i32] }<br>
+%big_struct1 = type { [516 x i32] }<br>
+<br>
+;CHECK: f:<br>
+define void @f(%big_struct0* %p0, %big_struct1* %p1) {<br>
+<br>
+;CHECK: sub sp, sp, #8<br>
+;CHECK: sub sp, sp, #2048<br>
+;CHECK: bl callme0<br>
+ call void @callme0(%big_struct0* byval %p0)<br>
+<br>
+;CHECK: add sp, sp, #8<br>
+;CHECK: add sp, sp, #2048<br>
+;CHECK: sub sp, sp, #2048<br>
+;CHECK: bl callme1<br>
+ call void @callme1(%big_struct1* byval %p1)<br>
+<br>
+;CHECK: add sp, sp, #2048<br>
+<br>
+ ret void<br>
+}<br>
+<br>
+declare void @callme0(%big_struct0* byval)<br>
+declare void @callme1(%big_struct1* byval)<br>
+<br>
<br>
Added: llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll?rev=186364&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll?rev=186364&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll (added)<br>
+++ llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll Mon Jul 15 18:47:29 2013<br>
@@ -0,0 +1,224 @@<br>
+; RUN: llc < %s -mcpu=cortex-a15 -verify-machineinstrs | FileCheck %s<br>
+<br>
+; Check a spill right after a function call with large struct byval is correctly<br>
+; generated.<br>
+; PR16393<br>
+<br>
+; CHECK: set_stored_macroblock_parameters<br>
+; CHECK: str r{{.*}}, [sp, [[SLOT:#[0-9]+]]] @ 4-byte Spill<br>
+; CHECK: bl RestoreMVBlock8x8<br>
+; CHECK: bl RestoreMVBlock8x8<br>
+; CHECK: bl RestoreMVBlock8x8<br>
+; CHECK: ldr r{{.*}}, [sp, [[SLOT]]] @ 4-byte Reload<br>
+<br>
+target triple = "armv7l-unknown-linux-gnueabihf"<br>
+<br>
+%struct.RD_DATA.1.145.289.433.545.689.881.897.929.977.1025.1057.1089.1169.1281.2673.2689.2705.2721.2737.2753.2769.2785.2801.2849.2865.2881.2897.2913.2929.2945.2961.2977.2993.3009.3025.3041.3057.3073.3089.3169.3249.3265.3393.3441 = type { double, [16 x [16 x i16]], [16 x [16 x i16]], [16 x [16 x i16]], i32****, i32***, i32, i16, [4 x i32], [4 x i32], i8**, [16 x i8], [16 x i8], i32, i64, i32, i16******, i16******, [2 x [4 x [4 x i8]]], i32, i32, i32, i32, i32, i32, i32, i32, i32 }<br>
+%struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8**, i8**, i32, i32***, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [9 x [16 x [16 x i16]]], [5 x [16 x [16 x i16]]], [9 x [8 x [8 x i16]]], [2 x [4 x [16 x [16 x i16]]]], [16 x [16 x i16]], [16 x [16 x i32]], i32****, i32***, i32***, i32***, i32****, i32****, %struct.Picture.9.153.297.441.553.697.889.905.937.985.1033.1065.1097.1177.1289.2681.2697.2713.2729.2745.2761.2777.2793.2809.2857.2873.2889.2905.2921.2937.2953.2969.2985.3001.3017.3033.3049.3065.3081.3097.3177.3257.3273.3401.3449*, %struct.Slice.8.152.296.440.552.696.888.904.936.984.1032.1064.1096.1176.128!<br>
8.2680.26<br>
96.2712.2728.2744.2760.2776.2792.2808.2856.2872.2888.2904.2920.2936.2952.2968.2984.3000.3016.3032.3048.3064.3080.3096.3176.3256.3272.3400.3448*, %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450*, i32*, i32*, i32, i32, i32, i32, [4 x [4 x i32]], i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i16******, i16******, i16******, i16******, [15 x i16], i32, i32, i32, i32, i32, i32, i32, i32, [6 x [32 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [1 x i32], i32, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s.11.155.299.443.555.699.891.907.939.987.1035.1067.1099.1179.1291.2683.2699.2715.2731.2747.2763.2779.2795.2811.2859.2875.2891.2907.2923.2939.2955.2971.2987.3003.3019.3035.3051.3067.3083.3099!<br>
.3179.325<br>
9.3275.3403.3451*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double**, double***, i32***, double**, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [2 x i32], i32, i32, i16, i32, i32, i32, i32, i32 }<br>
+%struct.Picture.9.153.297.441.553.697.889.905.937.985.1033.1065.1097.1177.1289.2681.2697.2713.2729.2745.2761.2777.2793.2809.2857.2873.2889.2905.2921.2937.2953.2969.2985.3001.3017.3033.3049.3065.3081.3097.3177.3257.3273.3401.3449 = type { i32, i32, [100 x %struct.Slice.8.152.296.440.552.696.888.904.936.984.1032.1064.1096.1176.1288.2680.2696.2712.2728.2744.2760.2776.2792.2808.2856.2872.2888.2904.2920.2936.2952.2968.2984.3000.3016.3032.3048.3064.3080.3096.3176.3256.3272.3400.3448*], i32, float, float, float }<br>
+%struct.Slice.8.152.296.440.552.696.888.904.936.984.1032.1064.1096.1176.1288.2680.2696.2712.2728.2744.2760.2776.2792.2808.2856.2872.2888.2904.2920.2936.2952.2968.2984.3000.3016.3032.3048.3064.3080.3096.3176.3256.3272.3400.3448 = type { i32, i32, i32, i32, i32, i32, %struct.datapartition.4.148.292.436.548.692.884.900.932.980.1028.1060.1092.1172.1284.2676.2692.2708.2724.2740.2756.2772.2788.2804.2852.2868.2884.2900.2916.2932.2948.2964.2980.2996.3012.3028.3044.3060.3076.3092.3172.3252.3268.3396.3444*, %struct.MotionInfoContexts.6.150.294.438.550.694.886.902.934.982.1030.1062.1094.1174.1286.2678.2694.2710.2726.2742.2758.2774.2790.2806.2854.2870.2886.2902.2918.2934.2950.2966.2982.2998.3014.3030.3046.3062.3078.3094.3174.3254.3270.3398.3446*, %struct.TextureInfoContexts.7.151.295.439.551.695.887.903.935.983.1031.1063.1095.1175.1287.2679.2695.2711.2727.2743.2759.2775.2791.2807.2855.2871.2887.2903.2919.2935.2951.2967.2983.2999.3015.3031.3047.3063.3079.3095.3175.3255.3271.3399.3447*, !<br>
i32, i32*<br>
, i32*, i32*, i32, i32*, i32*, i32*, i32 (i32)*, [3 x [2 x i32]] }<br>
+%struct.datapartition.4.148.292.436.548.692.884.900.932.980.1028.1060.1092.1172.1284.2676.2692.2708.2724.2740.2756.2772.2788.2804.2852.2868.2884.2900.2916.2932.2948.2964.2980.2996.3012.3028.3044.3060.3076.3092.3172.3252.3268.3396.3444 = type { %struct.Bitstream.2.146.290.434.546.690.882.898.930.978.1026.1058.1090.1170.1282.2674.2690.2706.2722.2738.2754.2770.2786.2802.2850.2866.2882.2898.2914.2930.2946.2962.2978.2994.3010.3026.3042.3058.3074.3090.3170.3250.3266.3394.3442*, %struct.EncodingEnvironment.3.147.291.435.547.691.883.899.931.979.1027.1059.1091.1171.1283.2675.2691.2707.2723.2739.2755.2771.2787.2803.2851.2867.2883.2899.2915.2931.2947.2963.2979.2995.3011.3027.3043.3059.3075.3091.3171.3251.3267.3395.3443, %struct.EncodingEnvironment.3.147.291.435.547.691.883.899.931.979.1027.1059.1091.1171.1283.2675.2691.2707.2723.2739.2755.2771.2787.2803.2851.2867.2883.2899.2915.2931.2947.2963.2979.2995.3011.3027.3043.3059.3075.3091.3171.3251.3267.3395.3443 }<br>
+%struct.Bitstream.2.146.290.434.546.690.882.898.930.978.1026.1058.1090.1170.1282.2674.2690.2706.2722.2738.2754.2770.2786.2802.2850.2866.2882.2898.2914.2930.2946.2962.2978.2994.3010.3026.3042.3058.3074.3090.3170.3250.3266.3394.3442 = type { i32, i32, i8, i32, i32, i8, i8, i32, i32, i8*, i32 }<br>
+%struct.EncodingEnvironment.3.147.291.435.547.691.883.899.931.979.1027.1059.1091.1171.1283.2675.2691.2707.2723.2739.2755.2771.2787.2803.2851.2867.2883.2899.2915.2931.2947.2963.2979.2995.3011.3027.3043.3059.3075.3091.3171.3251.3267.3395.3443 = type { i32, i32, i32, i32, i32, i8*, i32*, i32, i32 }<br>
+%struct.MotionInfoContexts.6.150.294.438.550.694.886.902.934.982.1030.1062.1094.1174.1286.2678.2694.2710.2726.2742.2758.2774.2790.2806.2854.2870.2886.2902.2918.2934.2950.2966.2982.2998.3014.3030.3046.3062.3078.3094.3174.3254.3270.3398.3446 = type { [3 x [11 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [2 x [9 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [2 x [10 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3!<br>
445]], [2<br>
x [6 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [4 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445], [4 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445], [3 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445] }<br>
+%struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445 = type { i16, i8, i32 }<br>
+%struct.TextureInfoContexts.7.151.295.439.551.695.887.903.935.983.1031.1063.1095.1175.1287.2679.2695.2711.2727.2743.2759.2775.2791.2807.2855.2871.2887.2903.2919.2935.2951.2967.2983.2999.3015.3031.3047.3063.3079.3095.3175.3255.3271.3399.3447 = type { [2 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445], [4 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445], [3 x [4 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x !<br>
[4 x %str<br>
uct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x [15 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x [15 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x [5 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x!<br>
[5 x %st<br>
ruct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x [15 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]], [10 x [15 x %struct.BiContextType.5.149.293.437.549.693.885.901.933.981.1029.1061.1093.1173.1285.2677.2693.2709.2725.2741.2757.2773.2789.2805.2853.2869.2885.2901.2917.2933.2949.2965.2981.2997.3013.3029.3045.3061.3077.3093.3173.3253.3269.3397.3445]] }<br>
+%struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450 = type { i32, i32, i32, [2 x i32], i32, [8 x i32], %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450*, %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450*, i32, [2 x [4 x [4 x [2 x i32]]]], [16 x i8], [16 x i8], i32, i64, [4 x i32], [4 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, double, i32, i32, i32, i32, i32, i32, i32, i32, i32 }<br>
+%struct.DecRefPicMarking_s.11.155.299.443.555.699.891.907.939.987.1035.1067.1099.1179.1291.2683.2699.2715.2731.2747.2763.2779.2795.2811.2859.2875.2891.2907.2923.2939.2955.2971.2987.3003.3019.3035.3051.3067.3083.3099.3179.3259.3275.3403.3451 = type { i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s.11.155.299.443.555.699.891.907.939.987.1035.1067.1099.1179.1291.2683.2699.2715.2731.2747.2763.2779.2795.2811.2859.2875.2891.2907.2923.2939.2955.2971.2987.3003.3019.3035.3051.3067.3083.3099.3179.3259.3275.3403.3451* }<br>
+%struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453 = type { i32, i32, i32, i32, i32, i32, [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], [6 x [33 x i64]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16**, i16****, i16****, i16*****, i16***, i8*, i8***, i64***, i64***, i16****, i8**, i8**, %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453*, %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3!<br>
101.3181.<br>
3261.3277.3405.3453*, %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453*, i32, i32, i32, i32, i32, i32, i32 }<br>
+%struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455 = type { i32, [16 x [16 x i32]], [16 x [16 x i32]], [16 x [16 x i32]], [3 x [16 x [16 x i32]]], [4 x i16], [4 x i8], [4 x i8], [4 x i8], [16 x [16 x i16]], [16 x [16 x i16]], [16 x [16 x i32]] }<br>
+<br>
+@cofAC = external global i32****, align 4<br>
+@cofDC = external global i32***, align 4<br>
+@rdopt = external global %struct.RD_DATA.1.145.289.433.545.689.881.897.929.977.1025.1057.1089.1169.1281.2673.2689.2705.2721.2737.2753.2769.2785.2801.2849.2865.2881.2897.2913.2929.2945.2961.2977.2993.3009.3025.3041.3057.3073.3089.3169.3249.3265.3393.3441*, align 4<br>
+@img = external global %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452*<br>
+@enc_picture = external global %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453*<br>
+@si_frame_indicator = external global i32, align 4<br>
+@sp2_frame_indicator = external global i32, align 4<br>
+@lrec = external global i32**, align 4<br>
+@tr8x8 = external global %struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455, align 4<br>
+@best_mode = external global i16, align 2<br>
+@best_c_imode = external global i32, align 4<br>
+@best_i16offset = external global i32, align 4<br>
+@bi_pred_me = external global i16, align 2<br>
+@b8mode = external global [4 x i32], align 4<br>
+@b8pdir = external global [4 x i32], align 4<br>
+@b4_intra_pred_modes = external global [16 x i8], align 1<br>
+@b8_intra_pred_modes8x8 = external global [16 x i8], align 1<br>
+@b4_ipredmode = external global [16 x i8], align 1<br>
+@b8_ipredmode8x8 = external global [4 x [4 x i8]], align 1<br>
+@rec_mbY = external global [16 x [16 x i16]], align 2<br>
+@lrec_rec = external global [16 x [16 x i32]], align 4<br>
+@rec_mbU = external global [16 x [16 x i16]], align 2<br>
+@rec_mbV = external global [16 x [16 x i16]], align 2<br>
+@lrec_rec_U = external global [16 x [16 x i32]], align 4<br>
+@lrec_uv = external global i32***, align 4<br>
+@lrec_rec_V = external global [16 x [16 x i32]], align 4<br>
+@cbp = external global i32, align 4<br>
+@cbp_blk = external global i64, align 8<br>
+@luma_transform_size_8x8_flag = external global i32, align 4<br>
+@frefframe = external global [4 x [4 x i8]], align 1<br>
+@brefframe = external global [4 x [4 x i8]], align 1<br>
+<br>
+; Function Attrs: nounwind<br>
+declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) #0<br>
+<br>
+; Function Attrs: nounwind<br>
+declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) #0<br>
+<br>
+; Function Attrs: nounwind<br>
+declare void @SetMotionVectorsMB(%struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450* nocapture, i32) #1<br>
+<br>
+; Function Attrs: nounwind<br>
+define void @set_stored_macroblock_parameters() #1 {<br>
+entry:<br>
+ %0 = load %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452** @img, align 4, !tbaa !0<br>
+ %1 = load i32* undef, align 4, !tbaa !3<br>
+ %mb_data = getelementptr inbounds %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452* %0, i32 0, i32 61<br>
+ %2 = load %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450** %mb_data, align 4, !tbaa !0<br>
+ br label %for.body<br>
+<br>
+for.body: ; preds = %for.body, %entry<br>
+ br i1 undef, label %for.end, label %for.body<br>
+<br>
+for.end: ; preds = %for.body<br>
+ br i1 undef, label %for.body20, label %if.end<br>
+<br>
+for.body20: ; preds = %for.end<br>
+ unreachable<br>
+<br>
+if.end: ; preds = %for.end<br>
+ br i1 undef, label %if.end40, label %for.cond31.preheader<br>
+<br>
+for.cond31.preheader: ; preds = %if.end<br>
+ unreachable<br>
+<br>
+if.end40: ; preds = %if.end<br>
+ br i1 undef, label %if.end43, label %if.then42<br>
+<br>
+if.then42: ; preds = %if.end40<br>
+ br label %if.end43<br>
+<br>
+if.end43: ; preds = %if.then42, %if.end40<br>
+ br i1 undef, label %if.end164, label %for.cond47.preheader<br>
+<br>
+for.cond47.preheader: ; preds = %if.end43<br>
+ br i1 undef, label %for.body119, label %if.end164<br>
+<br>
+for.body119: ; preds = %for.body119, %for.cond47.preheader<br>
+ br i1 undef, label %for.body119, label %if.end164<br>
+<br>
+if.end164: ; preds = %for.body119, %for.cond47.preheader, %if.end43<br>
+ store i32*** null, i32**** @cofDC, align 4, !tbaa !0<br>
+ %mb_type = getelementptr inbounds %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450* %2, i32 %1, i32 8<br>
+ br i1 undef, label %if.end230, label %if.then169<br>
+<br>
+if.then169: ; preds = %if.end164<br>
+ br i1 undef, label %for.cond185.preheader, label %for.cond210.preheader<br>
+<br>
+for.cond185.preheader: ; preds = %if.then169<br>
+ unreachable<br>
+<br>
+for.cond210.preheader: ; preds = %if.then169<br>
+ unreachable<br>
+<br>
+if.end230: ; preds = %if.end164<br>
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* undef, i8* bitcast ([4 x i32]* @b8mode to i8*), i32 16, i32 4, i1 false)<br>
+ %b8pdir = getelementptr inbounds %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450* %2, i32 %1, i32 15<br>
+ %3 = bitcast [4 x i32]* %b8pdir to i8*<br>
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %3, i8* bitcast ([4 x i32]* @b8pdir to i8*), i32 16, i32 4, i1 false)<br>
+ br i1 undef, label %if.end236, label %if.then233<br>
+<br>
+if.then233: ; preds = %if.end230<br>
+ unreachable<br>
+<br>
+if.end236: ; preds = %if.end230<br>
+ %cmp242 = icmp ne i16 undef, 8<br>
+ %4 = load i32* @luma_transform_size_8x8_flag, align 4, !tbaa !3<br>
+ %tobool245 = icmp ne i32 %4, 0<br>
+ %or.cond812 = or i1 %cmp242, %tobool245<br>
+ br i1 %or.cond812, label %if.end249, label %land.lhs.true246<br>
+<br>
+land.lhs.true246: ; preds = %if.end236<br>
+ br i1 undef, label %if.end249, label %if.then248<br>
+<br>
+if.then248: ; preds = %land.lhs.true246<br>
+ tail call void @RestoreMVBlock8x8(i32 1, i32 0, %struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455* byval @tr8x8, i32 0) #0<br>
+ tail call void @RestoreMVBlock8x8(i32 1, i32 2, %struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455* byval @tr8x8, i32 0) #0<br>
+ tail call void @RestoreMVBlock8x8(i32 1, i32 3, %struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455* byval @tr8x8, i32 0) #0<br>
+ br label %if.end249<br>
+<br>
+if.end249: ; preds = %if.then248, %land.lhs.true246, %if.end236<br>
+ %5 = load i32* @luma_transform_size_8x8_flag, align 4, !tbaa !3<br>
+ %6 = load %struct.RD_DATA.1.145.289.433.545.689.881.897.929.977.1025.1057.1089.1169.1281.2673.2689.2705.2721.2737.2753.2769.2785.2801.2849.2865.2881.2897.2913.2929.2945.2961.2977.2993.3009.3025.3041.3057.3073.3089.3169.3249.3265.3393.3441** @rdopt, align 4, !tbaa !0<br>
+ %luma_transform_size_8x8_flag264 = getelementptr inbounds %struct.RD_DATA.1.145.289.433.545.689.881.897.929.977.1025.1057.1089.1169.1281.2673.2689.2705.2721.2737.2753.2769.2785.2801.2849.2865.2881.2897.2913.2929.2945.2961.2977.2993.3009.3025.3041.3057.3073.3089.3169.3249.3265.3393.3441* %6, i32 0, i32 21<br>
+ store i32 %5, i32* %luma_transform_size_8x8_flag264, align 4, !tbaa !3<br>
+ %7 = load i32* undef, align 4, !tbaa !3<br>
+ %add281 = add nsw i32 %7, 0<br>
+ br label %for.body285<br>
+<br>
+for.body285: ; preds = %for.inc503, %if.end249<br>
+ %8 = phi %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452* [ undef, %if.end249 ], [ %.pre1155, %for.inc503 ]<br>
+ %i.21103 = phi i32 [ 0, %if.end249 ], [ %inc504, %for.inc503 ]<br>
+ %block_x286 = getelementptr inbounds %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452* %8, i32 0, i32 37<br>
+ %9 = load i32* %block_x286, align 4, !tbaa !3<br>
+ %add287 = add nsw i32 %9, %i.21103<br>
+ %shr289 = ashr i32 %i.21103, 1<br>
+ %add290 = add nsw i32 %shr289, 0<br>
+ %arrayidx292 = getelementptr inbounds %struct.macroblock.10.154.298.442.554.698.890.906.938.986.1034.1066.1098.1178.1290.2682.2698.2714.2730.2746.2762.2778.2794.2810.2858.2874.2890.2906.2922.2938.2954.2970.2986.3002.3018.3034.3050.3066.3082.3098.3178.3258.3274.3402.3450* %2, i32 %1, i32 15, i32 %add290<br>
+ %10 = load %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453** @enc_picture, align 4, !tbaa !0<br>
+ %ref_idx = getelementptr inbounds %struct.storable_picture.13.157.301.445.557.701.893.909.941.989.1037.1069.1101.1181.1293.2685.2701.2717.2733.2749.2765.2781.2797.2813.2861.2877.2893.2909.2925.2941.2957.2973.2989.3005.3021.3037.3053.3069.3085.3101.3181.3261.3277.3405.3453* %10, i32 0, i32 35<br>
+ %11 = load i8**** %ref_idx, align 4, !tbaa !0<br>
+ %12 = load i8*** %11, align 4, !tbaa !0<br>
+ %arrayidx313 = getelementptr inbounds i8** %12, i32 %add281<br>
+ %13 = load i8** %arrayidx313, align 4, !tbaa !0<br>
+ %arrayidx314 = getelementptr inbounds i8* %13, i32 %add287<br>
+ store i8 -1, i8* %arrayidx314, align 1, !tbaa !1<br>
+ %14 = load %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452** @img, align 4, !tbaa !0<br>
+ %MbaffFrameFlag327 = getelementptr inbounds %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452* %14, i32 0, i32 100<br>
+ %15 = load i32* %MbaffFrameFlag327, align 4, !tbaa !3<br>
+ %tobool328 = icmp eq i32 %15, 0<br>
+ br i1 %tobool328, label %if.end454, label %if.then329<br>
+<br>
+if.then329: ; preds = %for.body285<br>
+ %16 = load %struct.RD_DATA.1.145.289.433.545.689.881.897.929.977.1025.1057.1089.1169.1281.2673.2689.2705.2721.2737.2753.2769.2785.2801.2849.2865.2881.2897.2913.2929.2945.2961.2977.2993.3009.3025.3041.3057.3073.3089.3169.3249.3265.3393.3441** @rdopt, align 4, !tbaa !0<br>
+ br label %if.end454<br>
+<br>
+if.end454: ; preds = %if.then329, %for.body285<br>
+ %17 = load i32* %arrayidx292, align 4, !tbaa !3<br>
+ %cmp457 = icmp eq i32 %17, 0<br>
+ br i1 %cmp457, label %if.then475, label %lor.lhs.false459<br>
+<br>
+lor.lhs.false459: ; preds = %if.end454<br>
+ %18 = load i32* %mb_type, align 4, !tbaa !3<br>
+ switch i32 %18, label %for.inc503 [<br>
+ i32 9, label %if.then475<br>
+ i32 10, label %if.then475<br>
+ i32 13, label %if.then475<br>
+ i32 14, label %if.then475<br>
+ ]<br>
+<br>
+if.then475: ; preds = %lor.lhs.false459, %lor.lhs.false459, %lor.lhs.false459, %lor.lhs.false459, %if.end454<br>
+ store i16 0, i16* undef, align 2, !tbaa !4<br>
+ br label %for.inc503<br>
+<br>
+for.inc503: ; preds = %if.then475, %lor.lhs.false459<br>
+ %inc504 = add nsw i32 %i.21103, 1<br>
+ %.pre1155 = load %struct.ImageParameters.12.156.300.444.556.700.892.908.940.988.1036.1068.1100.1180.1292.2684.2700.2716.2732.2748.2764.2780.2796.2812.2860.2876.2892.2908.2924.2940.2956.2972.2988.3004.3020.3036.3052.3068.3084.3100.3180.3260.3276.3404.3452** @img, align 4, !tbaa !0<br>
+ br label %for.body285<br>
+}<br>
+<br>
+; Function Attrs: nounwind<br>
+declare void @update_offset_params(i32, i32) #1<br>
+<br>
+; Function Attrs: nounwind<br>
+declare void @RestoreMVBlock8x8(i32, i32, %struct.RD_8x8DATA.15.159.303.447.559.703.895.911.943.991.1039.1071.1103.1183.1295.2687.2703.2719.2735.2751.2767.2783.2799.2815.2863.2879.2895.2911.2927.2943.2959.2975.2991.3007.3023.3039.3055.3071.3087.3103.3183.3263.3279.3407.3455* byval nocapture, i32) #1<br>
+<br>
+attributes #0 = { nounwind }<br>
+attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }<br>
+<br>
+!0 = metadata !{metadata !"any pointer", metadata !1}<br>
+!1 = metadata !{metadata !"omnipotent char", metadata !2}<br>
+!2 = metadata !{metadata !"Simple C/C++ TBAA"}<br>
+!3 = metadata !{metadata !"int", metadata !1}<br>
+!4 = metadata !{metadata !"short", metadata !1}<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></div></div><br></div></div>