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