[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / 2007-06-28-BCCISelBug.ll
blobaf2a9f406b30ff41a219f2c1a352911fb92e3627
1 ; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mattr=+altivec
3         %struct.XATest = type { float, i16, i8, i8 }
4         %struct.XArrayRange = type { i8, i8, i8, i8 }
5         %struct.XBlendMode = type { i16, i16, i16, i16, %struct.GIC4, i16, i16, i8, i8, i8, i8 }
6         %struct.XClearC = type { double, %struct.GIC4, %struct.GIC4, float, i32 }
7         %struct.XClipPlane = type { i32, [6 x %struct.GIC4] }
8         %struct.XCBuffer = type { i16, i16, [8 x i16] }
9         %struct.XCMatrix = type { ptr, %struct.XICSS }
10         %struct.XConvolution = type { %struct.GIC4, %struct.XICSS, i16, i16, ptr, i32, i32 }
11         %struct.XDepthTest = type { i16, i16, i8, i8, i8, i8, double, double }
12         %struct.XFixedFunctionProgram = type { ptr }
13         %struct.XFogMode = type { %struct.GIC4, float, float, float, float, float, i16, i16, i16, i8, i8 }
14         %struct.XFramebufferAttachment = type { i32, i32, i32, i32 }
15         %struct.XHintMode = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
16         %struct.XHistogram = type { ptr, i32, i16, i8, i8 }
17         %struct.XICSS = type { %struct.GTCoord2, %struct.GTCoord2, %struct.GTCoord2, %struct.GTCoord2 }
18         %struct.XISubset = type { %struct.XConvolution, %struct.XConvolution, %struct.XConvolution, %struct.XCMatrix, %struct.XMinmax, %struct.XHistogram, %struct.XICSS, %struct.XICSS, %struct.XICSS, %struct.XICSS, i32 }
19         %struct.XLight = type { %struct.GIC4, %struct.GIC4, %struct.GIC4, %struct.GIC4, %struct.XPointLineLimits, float, float, float, float, float, %struct.XPointLineLimits, float, float, float, float, float }
20         %struct.XLightModel = type { %struct.GIC4, [8 x %struct.XLight], [2 x %struct.XMaterial], i32, i16, i16, i16, i8, i8, i8, i8, i8, i8 }
21         %struct.XLightProduct = type { %struct.GIC4, %struct.GIC4, %struct.GIC4 }
22         %struct.XLineMode = type { float, i32, i16, i16, i8, i8, i8, i8 }
23         %struct.XLogicOp = type { i16, i8, i8 }
24         %struct.XMaskMode = type { i32, [3 x i32], i8, i8, i8, i8, i8, i8, i8, i8 }
25         %struct.XMaterial = type { %struct.GIC4, %struct.GIC4, %struct.GIC4, %struct.GIC4, float, float, float, float, [8 x %struct.XLightProduct], %struct.GIC4, [6 x i32], [2 x i32] }
26         %struct.XMinmax = type { ptr, i16, i8, i8 }
27         %struct.XMinmaxTable = type { %struct.GIC4, %struct.GIC4 }
28         %struct.XMipmaplevel = type { [4 x i32], [4 x i32], [4 x float], [4 x i32], i32, i32, ptr, ptr, i16, i16, i16, i16, [2 x float] }
29         %struct.XMultisample = type { float, i8, i8, i8, i8, i8, i8, i8, i8 }
30         %struct.XPipelineProgramState = type { i8, i8, i8, i8, ptr }
31         %struct.XPMap = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
32         %struct.XPMode = type { float, float, %struct.XPStore, %struct.XPTransfer, %struct.XPMap, %struct.XISubset, i32, i32 }
33         %struct.XPPack = type { i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8 }
34         %struct.XPStore = type { %struct.XPPack, %struct.XPPack }
35         %struct.XPTransfer = type { float, float, float, float, float, float, float, float, float, float, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float }
36         %struct.XPointLineLimits = type { float, float, float }
37         %struct.XPointMode = type { float, float, float, float, %struct.XPointLineLimits, float, i8, i8, i8, i8, i16, i16, i32, i16, i16 }
38         %struct.XPGMode = type { [128 x i8], float, float, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8 }
39         %struct.XRegisterCCs = type { i8, i8, i8, i8, i32, [2 x %struct.GIC4], [8 x %struct.XRegisterCCsPerStageState], %struct.XRegisterCCsFinalStageState }
40         %struct.XRegisterCCsFinalStageState = type { i8, i8, i8, i8, [7 x %struct.XRegisterCCsPerVariableState] }
41         %struct.XRegisterCCsPerPortionState = type { [4 x %struct.XRegisterCCsPerVariableState], i8, i8, i8, i8, i16, i16, i16, i16, i16, i16 }
42         %struct.XRegisterCCsPerStageState = type { [2 x %struct.XRegisterCCsPerPortionState], [2 x %struct.GIC4] }
43         %struct.XRegisterCCsPerVariableState = type { i16, i16, i16, i16 }
44         %struct.XScissorTest = type { %struct.XFramebufferAttachment, i8, i8, i8, i8 }
45         %struct.XState = type { i16, i16, i16, i16, i32, i32, [256 x %struct.GIC4], [128 x %struct.GIC4], %struct.XViewport, %struct.XXF, %struct.XLightModel, %struct.XATest, %struct.XBlendMode, %struct.XClearC, %struct.XCBuffer, %struct.XDepthTest, %struct.XArrayRange, %struct.XFogMode, %struct.XHintMode, %struct.XLineMode, %struct.XLogicOp, %struct.XMaskMode, %struct.XPMode, %struct.XPointMode, %struct.XPGMode, %struct.XScissorTest, i32, %struct.XStencilTest, [16 x %struct.XTMode], %struct.XArrayRange, [8 x %struct.XTCoordGen], %struct.XClipPlane, %struct.XMultisample, %struct.XRegisterCCs, %struct.XArrayRange, %struct.XArrayRange, [3 x %struct.XPipelineProgramState], %struct.XXFFeedback, ptr, %struct.XFixedFunctionProgram, [3 x i32] }
46         %struct.XStencilTest = type { [3 x { i32, i32, i16, i16, i16, i16 }], i32, [4 x i8] }
47         %struct.XTCoordGen = type { { i16, i16, %struct.GIC4, %struct.GIC4 }, { i16, i16, %struct.GIC4, %struct.GIC4 }, { i16, i16, %struct.GIC4, %struct.GIC4 }, { i16, i16, %struct.GIC4, %struct.GIC4 }, i8, i8, i8, i8 }
48         %struct.XTGeomState = type { i16, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [6 x i16], [6 x i16] }
49         %struct.XTLevel = type { i32, i32, i16, i16, i16, i8, i8, i16, i16, i16, i16, ptr }
50         %struct.XTMode = type { %struct.GIC4, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, float, float, float, i16, i16, i16, i16, i16, i16, [4 x i16], i8, i8, i8, i8, [3 x float], [4 x float], float, float }
51         %struct.XTParamState = type { i16, i16, i16, i16, i16, i16, %struct.GIC4, float, float, float, float, i16, i16, i16, i16, float, i16, i8, i8, i32, ptr }
52         %struct.XTRec = type { ptr, float, float, float, float, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, [2 x %struct.PPSToken] }
53         %struct.XTState = type { i16, i8, i8, i16, i16, float, i32, ptr, %struct.XTParamState, %struct.XTGeomState, %struct.XTLevel, [6 x [15 x %struct.XTLevel]] }
54         %struct.XXF = type { [24 x [16 x float]], [24 x [16 x float]], [16 x float], float, float, float, float, float, i8, i8, i8, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i32 }
55         %struct.XXFFeedback = type { i8, i8, i8, i8, [16 x i32], [16 x i32] }
56         %struct.XViewport = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, double, double, i32, i32, i32, i32, float, float, float, float }
57         %struct.GIC4 = type { float, float, float, float }
58         %struct.GISWRSurface = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, [4 x ptr], i32 }
59         %struct.GTCoord2 = type { float, float }
60         %struct.GVMFPContext = type { float, i32, i32, i32, float, [3 x float] }
61         %struct.GVMFPStack = type { [8 x ptr], ptr, ptr, i32, i32, { <4 x float> }, { <4 x float> }, <4 x i32> }
62         %struct.GVMFGAttrib = type { <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, [8 x <4 x float>] }
63         %struct.GVMTs = type { [16 x ptr] }
64         %struct.PPSToken = type { { i16, i16, i32 } }
65         %struct._GVMConstants = type { <4 x i32>, <4 x i32>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float, float, float, float, float, float, float, float, float, float, float, float, [256 x float], [528 x i8] }
67 declare <4 x i32> @llvm.ppc.altivec.lvewx(ptr)
69 declare i32 @llvm.ppc.altivec.vcmpequw.p(i32, <4 x i32>, <4 x i32>)
71 define void @test(ptr %gldst, ptr %prgrm, ptr %buffs, ptr %cnstn, ptr %pstrm, ptr %vmctx, ptr %txtrs, ptr %fpstk, ptr %start, ptr %deriv, i32 %fragx, i32 %fragy) {
72 bb58.i:
73         %tmp3405.i = getelementptr %struct.XTRec, ptr null, i32 0, i32 1                ; <ptr> [#uses=1]
74         %tmp3407.i = call <4 x i32> @llvm.ppc.altivec.lvewx( ptr %tmp3405.i )           ; <<4 x i32>> [#uses=0]
75         %tmp4146.i = call i32 @llvm.ppc.altivec.vcmpequw.p( i32 3, <4 x i32> zeroinitializer, <4 x i32> zeroinitializer )               ; <i32> [#uses=1]
76         %tmp4147.i = icmp eq i32 %tmp4146.i, 0          ; <i1> [#uses=1]
77         br i1 %tmp4147.i, label %bb8799.i, label %bb4150.i
79 bb4150.i:               ; preds = %bb58.i
80         br label %bb8799.i
82 bb8799.i:               ; preds = %bb4150.i, %bb58.i
83         ret void