1; RUN: llc < %s 2 3 %struct.AVClass = type { ptr, ptr, ptr } 4 %struct.AVCodec = type { ptr, i32, i32, i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr } 5 %struct.AVCodecContext = type { ptr, i32, i32, i32, i32, i32, ptr, i32, %struct.AVRational, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, ptr, ptr, i32, i32, i32, i32, ptr, ptr, float, float, i32, ptr, i32, ptr, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, ptr, i32, i32, i32, i32, %struct.AVRational, ptr, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, ptr, i32, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 } 6 %struct.AVEvalExpr = type opaque 7 %struct.AVFrame = type { [4 x ptr], [4 x i32], [4 x ptr], i32, i32, i64, i32, i32, i32, i32, i32, ptr, i32, ptr, [2 x ptr], ptr, i8, ptr, [4 x i64], i32, i32, i32, i32, i32, ptr, i32, i32, ptr, [2 x ptr] } 8 %struct.AVOption = type opaque 9 %struct.AVPaletteControl = type { i32, [256 x i32] } 10 %struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] } 11 %struct.AVRational = type { i32, i32 } 12 %struct.DSPContext = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], [5 x ptr], ptr, [4 x [4 x ptr]], [4 x [4 x ptr]], [4 x [4 x ptr]], [4 x [4 x ptr]], [2 x ptr], [11 x ptr], [11 x ptr], [2 x [16 x ptr]], [2 x [16 x ptr]], [2 x [16 x ptr]], [2 x [16 x ptr]], [8 x ptr], [3 x ptr], [3 x ptr], [3 x ptr], [4 x [16 x ptr]], [4 x [16 x ptr]], [4 x [16 x ptr]], [4 x [16 x ptr]], [10 x ptr], [10 x ptr], [2 x [16 x ptr]], [2 x [16 x ptr]], ptr, ptr, ptr, ptr, ptr, [2 x [4 x ptr]], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [64 x i8], i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [4 x ptr], ptr, ptr, ptr, ptr, ptr, ptr, [16 x ptr] } 13 %struct.FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i32, i32, [40 x i8] } 14 %struct.GetBitContext = type { ptr, ptr, ptr, i32, i32, i32, i32 } 15 %struct.MJpegContext = type opaque 16 %struct.MotionEstContext = type { ptr, i32, [4 x [2 x i32]], [4 x [2 x i32]], ptr, ptr, [2 x ptr], ptr, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x [4 x ptr]], [4 x [4 x ptr]], i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr } 17 %struct.MpegEncContext = type { ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, i32, i32, [8 x ptr], %struct.Picture, %struct.Picture, %struct.Picture, %struct.Picture, ptr, ptr, ptr, [3 x ptr], [3 x i32], ptr, [3 x ptr], [20 x i16], i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, [3 x ptr], i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, [5 x i32], i32, i32, i32, i32, %struct.DSPContext, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, [2 x [2 x ptr]], [2 x [2 x [2 x ptr]]], ptr, ptr, ptr, ptr, ptr, ptr, [2 x [2 x ptr]], [2 x [2 x [2 x ptr]]], [2 x ptr], [2 x [2 x ptr]], i32, i32, i32, [2 x [4 x [2 x i32]]], [2 x [2 x i32]], [2 x [2 x [2 x i32]]], ptr, [2 x [64 x i16]], %struct.MotionEstContext, i32, i32, i32, i32, i32, i32, ptr, [6 x i32], [6 x i32], [3 x ptr], ptr, [64 x i16], [64 x i16], [64 x i16], [64 x i16], i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, [8 x i32], ptr, ptr, ptr, ptr, [12 x i32], %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, ptr, [2 x i32], ptr, ptr, i64, i64, i32, i32, %struct.RateControlContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, %struct.GetBitContext, i32, i32, i32, %struct.ParseContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i16, i16, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x [2 x i32]], [2 x [2 x i32]], [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, [3 x i32], ptr, [3 x i32], [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, %struct.GetBitContext, i32, i32, i32, ptr, i32, [2 x [2 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, i32, i32, i32, ptr, i32, [12 x ptr], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } 18 %struct.ParseContext = type { ptr, i32, i32, i32, i32, i32, i32, i32 } 19 %struct.Picture = type { [4 x ptr], [4 x i32], [4 x ptr], i32, i32, i64, i32, i32, i32, i32, i32, ptr, i32, ptr, [2 x ptr], ptr, i8, ptr, [4 x i64], i32, i32, i32, i32, i32, ptr, i32, i32, ptr, [2 x ptr], [3 x ptr], [2 x ptr], ptr, [2 x i32], i32, i32, i32, i32, [2 x [16 x i32]], [2 x i32], i32, i32, ptr, ptr, ptr, ptr, i32 } 20 %struct.Predictor = type { double, double, double } 21 %struct.PutBitContext = type { i32, i32, ptr, ptr, ptr } 22 %struct.RateControlContext = type { ptr, i32, ptr, double, [5 x %struct.Predictor], double, double, double, double, double, [5 x double], i32, i32, [5 x i64], [5 x i64], [5 x i64], [5 x i64], [5 x i32], i32, ptr, float, i32, ptr } 23 %struct.RateControlEntry = type { i32, float, i32, i32, i32, i32, i32, i64, i32, float, i32, i32, i32, i32, i32, i32 } 24 %struct.RcOverride = type { i32, i32, i32, float } 25 %struct.ScanTable = type { ptr, [64 x i8], [64 x i8] } 26 %struct._IO_marker = type { ptr, ptr, i32 } 27 %struct.slice_buffer = type opaque 28 29define float @ff_rate_estimate_qscale(ptr %s, i32 %dry_run) { 30entry: 31 br i1 false, label %cond_false163, label %cond_true135 32 33cond_true135: ; preds = %entry 34 ret float 0.000000e+00 35 36cond_false163: ; preds = %entry 37 br i1 false, label %cond_true203, label %cond_next211 38 39cond_true203: ; preds = %cond_false163 40 ret float 0.000000e+00 41 42cond_next211: ; preds = %cond_false163 43 br i1 false, label %cond_false243, label %cond_true220 44 45cond_true220: ; preds = %cond_next211 46 br i1 false, label %cond_next237, label %cond_true225 47 48cond_true225: ; preds = %cond_true220 49 ret float 0.000000e+00 50 51cond_next237: ; preds = %cond_true220 52 br i1 false, label %cond_false785, label %cond_true735 53 54cond_false243: ; preds = %cond_next211 55 ret float 0.000000e+00 56 57cond_true735: ; preds = %cond_next237 58 ret float 0.000000e+00 59 60cond_false785: ; preds = %cond_next237 61 br i1 false, label %cond_true356.i.preheader, label %bb359.i 62 63cond_true356.i.preheader: ; preds = %cond_false785 64 %tmp116117.i = zext i8 0 to i32 ; <i32> [#uses=1] 65 br i1 false, label %cond_false.i, label %cond_next159.i 66 67cond_false.i: ; preds = %cond_true356.i.preheader 68 ret float 0.000000e+00 69 70cond_next159.i: ; preds = %cond_true356.i.preheader 71 %tmp178.i = add i32 %tmp116117.i, -128 ; <i32> [#uses=2] 72 %tmp181.i = mul i32 %tmp178.i, %tmp178.i ; <i32> [#uses=1] 73 %tmp181182.i = sitofp i32 %tmp181.i to float ; <float> [#uses=1] 74 %tmp199200.pn.in.i = fmul float %tmp181182.i, 0.000000e+00 ; <float> [#uses=1] 75 %tmp199200.pn.i = fpext float %tmp199200.pn.in.i to double ; <double> [#uses=1] 76 %tmp201.pn.i = fsub double 1.000000e+00, %tmp199200.pn.i ; <double> [#uses=1] 77 %factor.2.in.i = fmul double 0.000000e+00, %tmp201.pn.i ; <double> [#uses=1] 78 %factor.2.i = fptrunc double %factor.2.in.i to float ; <float> [#uses=1] 79 br i1 false, label %cond_next312.i, label %cond_false222.i 80 81cond_false222.i: ; preds = %cond_next159.i 82 ret float 0.000000e+00 83 84cond_next312.i: ; preds = %cond_next159.i 85 %tmp313314.i = fpext float %factor.2.i to double ; <double> [#uses=0] 86 ret float 0.000000e+00 87 88bb359.i: ; preds = %cond_false785 89 ret float 0.000000e+00 90} 91