1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep movl > %t 2*9880d681SAndroid Build Coastguard Worker; RUN: not grep "r[abcd]x" %t 3*9880d681SAndroid Build Coastguard Worker; RUN: not grep "r[ds]i" %t 4*9880d681SAndroid Build Coastguard Worker; RUN: not grep "r[bs]p" %t 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker %struct.BITMAP = type { i16, i16, i32, i32, i32, i32, i32, i32, i8*, i8* } 7*9880d681SAndroid Build Coastguard Worker %struct.BltData = type { float, float, float, float } 8*9880d681SAndroid Build Coastguard Worker %struct.BltDepth = type { i32, i8**, i32, %struct.BITMAP* (%struct.BltDepth**, %struct.BITMAP*, i32, i32, float*, float, i32)*, i32 (%struct.BltDepth**, %struct.BltOp*)*, i32 (%struct.BltDepth**, %struct.BltOp*, %struct.BltImg*)*, i32 (%struct.BltDepth**, %struct.BltOp*, %struct.BltSh*)*, [28 x [2 x [2 x i32]]]*, %struct.BltData* } 9*9880d681SAndroid Build Coastguard Worker %struct.BltImg = type { i32, i8, i8, i8, float, float*, float*, i32, i32, float*, i32 (i8*, i8*, i8**, i32*, i8**, i32*)*, i8* } 10*9880d681SAndroid Build Coastguard Worker %struct.BltOp = type { i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i8* } 11*9880d681SAndroid Build Coastguard Worker %struct.BltSh = type { i8, i8, i8, i8, float, float*, float*, float*, float*, i32, i32, float*, float*, float* } 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine void @t(%struct.BltDepth* %depth, %struct.BltOp* %bop, i32 %mode) nounwind { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker switch i32 %mode, label %return [ 16*9880d681SAndroid Build Coastguard Worker i32 1, label %bb2898.us 17*9880d681SAndroid Build Coastguard Worker i32 18, label %bb13086.preheader 18*9880d681SAndroid Build Coastguard Worker ] 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerbb13086.preheader: ; preds = %entry 21*9880d681SAndroid Build Coastguard Worker %tmp13098 = icmp eq i32 0, 0 ; <i1> [#uses=1] 22*9880d681SAndroid Build Coastguard Worker %tmp13238 = icmp eq i32 0, 0 ; <i1> [#uses=1] 23*9880d681SAndroid Build Coastguard Worker br label %bb13088 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerbb2898.us: ; preds = %bb2898.us, %entry 26*9880d681SAndroid Build Coastguard Worker br label %bb2898.us 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerbb13088: ; preds = %bb13572, %bb13567, %bb13107, %bb13086.preheader 29*9880d681SAndroid Build Coastguard Worker br i1 %tmp13098, label %bb13107, label %bb13101 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerbb13101: ; preds = %bb13088 32*9880d681SAndroid Build Coastguard Worker br label %bb13107 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerbb13107: ; preds = %bb13101, %bb13088 35*9880d681SAndroid Build Coastguard Worker %iftmp.684.0 = phi i32 [ 0, %bb13101 ], [ 65535, %bb13088 ] ; <i32> [#uses=2] 36*9880d681SAndroid Build Coastguard Worker %tmp13111 = load i64, i64* null, align 8 ; <i64> [#uses=3] 37*9880d681SAndroid Build Coastguard Worker %tmp13116 = lshr i64 %tmp13111, 16 ; <i64> [#uses=1] 38*9880d681SAndroid Build Coastguard Worker %tmp1311613117 = trunc i64 %tmp13116 to i32 ; <i32> [#uses=1] 39*9880d681SAndroid Build Coastguard Worker %tmp13118 = and i32 %tmp1311613117, 65535 ; <i32> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker %tmp13120 = lshr i64 %tmp13111, 32 ; <i64> [#uses=1] 41*9880d681SAndroid Build Coastguard Worker %tmp1312013121 = trunc i64 %tmp13120 to i32 ; <i32> [#uses=1] 42*9880d681SAndroid Build Coastguard Worker %tmp13122 = and i32 %tmp1312013121, 65535 ; <i32> [#uses=2] 43*9880d681SAndroid Build Coastguard Worker %tmp13124 = lshr i64 %tmp13111, 48 ; <i64> [#uses=1] 44*9880d681SAndroid Build Coastguard Worker %tmp1312413125 = trunc i64 %tmp13124 to i32 ; <i32> [#uses=2] 45*9880d681SAndroid Build Coastguard Worker %tmp1314013141not = xor i16 0, -1 ; <i16> [#uses=1] 46*9880d681SAndroid Build Coastguard Worker %tmp1314013141not13142 = zext i16 %tmp1314013141not to i32 ; <i32> [#uses=3] 47*9880d681SAndroid Build Coastguard Worker %tmp13151 = mul i32 %tmp13122, %tmp1314013141not13142 ; <i32> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker %tmp13154 = mul i32 %tmp1312413125, %tmp1314013141not13142 ; <i32> [#uses=1] 49*9880d681SAndroid Build Coastguard Worker %tmp13157 = mul i32 %iftmp.684.0, %tmp1314013141not13142 ; <i32> [#uses=1] 50*9880d681SAndroid Build Coastguard Worker %tmp13171 = add i32 %tmp13151, 1 ; <i32> [#uses=1] 51*9880d681SAndroid Build Coastguard Worker %tmp13172 = add i32 %tmp13171, 0 ; <i32> [#uses=1] 52*9880d681SAndroid Build Coastguard Worker %tmp13176 = add i32 %tmp13154, 1 ; <i32> [#uses=1] 53*9880d681SAndroid Build Coastguard Worker %tmp13177 = add i32 %tmp13176, 0 ; <i32> [#uses=1] 54*9880d681SAndroid Build Coastguard Worker %tmp13181 = add i32 %tmp13157, 1 ; <i32> [#uses=1] 55*9880d681SAndroid Build Coastguard Worker %tmp13182 = add i32 %tmp13181, 0 ; <i32> [#uses=1] 56*9880d681SAndroid Build Coastguard Worker %tmp13188 = lshr i32 %tmp13172, 16 ; <i32> [#uses=1] 57*9880d681SAndroid Build Coastguard Worker %tmp13190 = lshr i32 %tmp13177, 16 ; <i32> [#uses=1] 58*9880d681SAndroid Build Coastguard Worker %tmp13192 = lshr i32 %tmp13182, 16 ; <i32> [#uses=1] 59*9880d681SAndroid Build Coastguard Worker %tmp13198 = sub i32 %tmp13118, 0 ; <i32> [#uses=1] 60*9880d681SAndroid Build Coastguard Worker %tmp13201 = sub i32 %tmp13122, %tmp13188 ; <i32> [#uses=1] 61*9880d681SAndroid Build Coastguard Worker %tmp13204 = sub i32 %tmp1312413125, %tmp13190 ; <i32> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker %tmp13207 = sub i32 %iftmp.684.0, %tmp13192 ; <i32> [#uses=1] 63*9880d681SAndroid Build Coastguard Worker %tmp1320813209 = zext i32 %tmp13204 to i64 ; <i64> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker %tmp13211 = shl i64 %tmp1320813209, 48 ; <i64> [#uses=1] 65*9880d681SAndroid Build Coastguard Worker %tmp1321213213 = zext i32 %tmp13201 to i64 ; <i64> [#uses=1] 66*9880d681SAndroid Build Coastguard Worker %tmp13214 = shl i64 %tmp1321213213, 32 ; <i64> [#uses=1] 67*9880d681SAndroid Build Coastguard Worker %tmp13215 = and i64 %tmp13214, 281470681743360 ; <i64> [#uses=1] 68*9880d681SAndroid Build Coastguard Worker %tmp1321713218 = zext i32 %tmp13198 to i64 ; <i64> [#uses=1] 69*9880d681SAndroid Build Coastguard Worker %tmp13219 = shl i64 %tmp1321713218, 16 ; <i64> [#uses=1] 70*9880d681SAndroid Build Coastguard Worker %tmp13220 = and i64 %tmp13219, 4294901760 ; <i64> [#uses=1] 71*9880d681SAndroid Build Coastguard Worker %tmp13216 = or i64 %tmp13211, 0 ; <i64> [#uses=1] 72*9880d681SAndroid Build Coastguard Worker %tmp13221 = or i64 %tmp13216, %tmp13215 ; <i64> [#uses=1] 73*9880d681SAndroid Build Coastguard Worker %tmp13225 = or i64 %tmp13221, %tmp13220 ; <i64> [#uses=4] 74*9880d681SAndroid Build Coastguard Worker %tmp1322713228 = trunc i32 %tmp13207 to i16 ; <i16> [#uses=4] 75*9880d681SAndroid Build Coastguard Worker %tmp13233 = icmp eq i16 %tmp1322713228, 0 ; <i1> [#uses=1] 76*9880d681SAndroid Build Coastguard Worker br i1 %tmp13233, label %bb13088, label %bb13236 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerbb13236: ; preds = %bb13107 79*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13567, label %bb13252 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workerbb13252: ; preds = %bb13236 82*9880d681SAndroid Build Coastguard Worker %tmp1329013291 = zext i16 %tmp1322713228 to i64 ; <i64> [#uses=8] 83*9880d681SAndroid Build Coastguard Worker %tmp13296 = lshr i64 %tmp13225, 16 ; <i64> [#uses=1] 84*9880d681SAndroid Build Coastguard Worker %tmp13297 = and i64 %tmp13296, 65535 ; <i64> [#uses=1] 85*9880d681SAndroid Build Coastguard Worker %tmp13299 = lshr i64 %tmp13225, 32 ; <i64> [#uses=1] 86*9880d681SAndroid Build Coastguard Worker %tmp13300 = and i64 %tmp13299, 65535 ; <i64> [#uses=1] 87*9880d681SAndroid Build Coastguard Worker %tmp13302 = lshr i64 %tmp13225, 48 ; <i64> [#uses=1] 88*9880d681SAndroid Build Coastguard Worker %tmp13306 = sub i64 %tmp1329013291, 0 ; <i64> [#uses=0] 89*9880d681SAndroid Build Coastguard Worker %tmp13309 = sub i64 %tmp1329013291, %tmp13297 ; <i64> [#uses=1] 90*9880d681SAndroid Build Coastguard Worker %tmp13312 = sub i64 %tmp1329013291, %tmp13300 ; <i64> [#uses=1] 91*9880d681SAndroid Build Coastguard Worker %tmp13315 = sub i64 %tmp1329013291, %tmp13302 ; <i64> [#uses=1] 92*9880d681SAndroid Build Coastguard Worker %tmp13318 = mul i64 %tmp1329013291, %tmp1329013291 ; <i64> [#uses=1] 93*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13339, label %bb13324 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerbb13324: ; preds = %bb13252 96*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13339, label %bb13330 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerbb13330: ; preds = %bb13324 99*9880d681SAndroid Build Coastguard Worker %tmp13337 = sdiv i64 0, 0 ; <i64> [#uses=1] 100*9880d681SAndroid Build Coastguard Worker br label %bb13339 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerbb13339: ; preds = %bb13330, %bb13324, %bb13252 103*9880d681SAndroid Build Coastguard Worker %r0120.0 = phi i64 [ %tmp13337, %bb13330 ], [ 0, %bb13252 ], [ 4294836225, %bb13324 ] ; <i64> [#uses=1] 104*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13360, label %bb13345 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workerbb13345: ; preds = %bb13339 107*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13360, label %bb13351 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workerbb13351: ; preds = %bb13345 110*9880d681SAndroid Build Coastguard Worker %tmp13354 = mul i64 0, %tmp13318 ; <i64> [#uses=1] 111*9880d681SAndroid Build Coastguard Worker %tmp13357 = sub i64 %tmp1329013291, %tmp13309 ; <i64> [#uses=1] 112*9880d681SAndroid Build Coastguard Worker %tmp13358 = sdiv i64 %tmp13354, %tmp13357 ; <i64> [#uses=1] 113*9880d681SAndroid Build Coastguard Worker br label %bb13360 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerbb13360: ; preds = %bb13351, %bb13345, %bb13339 116*9880d681SAndroid Build Coastguard Worker %r1121.0 = phi i64 [ %tmp13358, %bb13351 ], [ 0, %bb13339 ], [ 4294836225, %bb13345 ] ; <i64> [#uses=1] 117*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb13402, label %bb13387 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Workerbb13387: ; preds = %bb13360 120*9880d681SAndroid Build Coastguard Worker br label %bb13402 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerbb13402: ; preds = %bb13387, %bb13360 123*9880d681SAndroid Build Coastguard Worker %r3123.0 = phi i64 [ 0, %bb13360 ], [ 4294836225, %bb13387 ] ; <i64> [#uses=1] 124*9880d681SAndroid Build Coastguard Worker %tmp13404 = icmp eq i16 %tmp1322713228, -1 ; <i1> [#uses=1] 125*9880d681SAndroid Build Coastguard Worker br i1 %tmp13404, label %bb13435, label %bb13407 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerbb13407: ; preds = %bb13402 128*9880d681SAndroid Build Coastguard Worker br label %bb13435 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Workerbb13435: ; preds = %bb13407, %bb13402 131*9880d681SAndroid Build Coastguard Worker %r0120.1 = phi i64 [ 0, %bb13407 ], [ %r0120.0, %bb13402 ] ; <i64> [#uses=0] 132*9880d681SAndroid Build Coastguard Worker %r1121.1 = phi i64 [ 0, %bb13407 ], [ %r1121.0, %bb13402 ] ; <i64> [#uses=0] 133*9880d681SAndroid Build Coastguard Worker %r3123.1 = phi i64 [ 0, %bb13407 ], [ %r3123.0, %bb13402 ] ; <i64> [#uses=0] 134*9880d681SAndroid Build Coastguard Worker %tmp13450 = mul i64 0, %tmp13312 ; <i64> [#uses=0] 135*9880d681SAndroid Build Coastguard Worker %tmp13455 = mul i64 0, %tmp13315 ; <i64> [#uses=0] 136*9880d681SAndroid Build Coastguard Worker %tmp13461 = add i64 0, %tmp1329013291 ; <i64> [#uses=1] 137*9880d681SAndroid Build Coastguard Worker %tmp13462 = mul i64 %tmp13461, 65535 ; <i64> [#uses=1] 138*9880d681SAndroid Build Coastguard Worker %tmp13466 = sub i64 %tmp13462, 0 ; <i64> [#uses=1] 139*9880d681SAndroid Build Coastguard Worker %tmp13526 = add i64 %tmp13466, 1 ; <i64> [#uses=1] 140*9880d681SAndroid Build Coastguard Worker %tmp13527 = add i64 %tmp13526, 0 ; <i64> [#uses=1] 141*9880d681SAndroid Build Coastguard Worker %tmp13528 = ashr i64 %tmp13527, 16 ; <i64> [#uses=4] 142*9880d681SAndroid Build Coastguard Worker %tmp13536 = sub i64 %tmp13528, 0 ; <i64> [#uses=1] 143*9880d681SAndroid Build Coastguard Worker %tmp13537 = shl i64 %tmp13536, 32 ; <i64> [#uses=1] 144*9880d681SAndroid Build Coastguard Worker %tmp13538 = and i64 %tmp13537, 281470681743360 ; <i64> [#uses=1] 145*9880d681SAndroid Build Coastguard Worker %tmp13542 = sub i64 %tmp13528, 0 ; <i64> [#uses=1] 146*9880d681SAndroid Build Coastguard Worker %tmp13543 = shl i64 %tmp13542, 16 ; <i64> [#uses=1] 147*9880d681SAndroid Build Coastguard Worker %tmp13544 = and i64 %tmp13543, 4294901760 ; <i64> [#uses=1] 148*9880d681SAndroid Build Coastguard Worker %tmp13548 = sub i64 %tmp13528, 0 ; <i64> [#uses=1] 149*9880d681SAndroid Build Coastguard Worker %tmp13549 = and i64 %tmp13548, 65535 ; <i64> [#uses=1] 150*9880d681SAndroid Build Coastguard Worker %tmp13539 = or i64 %tmp13538, 0 ; <i64> [#uses=1] 151*9880d681SAndroid Build Coastguard Worker %tmp13545 = or i64 %tmp13539, %tmp13549 ; <i64> [#uses=1] 152*9880d681SAndroid Build Coastguard Worker %tmp13550 = or i64 %tmp13545, %tmp13544 ; <i64> [#uses=1] 153*9880d681SAndroid Build Coastguard Worker %tmp1355213553 = trunc i64 %tmp13528 to i16 ; <i16> [#uses=1] 154*9880d681SAndroid Build Coastguard Worker br label %bb13567 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerbb13567: ; preds = %bb13435, %bb13236 157*9880d681SAndroid Build Coastguard Worker %tsp1040.0.0 = phi i64 [ %tmp13550, %bb13435 ], [ %tmp13225, %bb13236 ] ; <i64> [#uses=0] 158*9880d681SAndroid Build Coastguard Worker %tsp1040.1.0 = phi i16 [ %tmp1355213553, %bb13435 ], [ %tmp1322713228, %bb13236 ] ; <i16> [#uses=1] 159*9880d681SAndroid Build Coastguard Worker br i1 %tmp13238, label %bb13088, label %bb13572 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Workerbb13572: ; preds = %bb13567 162*9880d681SAndroid Build Coastguard Worker store i16 %tsp1040.1.0, i16* null, align 2 163*9880d681SAndroid Build Coastguard Worker br label %bb13088 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 166*9880d681SAndroid Build Coastguard Worker ret void 167*9880d681SAndroid Build Coastguard Worker} 168