Evan Cheng | 29b4cf6 | 2009-04-20 08:01:12 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | llc -relocation-model=pic -disable-fp-elim -mtriple=i386-apple-darwin | grep {andl.*7.*edx} |
Evan Cheng | ac16652 | 2008-10-17 06:16:07 +0000 | [diff] [blame] | 2 | |
| 3 | %struct.XXDActiveTextureTargets = type { i64, i64, i64, i64, i64, i64 } |
| 4 | %struct.XXDAlphaTest = type { float, i16, i8, i8 } |
| 5 | %struct.XXDArrayRange = type { i8, i8, i8, i8 } |
| 6 | %struct.XXDBlendMode = type { i16, i16, i16, i16, %struct.XXTColor4, i16, i16, i8, i8, i8, i8 } |
| 7 | %struct.XXDClearColor = type { double, %struct.XXTColor4, %struct.XXTColor4, float, i32 } |
| 8 | %struct.XXDClipPlane = type { i32, [6 x %struct.XXTColor4] } |
| 9 | %struct.XXDColorBuffer = type { i16, i8, i8, [8 x i16], i8, i8, i8, i8 } |
| 10 | %struct.XXDColorMatrix = type { [16 x float]*, %struct.XXDImagingCC } |
| 11 | %struct.XXDConvolution = type { %struct.XXTColor4, %struct.XXDImagingCC, i16, i16, [0 x i32], float*, i32, i32 } |
| 12 | %struct.XXDDepthTest = type { i16, i16, i8, i8, i8, i8, double, double } |
| 13 | %struct.XXDFixedFunction = type { %struct.YYToken* } |
| 14 | %struct.XXDFogMode = type { %struct.XXTColor4, float, float, float, float, float, i16, i16, i16, i8, i8 } |
| 15 | %struct.XXDHintMode = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 } |
| 16 | %struct.XXDHistogram = type { %struct.XXTFixedColor4*, i32, i16, i8, i8 } |
| 17 | %struct.XXDImagingCC = type { { float, float }, { float, float }, { float, float }, { float, float } } |
| 18 | %struct.XXDImagingSubset = type { %struct.XXDConvolution, %struct.XXDConvolution, %struct.XXDConvolution, %struct.XXDColorMatrix, %struct.XXDMinmax, %struct.XXDHistogram, %struct.XXDImagingCC, %struct.XXDImagingCC, %struct.XXDImagingCC, %struct.XXDImagingCC, i32, [0 x i32] } |
| 19 | %struct.XXDLight = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTCoord3, float, float, float, float, float, %struct.XXTCoord3, float, %struct.XXTCoord3, float, %struct.XXTCoord3, float, float, float, float, float } |
| 20 | %struct.XXDLightModel = type { %struct.XXTColor4, [8 x %struct.XXDLight], [2 x %struct.XXDMaterial], i32, i16, i16, i16, i8, i8, i8, i8, i8, i8 } |
| 21 | %struct.XXDLightProduct = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4 } |
| 22 | %struct.XXDLineMode = type { float, i32, i16, i16, i8, i8, i8, i8 } |
| 23 | %struct.XXDLogicOp = type { i16, i8, i8 } |
| 24 | %struct.XXDMaskMode = type { i32, [3 x i32], i8, i8, i8, i8, i8, i8, i8, i8 } |
| 25 | %struct.XXDMaterial = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, float, float, float, float, [8 x %struct.XXDLightProduct], %struct.XXTColor4, [8 x i32] } |
| 26 | %struct.XXDMinmax = type { %struct.XXDMinmaxTable*, i16, i8, i8, [0 x i32] } |
| 27 | %struct.XXDMinmaxTable = type { %struct.XXTColor4, %struct.XXTColor4 } |
| 28 | %struct.XXDMultisample = type { float, i8, i8, i8, i8, i8, i8, i8, i8 } |
| 29 | %struct.XXDPipelineProgramState = type { i8, i8, i8, i8, [0 x i32], %struct.XXTColor4* } |
| 30 | %struct.XXDPixelMap = type { i32*, float*, float*, float*, float*, float*, float*, float*, float*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } |
| 31 | %struct.XXDPixelMode = type { float, float, %struct.XXDPixelStore, %struct.XXDPixelTransfer, %struct.XXDPixelMap, %struct.XXDImagingSubset, i32, i32 } |
| 32 | %struct.XXDPixelPack = type { i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8 } |
| 33 | %struct.XXDPixelStore = type { %struct.XXDPixelPack, %struct.XXDPixelPack } |
| 34 | %struct.XXDPixelTransfer = 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 } |
| 35 | %struct.XXDPointMode = type { float, float, float, float, %struct.XXTCoord3, float, i8, i8, i8, i8, i16, i16, i32, i16, i16 } |
| 36 | %struct.XXDPolygonMode = type { [128 x i8], float, float, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8 } |
| 37 | %struct.XXDRegisterCombiners = type { i8, i8, i8, i8, i32, [2 x %struct.XXTColor4], [8 x %struct.XXDRegisterCombinersPerStageState], %struct.XXDRegisterCombinersFinalStageState } |
| 38 | %struct.XXDRegisterCombinersFinalStageState = type { i8, i8, i8, i8, [7 x %struct.XXDRegisterCombinersPerVariableState] } |
| 39 | %struct.XXDRegisterCombinersPerPortionState = type { [4 x %struct.XXDRegisterCombinersPerVariableState], i8, i8, i8, i8, i16, i16, i16, i16, i16, i16 } |
| 40 | %struct.XXDRegisterCombinersPerStageState = type { [2 x %struct.XXDRegisterCombinersPerPortionState], [2 x %struct.XXTColor4] } |
| 41 | %struct.XXDRegisterCombinersPerVariableState = type { i16, i16, i16, i16 } |
| 42 | %struct.XXDScissorTest = type { %struct.XXTFixedColor4, i8, i8, i8, i8 } |
| 43 | %struct.XXDState = type <{ i16, i16, i16, i16, i32, i32, [256 x %struct.XXTColor4], [128 x %struct.XXTColor4], %struct.XXDViewport, %struct.XXDTransform, %struct.XXDLightModel, %struct.XXDActiveTextureTargets, %struct.XXDAlphaTest, %struct.XXDBlendMode, %struct.XXDClearColor, %struct.XXDColorBuffer, %struct.XXDDepthTest, %struct.XXDArrayRange, %struct.XXDFogMode, %struct.XXDHintMode, %struct.XXDLineMode, %struct.XXDLogicOp, %struct.XXDMaskMode, %struct.XXDPixelMode, %struct.XXDPointMode, %struct.XXDPolygonMode, %struct.XXDScissorTest, i32, %struct.XXDStencilTest, [8 x %struct.XXDTextureMode], [16 x %struct.XXDTextureImageMode], %struct.XXDArrayRange, [8 x %struct.XXDTextureCoordGen], %struct.XXDClipPlane, %struct.XXDMultisample, %struct.XXDRegisterCombiners, %struct.XXDArrayRange, %struct.XXDArrayRange, [3 x %struct.XXDPipelineProgramState], %struct.XXDArrayRange, %struct.XXDTransformFeedback, i32*, %struct.XXDFixedFunction, [3 x i32], [2 x i32] }> |
| 44 | %struct.XXDStencilTest = type { [3 x { i32, i32, i16, i16, i16, i16 }], i32, [4 x i8] } |
| 45 | %struct.XXDTextureCoordGen = type { { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, i8, i8, i8, i8 } |
| 46 | %struct.XXDTextureImageMode = type { float } |
| 47 | %struct.XXDTextureMode = type { %struct.XXTColor4, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, float, float, i16, i16, i16, i16, i16, i16, [4 x i16], i8, i8, i8, i8, [3 x float], [4 x float], float, float } |
| 48 | %struct.XXDTextureRec = type opaque |
| 49 | %struct.XXDTransform = 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 }> |
| 50 | %struct.XXDTransformFeedback = type { i8, i8, i8, i8, [0 x i32], [16 x i32], [16 x i32] } |
| 51 | %struct.XXDViewport = 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 } |
| 52 | %struct.XXTColor4 = type { float, float, float, float } |
| 53 | %struct.XXTCoord3 = type { float, float, float } |
| 54 | %struct.XXTFixedColor4 = type { i32, i32, i32, i32 } |
| 55 | %struct.XXVMTextures = type { [16 x %struct.XXDTextureRec*] } |
| 56 | %struct.XXVMVPContext = type { i32 } |
| 57 | %struct.XXVMVPStack = type { i32, i32 } |
| 58 | %struct.YYToken = type { { i16, i16, i32 } } |
| 59 | %struct._XXVMConstants = type { <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], [4096 x i8], [8 x float], [48 x float], [128 x float], [528 x i8], { void (i8*, i8*, i32, i8*)*, float (float)*, float (float)*, float (float)*, i32 (float)* } } |
| 60 | @llvm.used = appending global [1 x i8*] [ i8* bitcast (void (%struct.XXDState*, <4 x float>*, <4 x float>**, %struct._XXVMConstants*, %struct.YYToken*, %struct.XXVMVPContext*, %struct.XXVMTextures*, %struct.XXVMVPStack*, <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 <4 x float>]*, i32*, <4 x i32>*, i64)* @t to i8*) ], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0] |
| 61 | |
| 62 | define void @t(%struct.XXDState* %gldst, <4 x float>* %prgrm, <4 x float>** %buffs, %struct._XXVMConstants* %cnstn, %struct.YYToken* %pstrm, %struct.XXVMVPContext* %vmctx, %struct.XXVMTextures* %txtrs, %struct.XXVMVPStack* %vpstk, <4 x float>* %atr0, <4 x float>* %atr1, <4 x float>* %atr2, <4 x float>* %atr3, <4 x float>* %vtx0, <4 x float>* %vtx1, <4 x float>* %vtx2, <4 x float>* %vtx3, [4 x <4 x float>]* %tmpGbl, i32* %oldMsk, <4 x i32>* %adrGbl, i64 %key_token) nounwind { |
| 63 | entry: |
| 64 | %0 = trunc i64 %key_token to i32 ; <i32> [#uses=1] |
| 65 | %1 = getelementptr %struct.YYToken* %pstrm, i32 %0 ; <%struct.YYToken*> [#uses=5] |
| 66 | br label %bb1132 |
| 67 | |
| 68 | bb51: ; preds = %bb1132 |
| 69 | %2 = getelementptr %struct.YYToken* %1, i32 %operation.0.rec, i32 0, i32 0 ; <i16*> [#uses=1] |
| 70 | %3 = load i16* %2, align 1 ; <i16> [#uses=3] |
| 71 | %4 = lshr i16 %3, 6 ; <i16> [#uses=1] |
| 72 | %5 = trunc i16 %4 to i8 ; <i8> [#uses=1] |
| 73 | %6 = zext i8 %5 to i32 ; <i32> [#uses=1] |
| 74 | %7 = trunc i16 %3 to i8 ; <i8> [#uses=1] |
| 75 | %8 = and i8 %7, 7 ; <i8> [#uses=1] |
| 76 | %mask5556 = zext i8 %8 to i32 ; <i32> [#uses=3] |
| 77 | %.sum1324 = add i32 %mask5556, 2 ; <i32> [#uses=1] |
| 78 | %.rec = add i32 %operation.0.rec, %.sum1324 ; <i32> [#uses=1] |
| 79 | %9 = bitcast %struct.YYToken* %operation.0 to i32* ; <i32*> [#uses=1] |
| 80 | %10 = load i32* %9, align 1 ; <i32> [#uses=1] |
| 81 | %11 = lshr i32 %10, 16 ; <i32> [#uses=2] |
| 82 | %12 = trunc i32 %11 to i8 ; <i8> [#uses=1] |
| 83 | %13 = and i8 %12, 1 ; <i8> [#uses=1] |
| 84 | %14 = lshr i16 %3, 15 ; <i16> [#uses=1] |
| 85 | %15 = trunc i16 %14 to i8 ; <i8> [#uses=1] |
| 86 | %16 = or i8 %13, %15 ; <i8> [#uses=1] |
| 87 | %17 = icmp eq i8 %16, 0 ; <i1> [#uses=1] |
| 88 | br i1 %17, label %bb94, label %bb75 |
| 89 | |
| 90 | bb75: ; preds = %bb51 |
| 91 | %18 = getelementptr %struct.YYToken* %1, i32 0, i32 0, i32 0 ; <i16*> [#uses=1] |
| 92 | %19 = load i16* %18, align 4 ; <i16> [#uses=1] |
| 93 | %20 = load i16* null, align 2 ; <i16> [#uses=1] |
| 94 | %21 = zext i16 %19 to i64 ; <i64> [#uses=1] |
| 95 | %22 = zext i16 %20 to i64 ; <i64> [#uses=1] |
| 96 | %23 = shl i64 %22, 16 ; <i64> [#uses=1] |
| 97 | %.ins1177 = or i64 %23, %21 ; <i64> [#uses=1] |
| 98 | %.ins1175 = or i64 %.ins1177, 0 ; <i64> [#uses=1] |
| 99 | %24 = and i32 %11, 1 ; <i32> [#uses=1] |
| 100 | %.neg1333 = sub i32 %mask5556, %24 ; <i32> [#uses=1] |
| 101 | %.neg1335 = sub i32 %.neg1333, 0 ; <i32> [#uses=1] |
| 102 | %25 = sub i32 %.neg1335, 0 ; <i32> [#uses=1] |
| 103 | br label %bb94 |
| 104 | |
| 105 | bb94: ; preds = %bb75, %bb51 |
| 106 | %extraToken.0 = phi i64 [ %.ins1175, %bb75 ], [ %extraToken.1, %bb51 ] ; <i64> [#uses=1] |
| 107 | %argCount.0 = phi i32 [ %25, %bb75 ], [ %mask5556, %bb51 ] ; <i32> [#uses=1] |
| 108 | %operation.0.sum1392 = add i32 %operation.0.rec, 1 ; <i32> [#uses=2] |
| 109 | %26 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 0 ; <i16*> [#uses=1] |
| 110 | %27 = load i16* %26, align 4 ; <i16> [#uses=1] |
| 111 | %28 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 1 ; <i16*> [#uses=1] |
| 112 | %29 = load i16* %28, align 2 ; <i16> [#uses=1] |
| 113 | store i16 %27, i16* null, align 8 |
| 114 | store i16 %29, i16* null, align 2 |
| 115 | br i1 false, label %bb1132, label %bb110 |
| 116 | |
| 117 | bb110: ; preds = %bb94 |
| 118 | switch i32 %6, label %bb1078 [ |
| 119 | i32 30, label %bb960 |
| 120 | i32 32, label %bb801 |
| 121 | i32 38, label %bb809 |
| 122 | i32 78, label %bb1066 |
| 123 | ] |
| 124 | |
| 125 | bb801: ; preds = %bb110 |
| 126 | unreachable |
| 127 | |
| 128 | bb809: ; preds = %bb110 |
| 129 | unreachable |
| 130 | |
| 131 | bb960: ; preds = %bb110 |
| 132 | %30 = icmp eq i32 %argCount.0, 1 ; <i1> [#uses=1] |
| 133 | br i1 %30, label %bb962, label %bb965 |
| 134 | |
| 135 | bb962: ; preds = %bb960 |
| 136 | unreachable |
| 137 | |
| 138 | bb965: ; preds = %bb960 |
| 139 | unreachable |
| 140 | |
| 141 | bb1066: ; preds = %bb110 |
| 142 | unreachable |
| 143 | |
| 144 | bb1078: ; preds = %bb110 |
| 145 | unreachable |
| 146 | |
| 147 | bb1132: ; preds = %bb94, %entry |
| 148 | %extraToken.1 = phi i64 [ undef, %entry ], [ %extraToken.0, %bb94 ] ; <i64> [#uses=1] |
| 149 | %operation.0.rec = phi i32 [ 0, %entry ], [ %.rec, %bb94 ] ; <i32> [#uses=4] |
| 150 | %operation.0 = getelementptr %struct.YYToken* %1, i32 %operation.0.rec ; <%struct.YYToken*> [#uses=1] |
| 151 | br i1 false, label %bb1134, label %bb51 |
| 152 | |
| 153 | bb1134: ; preds = %bb1132 |
| 154 | ret void |
| 155 | } |