brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · c95fc00 Raw
217 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s3 4	%struct.BITMAP = type { i16, i16, i32, i32, i32, i32, i32, i32, ptr, ptr }5	%struct.BltData = type { float, float, float, float }6	%struct.BltDepth = type { i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr }7	%struct.BltImg = type { i32, i8, i8, i8, float, ptr, ptr, i32, i32, ptr, ptr, ptr }8	%struct.BltOp = type { i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr }9	%struct.BltSh = type { i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr }10 11define void @t(ptr %depth, ptr %bop, i32 %mode) nounwind  {12; CHECK-LABEL: t:13; CHECK:       ## %bb.0: ## %entry14; CHECK-NEXT:    cmpl $18, %edx15; CHECK-NEXT:    je LBB0_316; CHECK-NEXT:  ## %bb.1: ## %entry17; CHECK-NEXT:    cmpl $1, %edx18; CHECK-NEXT:    jne LBB0_1019; CHECK-NEXT:    .p2align 420; CHECK-NEXT:  LBB0_2: ## %bb2898.us21; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=122; CHECK-NEXT:    jmp LBB0_223; CHECK-NEXT:  LBB0_3: ## %bb13086.preheader24; CHECK-NEXT:    movb $1, %al25; CHECK-NEXT:    .p2align 426; CHECK-NEXT:  LBB0_4: ## %bb1308827; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=128; CHECK-NEXT:    testb %al, %al29; CHECK-NEXT:    jne LBB0_530; CHECK-NEXT:  ## %bb.6: ## %bb1310131; CHECK-NEXT:    ## in Loop: Header=BB0_4 Depth=132; CHECK-NEXT:    xorl %ecx, %ecx33; CHECK-NEXT:    jmp LBB0_734; CHECK-NEXT:    .p2align 435; CHECK-NEXT:  LBB0_5: ## in Loop: Header=BB0_4 Depth=136; CHECK-NEXT:    movl $65535, %ecx ## imm = 0xFFFF37; CHECK-NEXT:  LBB0_7: ## %bb1310738; CHECK-NEXT:    ## in Loop: Header=BB0_4 Depth=139; CHECK-NEXT:    movl %ecx, %edx40; CHECK-NEXT:    shll $16, %edx41; CHECK-NEXT:    subl %ecx, %edx42; CHECK-NEXT:    incl %edx43; CHECK-NEXT:    shrl $16, %edx44; CHECK-NEXT:    subl %edx, %ecx45; CHECK-NEXT:    testw %cx, %cx46; CHECK-NEXT:    je LBB0_447; CHECK-NEXT:  ## %bb.8: ## %bb1323648; CHECK-NEXT:    ## in Loop: Header=BB0_4 Depth=149; CHECK-NEXT:    testb %al, %al50; CHECK-NEXT:    jne LBB0_451; CHECK-NEXT:  ## %bb.9: ## %bb1357252; CHECK-NEXT:    ## in Loop: Header=BB0_4 Depth=153; CHECK-NEXT:    movzwl %cx, %ecx54; CHECK-NEXT:    movl %ecx, %edx55; CHECK-NEXT:    shll $16, %edx56; CHECK-NEXT:    subl %ecx, %edx57; CHECK-NEXT:    incl %edx58; CHECK-NEXT:    shrl $16, %edx59; CHECK-NEXT:    movw %dx, 060; CHECK-NEXT:    jmp LBB0_461; CHECK-NEXT:  LBB0_10: ## %return62; CHECK-NEXT:    retq63entry:64	switch i32 %mode, label %return [65		 i32 1, label %bb2898.us66		 i32 18, label %bb13086.preheader67	]68 69bb13086.preheader:		; preds = %entry70	%tmp13098 = icmp eq i32 0, 0		; <i1> [#uses=1]71	%tmp13238 = icmp eq i32 0, 0		; <i1> [#uses=1]72	br label %bb1308873 74bb2898.us:		; preds = %bb2898.us, %entry75	br label %bb2898.us76 77bb13088:		; preds = %bb13572, %bb13567, %bb13107, %bb13086.preheader78	br i1 %tmp13098, label %bb13107, label %bb1310179 80bb13101:		; preds = %bb1308881	br label %bb1310782 83bb13107:		; preds = %bb13101, %bb1308884	%iftmp.684.0 = phi i32 [ 0, %bb13101 ], [ 65535, %bb13088 ]		; <i32> [#uses=2]85	%tmp13111 = load i64, ptr null, align 8		; <i64> [#uses=3]86	%tmp13116 = lshr i64 %tmp13111, 16		; <i64> [#uses=1]87	%tmp1311613117 = trunc i64 %tmp13116 to i32		; <i32> [#uses=1]88	%tmp13118 = and i32 %tmp1311613117, 65535		; <i32> [#uses=1]89	%tmp13120 = lshr i64 %tmp13111, 32		; <i64> [#uses=1]90	%tmp1312013121 = trunc i64 %tmp13120 to i32		; <i32> [#uses=1]91	%tmp13122 = and i32 %tmp1312013121, 65535		; <i32> [#uses=2]92	%tmp13124 = lshr i64 %tmp13111, 48		; <i64> [#uses=1]93	%tmp1312413125 = trunc i64 %tmp13124 to i32		; <i32> [#uses=2]94	%tmp1314013141not = xor i16 0, -1		; <i16> [#uses=1]95	%tmp1314013141not13142 = zext i16 %tmp1314013141not to i32		; <i32> [#uses=3]96	%tmp13151 = mul i32 %tmp13122, %tmp1314013141not13142		; <i32> [#uses=1]97	%tmp13154 = mul i32 %tmp1312413125, %tmp1314013141not13142		; <i32> [#uses=1]98	%tmp13157 = mul i32 %iftmp.684.0, %tmp1314013141not13142		; <i32> [#uses=1]99	%tmp13171 = add i32 %tmp13151, 1		; <i32> [#uses=1]100	%tmp13172 = add i32 %tmp13171, 0		; <i32> [#uses=1]101	%tmp13176 = add i32 %tmp13154, 1		; <i32> [#uses=1]102	%tmp13177 = add i32 %tmp13176, 0		; <i32> [#uses=1]103	%tmp13181 = add i32 %tmp13157, 1		; <i32> [#uses=1]104	%tmp13182 = add i32 %tmp13181, 0		; <i32> [#uses=1]105	%tmp13188 = lshr i32 %tmp13172, 16		; <i32> [#uses=1]106	%tmp13190 = lshr i32 %tmp13177, 16		; <i32> [#uses=1]107	%tmp13192 = lshr i32 %tmp13182, 16		; <i32> [#uses=1]108	%tmp13198 = sub i32 %tmp13118, 0		; <i32> [#uses=1]109	%tmp13201 = sub i32 %tmp13122, %tmp13188		; <i32> [#uses=1]110	%tmp13204 = sub i32 %tmp1312413125, %tmp13190		; <i32> [#uses=1]111	%tmp13207 = sub i32 %iftmp.684.0, %tmp13192		; <i32> [#uses=1]112	%tmp1320813209 = zext i32 %tmp13204 to i64		; <i64> [#uses=1]113	%tmp13211 = shl i64 %tmp1320813209, 48		; <i64> [#uses=1]114	%tmp1321213213 = zext i32 %tmp13201 to i64		; <i64> [#uses=1]115	%tmp13214 = shl i64 %tmp1321213213, 32		; <i64> [#uses=1]116	%tmp13215 = and i64 %tmp13214, 281470681743360		; <i64> [#uses=1]117	%tmp1321713218 = zext i32 %tmp13198 to i64		; <i64> [#uses=1]118	%tmp13219 = shl i64 %tmp1321713218, 16		; <i64> [#uses=1]119	%tmp13220 = and i64 %tmp13219, 4294901760		; <i64> [#uses=1]120	%tmp13216 = or i64 %tmp13211, 0		; <i64> [#uses=1]121	%tmp13221 = or i64 %tmp13216, %tmp13215		; <i64> [#uses=1]122	%tmp13225 = or i64 %tmp13221, %tmp13220		; <i64> [#uses=4]123	%tmp1322713228 = trunc i32 %tmp13207 to i16		; <i16> [#uses=4]124	%tmp13233 = icmp eq i16 %tmp1322713228, 0		; <i1> [#uses=1]125	br i1 %tmp13233, label %bb13088, label %bb13236126 127bb13236:		; preds = %bb13107128	br i1 false, label %bb13567, label %bb13252129 130bb13252:		; preds = %bb13236131	%tmp1329013291 = zext i16 %tmp1322713228 to i64		; <i64> [#uses=8]132	%tmp13296 = lshr i64 %tmp13225, 16		; <i64> [#uses=1]133	%tmp13297 = and i64 %tmp13296, 65535		; <i64> [#uses=1]134	%tmp13299 = lshr i64 %tmp13225, 32		; <i64> [#uses=1]135	%tmp13300 = and i64 %tmp13299, 65535		; <i64> [#uses=1]136	%tmp13302 = lshr i64 %tmp13225, 48		; <i64> [#uses=1]137	%tmp13306 = sub i64 %tmp1329013291, 0		; <i64> [#uses=0]138	%tmp13309 = sub i64 %tmp1329013291, %tmp13297		; <i64> [#uses=1]139	%tmp13312 = sub i64 %tmp1329013291, %tmp13300		; <i64> [#uses=1]140	%tmp13315 = sub i64 %tmp1329013291, %tmp13302		; <i64> [#uses=1]141	%tmp13318 = mul i64 %tmp1329013291, %tmp1329013291		; <i64> [#uses=1]142	br i1 false, label %bb13339, label %bb13324143 144bb13324:		; preds = %bb13252145	br i1 false, label %bb13339, label %bb13330146 147bb13330:		; preds = %bb13324148	%tmp13337 = sdiv i64 0, 0		; <i64> [#uses=1]149	br label %bb13339150 151bb13339:		; preds = %bb13330, %bb13324, %bb13252152	%r0120.0 = phi i64 [ %tmp13337, %bb13330 ], [ 0, %bb13252 ], [ 4294836225, %bb13324 ]		; <i64> [#uses=1]153	br i1 false, label %bb13360, label %bb13345154 155bb13345:		; preds = %bb13339156	br i1 false, label %bb13360, label %bb13351157 158bb13351:		; preds = %bb13345159	%tmp13354 = mul i64 0, %tmp13318		; <i64> [#uses=1]160	%tmp13357 = sub i64 %tmp1329013291, %tmp13309		; <i64> [#uses=1]161	%tmp13358 = sdiv i64 %tmp13354, %tmp13357		; <i64> [#uses=1]162	br label %bb13360163 164bb13360:		; preds = %bb13351, %bb13345, %bb13339165	%r1121.0 = phi i64 [ %tmp13358, %bb13351 ], [ 0, %bb13339 ], [ 4294836225, %bb13345 ]		; <i64> [#uses=1]166	br i1 false, label %bb13402, label %bb13387167 168bb13387:		; preds = %bb13360169	br label %bb13402170 171bb13402:		; preds = %bb13387, %bb13360172	%r3123.0 = phi i64 [ 0, %bb13360 ], [ 4294836225, %bb13387 ]		; <i64> [#uses=1]173	%tmp13404 = icmp eq i16 %tmp1322713228, -1		; <i1> [#uses=1]174	br i1 %tmp13404, label %bb13435, label %bb13407175 176bb13407:		; preds = %bb13402177	br label %bb13435178 179bb13435:		; preds = %bb13407, %bb13402180	%r0120.1 = phi i64 [ 0, %bb13407 ], [ %r0120.0, %bb13402 ]		; <i64> [#uses=0]181	%r1121.1 = phi i64 [ 0, %bb13407 ], [ %r1121.0, %bb13402 ]		; <i64> [#uses=0]182	%r3123.1 = phi i64 [ 0, %bb13407 ], [ %r3123.0, %bb13402 ]		; <i64> [#uses=0]183	%tmp13450 = mul i64 0, %tmp13312		; <i64> [#uses=0]184	%tmp13455 = mul i64 0, %tmp13315		; <i64> [#uses=0]185	%tmp13461 = add i64 0, %tmp1329013291		; <i64> [#uses=1]186	%tmp13462 = mul i64 %tmp13461, 65535		; <i64> [#uses=1]187	%tmp13466 = sub i64 %tmp13462, 0		; <i64> [#uses=1]188	%tmp13526 = add i64 %tmp13466, 1		; <i64> [#uses=1]189	%tmp13527 = add i64 %tmp13526, 0		; <i64> [#uses=1]190	%tmp13528 = ashr i64 %tmp13527, 16		; <i64> [#uses=4]191	%tmp13536 = sub i64 %tmp13528, 0		; <i64> [#uses=1]192	%tmp13537 = shl i64 %tmp13536, 32		; <i64> [#uses=1]193	%tmp13538 = and i64 %tmp13537, 281470681743360		; <i64> [#uses=1]194	%tmp13542 = sub i64 %tmp13528, 0		; <i64> [#uses=1]195	%tmp13543 = shl i64 %tmp13542, 16		; <i64> [#uses=1]196	%tmp13544 = and i64 %tmp13543, 4294901760		; <i64> [#uses=1]197	%tmp13548 = sub i64 %tmp13528, 0		; <i64> [#uses=1]198	%tmp13549 = and i64 %tmp13548, 65535		; <i64> [#uses=1]199	%tmp13539 = or i64 %tmp13538, 0		; <i64> [#uses=1]200	%tmp13545 = or i64 %tmp13539, %tmp13549		; <i64> [#uses=1]201	%tmp13550 = or i64 %tmp13545, %tmp13544		; <i64> [#uses=1]202	%tmp1355213553 = trunc i64 %tmp13528 to i16		; <i16> [#uses=1]203	br label %bb13567204 205bb13567:		; preds = %bb13435, %bb13236206	%tsp1040.0.0 = phi i64 [ %tmp13550, %bb13435 ], [ %tmp13225, %bb13236 ]		; <i64> [#uses=0]207	%tsp1040.1.0 = phi i16 [ %tmp1355213553, %bb13435 ], [ %tmp1322713228, %bb13236 ]		; <i16> [#uses=1]208	br i1 %tmp13238, label %bb13088, label %bb13572209 210bb13572:		; preds = %bb13567211	store i16 %tsp1040.1.0, ptr null, align 2212	br label %bb13088213 214return:		; preds = %entry215	ret void216}217