1192 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefix=X863 4; Incremental updates of the instruction depths should be enough for this test5; case.6; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=haswell -machine-combiner-inc-threshold=0| FileCheck %s --check-prefix=X64-HSW7 8; Function Attrs: norecurse nounwind readnone uwtable9define i32 @mult(i32, i32) local_unnamed_addr #0 {10; X86-LABEL: mult:11; X86: # %bb.0:12; X86-NEXT: pushl %esi13; X86-NEXT: .cfi_def_cfa_offset 814; X86-NEXT: .cfi_offset %esi, -815; X86-NEXT: movl {{[0-9]+}}(%esp), %edx16; X86-NEXT: cmpl $2, %edx17; X86-NEXT: movl $1, %eax18; X86-NEXT: movl $1, %esi19; X86-NEXT: jge .LBB0_220; X86-NEXT: # %bb.1:21; X86-NEXT: movl %edx, %esi22; X86-NEXT: .LBB0_2:23; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx24; X86-NEXT: testl %edx, %edx25; X86-NEXT: je .LBB0_426; X86-NEXT: # %bb.3:27; X86-NEXT: movl %esi, %eax28; X86-NEXT: .LBB0_4:29; X86-NEXT: decl %ecx30; X86-NEXT: cmpl $31, %ecx31; X86-NEXT: ja .LBB0_3532; X86-NEXT: # %bb.5:33; X86-NEXT: jmpl *.LJTI0_0(,%ecx,4)34; X86-NEXT: .LBB0_6:35; X86-NEXT: addl %eax, %eax36; X86-NEXT: popl %esi37; X86-NEXT: .cfi_def_cfa_offset 438; X86-NEXT: retl39; X86-NEXT: .LBB0_7:40; X86-NEXT: .cfi_def_cfa_offset 841; X86-NEXT: leal (%eax,%eax,8), %ecx42; X86-NEXT: leal (%ecx,%ecx,2), %ecx43; X86-NEXT: jmp .LBB0_944; X86-NEXT: .LBB0_8:45; X86-NEXT: movl %eax, %ecx46; X86-NEXT: shll $4, %ecx47; X86-NEXT: jmp .LBB0_948; X86-NEXT: .LBB0_10:49; X86-NEXT: leal (%eax,%eax,4), %eax50; X86-NEXT: jmp .LBB0_1851; X86-NEXT: .LBB0_11:52; X86-NEXT: shll $2, %eax53; X86-NEXT: jmp .LBB0_1854; X86-NEXT: .LBB0_13:55; X86-NEXT: leal (%eax,%eax,2), %ecx56; X86-NEXT: jmp .LBB0_1457; X86-NEXT: .LBB0_15:58; X86-NEXT: addl %eax, %eax59; X86-NEXT: jmp .LBB0_1260; X86-NEXT: .LBB0_16:61; X86-NEXT: leal (%eax,%eax,4), %ecx62; X86-NEXT: leal (%ecx,%ecx,4), %ecx63; X86-NEXT: jmp .LBB0_964; X86-NEXT: .LBB0_17:65; X86-NEXT: leal (%eax,%eax,4), %eax66; X86-NEXT: jmp .LBB0_1267; X86-NEXT: .LBB0_19:68; X86-NEXT: shll $4, %eax69; X86-NEXT: popl %esi70; X86-NEXT: .cfi_def_cfa_offset 471; X86-NEXT: retl72; X86-NEXT: .LBB0_20:73; X86-NEXT: .cfi_def_cfa_offset 874; X86-NEXT: shll $2, %eax75; X86-NEXT: popl %esi76; X86-NEXT: .cfi_def_cfa_offset 477; X86-NEXT: retl78; X86-NEXT: .LBB0_21:79; X86-NEXT: .cfi_def_cfa_offset 880; X86-NEXT: shll $3, %eax81; X86-NEXT: popl %esi82; X86-NEXT: .cfi_def_cfa_offset 483; X86-NEXT: retl84; X86-NEXT: .LBB0_22:85; X86-NEXT: .cfi_def_cfa_offset 886; X86-NEXT: shll $5, %eax87; X86-NEXT: popl %esi88; X86-NEXT: .cfi_def_cfa_offset 489; X86-NEXT: retl90; X86-NEXT: .LBB0_23:91; X86-NEXT: .cfi_def_cfa_offset 892; X86-NEXT: addl %eax, %eax93; X86-NEXT: .LBB0_33:94; X86-NEXT: leal (%eax,%eax,8), %eax95; X86-NEXT: popl %esi96; X86-NEXT: .cfi_def_cfa_offset 497; X86-NEXT: retl98; X86-NEXT: .LBB0_24:99; X86-NEXT: .cfi_def_cfa_offset 8100; X86-NEXT: leal (%eax,%eax,4), %ecx101; X86-NEXT: .LBB0_14:102; X86-NEXT: leal (%eax,%ecx,4), %eax103; X86-NEXT: popl %esi104; X86-NEXT: .cfi_def_cfa_offset 4105; X86-NEXT: retl106; X86-NEXT: .LBB0_25:107; X86-NEXT: .cfi_def_cfa_offset 8108; X86-NEXT: addl %eax, %eax109; X86-NEXT: jmp .LBB0_18110; X86-NEXT: .LBB0_26:111; X86-NEXT: leal (%eax,%eax,4), %ecx112; X86-NEXT: leal (%eax,%ecx,4), %ecx113; X86-NEXT: jmp .LBB0_9114; X86-NEXT: .LBB0_27:115; X86-NEXT: leal (%eax,%eax), %ecx116; X86-NEXT: shll $4, %eax117; X86-NEXT: jmp .LBB0_28118; X86-NEXT: .LBB0_29:119; X86-NEXT: leal (,%eax,8), %ecx120; X86-NEXT: jmp .LBB0_38121; X86-NEXT: .LBB0_30:122; X86-NEXT: leal (%eax,%eax,8), %ecx123; X86-NEXT: jmp .LBB0_32124; X86-NEXT: .LBB0_31:125; X86-NEXT: leal (%eax,%eax,4), %ecx126; X86-NEXT: .LBB0_32:127; X86-NEXT: leal (%eax,%ecx,2), %eax128; X86-NEXT: popl %esi129; X86-NEXT: .cfi_def_cfa_offset 4130; X86-NEXT: retl131; X86-NEXT: .LBB0_34:132; X86-NEXT: .cfi_def_cfa_offset 8133; X86-NEXT: movl %eax, %ecx134; X86-NEXT: shll $5, %ecx135; X86-NEXT: jmp .LBB0_38136; X86-NEXT: .LBB0_35:137; X86-NEXT: xorl %eax, %eax138; X86-NEXT: .LBB0_36:139; X86-NEXT: popl %esi140; X86-NEXT: .cfi_def_cfa_offset 4141; X86-NEXT: retl142; X86-NEXT: .LBB0_37:143; X86-NEXT: .cfi_def_cfa_offset 8144; X86-NEXT: leal (%eax,%eax,2), %ecx145; X86-NEXT: shll $3, %ecx146; X86-NEXT: .LBB0_38:147; X86-NEXT: subl %eax, %ecx148; X86-NEXT: movl %ecx, %eax149; X86-NEXT: popl %esi150; X86-NEXT: .cfi_def_cfa_offset 4151; X86-NEXT: retl152; X86-NEXT: .LBB0_39:153; X86-NEXT: .cfi_def_cfa_offset 8154; X86-NEXT: shll $2, %eax155; X86-NEXT: .LBB0_12:156; X86-NEXT: leal (%eax,%eax,4), %eax157; X86-NEXT: popl %esi158; X86-NEXT: .cfi_def_cfa_offset 4159; X86-NEXT: retl160; X86-NEXT: .LBB0_40:161; X86-NEXT: .cfi_def_cfa_offset 8162; X86-NEXT: shll $3, %eax163; X86-NEXT: jmp .LBB0_18164; X86-NEXT: .LBB0_41:165; X86-NEXT: leal (%eax,%eax,8), %ecx166; X86-NEXT: leal (%ecx,%ecx,2), %ecx167; X86-NEXT: addl %eax, %eax168; X86-NEXT: .LBB0_9:169; X86-NEXT: addl %ecx, %eax170; X86-NEXT: popl %esi171; X86-NEXT: .cfi_def_cfa_offset 4172; X86-NEXT: retl173; X86-NEXT: .LBB0_42:174; X86-NEXT: .cfi_def_cfa_offset 8175; X86-NEXT: leal (%eax,%eax), %ecx176; X86-NEXT: shll $5, %eax177; X86-NEXT: .LBB0_28:178; X86-NEXT: subl %ecx, %eax179; X86-NEXT: popl %esi180; X86-NEXT: .cfi_def_cfa_offset 4181; X86-NEXT: retl182; X86-NEXT: .LBB0_43:183; X86-NEXT: .cfi_def_cfa_offset 8184; X86-NEXT: leal (%eax,%eax,8), %eax185; X86-NEXT: .LBB0_18:186; X86-NEXT: leal (%eax,%eax,2), %eax187; X86-NEXT: popl %esi188; X86-NEXT: .cfi_def_cfa_offset 4189; X86-NEXT: retl190;191; X64-HSW-LABEL: mult:192; X64-HSW: # %bb.0:193; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi194; X64-HSW-NEXT: cmpl $2, %esi195; X64-HSW-NEXT: movl $1, %ecx196; X64-HSW-NEXT: movl %esi, %eax197; X64-HSW-NEXT: cmovgel %ecx, %eax198; X64-HSW-NEXT: testl %esi, %esi199; X64-HSW-NEXT: cmovel %ecx, %eax200; X64-HSW-NEXT: decl %edi201; X64-HSW-NEXT: cmpl $31, %edi202; X64-HSW-NEXT: ja .LBB0_31203; X64-HSW-NEXT: # %bb.1:204; X64-HSW-NEXT: jmpq *.LJTI0_0(,%rdi,8)205; X64-HSW-NEXT: .LBB0_2:206; X64-HSW-NEXT: addl %eax, %eax207; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax208; X64-HSW-NEXT: retq209; X64-HSW-NEXT: .LBB0_3:210; X64-HSW-NEXT: leal (%rax,%rax,8), %ecx211; X64-HSW-NEXT: leal (%rcx,%rcx,2), %ecx212; X64-HSW-NEXT: jmp .LBB0_22213; X64-HSW-NEXT: .LBB0_4:214; X64-HSW-NEXT: movl %eax, %ecx215; X64-HSW-NEXT: shll $4, %ecx216; X64-HSW-NEXT: jmp .LBB0_22217; X64-HSW-NEXT: .LBB0_5:218; X64-HSW-NEXT: leal (%rax,%rax,4), %eax219; X64-HSW-NEXT: .LBB0_13:220; X64-HSW-NEXT: leal (%rax,%rax,2), %eax221; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax222; X64-HSW-NEXT: retq223; X64-HSW-NEXT: .LBB0_6:224; X64-HSW-NEXT: shll $2, %eax225; X64-HSW-NEXT: leal (%rax,%rax,2), %eax226; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax227; X64-HSW-NEXT: retq228; X64-HSW-NEXT: .LBB0_8:229; X64-HSW-NEXT: leal (%rax,%rax,2), %ecx230; X64-HSW-NEXT: leal (%rax,%rcx,4), %eax231; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax232; X64-HSW-NEXT: retq233; X64-HSW-NEXT: .LBB0_10:234; X64-HSW-NEXT: addl %eax, %eax235; X64-HSW-NEXT: .LBB0_7:236; X64-HSW-NEXT: leal (%rax,%rax,4), %eax237; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax238; X64-HSW-NEXT: retq239; X64-HSW-NEXT: .LBB0_11:240; X64-HSW-NEXT: leal (%rax,%rax,4), %ecx241; X64-HSW-NEXT: leal (%rcx,%rcx,4), %ecx242; X64-HSW-NEXT: jmp .LBB0_22243; X64-HSW-NEXT: .LBB0_12:244; X64-HSW-NEXT: leal (%rax,%rax,4), %eax245; X64-HSW-NEXT: leal (%rax,%rax,4), %eax246; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax247; X64-HSW-NEXT: retq248; X64-HSW-NEXT: .LBB0_14:249; X64-HSW-NEXT: shll $4, %eax250; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax251; X64-HSW-NEXT: retq252; X64-HSW-NEXT: .LBB0_15:253; X64-HSW-NEXT: shll $2, %eax254; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax255; X64-HSW-NEXT: retq256; X64-HSW-NEXT: .LBB0_16:257; X64-HSW-NEXT: shll $3, %eax258; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax259; X64-HSW-NEXT: retq260; X64-HSW-NEXT: .LBB0_17:261; X64-HSW-NEXT: shll $5, %eax262; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax263; X64-HSW-NEXT: retq264; X64-HSW-NEXT: .LBB0_18:265; X64-HSW-NEXT: addl %eax, %eax266; X64-HSW-NEXT: .LBB0_29:267; X64-HSW-NEXT: leal (%rax,%rax,8), %eax268; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax269; X64-HSW-NEXT: retq270; X64-HSW-NEXT: .LBB0_19:271; X64-HSW-NEXT: leal (%rax,%rax,4), %ecx272; X64-HSW-NEXT: leal (%rax,%rcx,4), %eax273; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax274; X64-HSW-NEXT: retq275; X64-HSW-NEXT: .LBB0_20:276; X64-HSW-NEXT: addl %eax, %eax277; X64-HSW-NEXT: leal (%rax,%rax,2), %eax278; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax279; X64-HSW-NEXT: retq280; X64-HSW-NEXT: .LBB0_21:281; X64-HSW-NEXT: leal (%rax,%rax,4), %ecx282; X64-HSW-NEXT: leal (%rax,%rcx,4), %ecx283; X64-HSW-NEXT: .LBB0_22:284; X64-HSW-NEXT: addl %eax, %ecx285; X64-HSW-NEXT: movl %ecx, %eax286; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax287; X64-HSW-NEXT: retq288; X64-HSW-NEXT: .LBB0_23:289; X64-HSW-NEXT: leal (%rax,%rax), %ecx290; X64-HSW-NEXT: shll $4, %eax291; X64-HSW-NEXT: subl %ecx, %eax292; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax293; X64-HSW-NEXT: retq294; X64-HSW-NEXT: .LBB0_25:295; X64-HSW-NEXT: leal (,%rax,8), %ecx296; X64-HSW-NEXT: jmp .LBB0_34297; X64-HSW-NEXT: .LBB0_26:298; X64-HSW-NEXT: leal (%rax,%rax,8), %ecx299; X64-HSW-NEXT: leal (%rax,%rcx,2), %eax300; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax301; X64-HSW-NEXT: retq302; X64-HSW-NEXT: .LBB0_27:303; X64-HSW-NEXT: leal (%rax,%rax,4), %ecx304; X64-HSW-NEXT: leal (%rax,%rcx,2), %eax305; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax306; X64-HSW-NEXT: retq307; X64-HSW-NEXT: .LBB0_30:308; X64-HSW-NEXT: movl %eax, %ecx309; X64-HSW-NEXT: shll $5, %ecx310; X64-HSW-NEXT: jmp .LBB0_34311; X64-HSW-NEXT: .LBB0_31:312; X64-HSW-NEXT: xorl %eax, %eax313; X64-HSW-NEXT: .LBB0_32:314; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax315; X64-HSW-NEXT: retq316; X64-HSW-NEXT: .LBB0_33:317; X64-HSW-NEXT: leal (%rax,%rax,2), %ecx318; X64-HSW-NEXT: shll $3, %ecx319; X64-HSW-NEXT: .LBB0_34:320; X64-HSW-NEXT: subl %eax, %ecx321; X64-HSW-NEXT: movl %ecx, %eax322; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax323; X64-HSW-NEXT: retq324; X64-HSW-NEXT: .LBB0_36:325; X64-HSW-NEXT: shll $2, %eax326; X64-HSW-NEXT: leal (%rax,%rax,4), %eax327; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax328; X64-HSW-NEXT: retq329; X64-HSW-NEXT: .LBB0_37:330; X64-HSW-NEXT: shll $3, %eax331; X64-HSW-NEXT: leal (%rax,%rax,2), %eax332; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax333; X64-HSW-NEXT: retq334; X64-HSW-NEXT: .LBB0_38:335; X64-HSW-NEXT: leal (%rax,%rax,8), %ecx336; X64-HSW-NEXT: leal (%rcx,%rcx,2), %ecx337; X64-HSW-NEXT: addl %eax, %eax338; X64-HSW-NEXT: addl %ecx, %eax339; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax340; X64-HSW-NEXT: retq341; X64-HSW-NEXT: .LBB0_39:342; X64-HSW-NEXT: leal (%rax,%rax), %ecx343; X64-HSW-NEXT: shll $5, %eax344; X64-HSW-NEXT: subl %ecx, %eax345; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax346; X64-HSW-NEXT: retq347; X64-HSW-NEXT: .LBB0_40:348; X64-HSW-NEXT: leal (%rax,%rax,8), %eax349; X64-HSW-NEXT: leal (%rax,%rax,2), %eax350; X64-HSW-NEXT: # kill: def $eax killed $eax killed $rax351; X64-HSW-NEXT: retq352 %3 = icmp eq i32 %1, 0353 %4 = icmp sgt i32 %1, 1354 %5 = or i1 %3, %4355 %6 = select i1 %5, i32 1, i32 %1356 switch i32 %0, label %69 [357 i32 1, label %70358 i32 2, label %7359 i32 3, label %9360 i32 4, label %11361 i32 5, label %13362 i32 6, label %15363 i32 7, label %17364 i32 8, label %19365 i32 9, label %21366 i32 10, label %23367 i32 11, label %25368 i32 12, label %27369 i32 13, label %29370 i32 14, label %31371 i32 15, label %33372 i32 16, label %35373 i32 17, label %37374 i32 18, label %39375 i32 19, label %41376 i32 20, label %43377 i32 21, label %45378 i32 22, label %47379 i32 23, label %49380 i32 24, label %51381 i32 25, label %53382 i32 26, label %55383 i32 27, label %57384 i32 28, label %59385 i32 29, label %61386 i32 30, label %63387 i32 31, label %65388 i32 32, label %67389 ]390 391; <label>:7: ; preds = %2392 %8 = shl nsw i32 %6, 1393 br label %70394 395; <label>:9: ; preds = %2396 %10 = mul nsw i32 %6, 3397 br label %70398 399; <label>:11: ; preds = %2400 %12 = shl nsw i32 %6, 2401 br label %70402 403; <label>:13: ; preds = %2404 %14 = mul nsw i32 %6, 5405 br label %70406 407; <label>:15: ; preds = %2408 %16 = mul nsw i32 %6, 6409 br label %70410 411; <label>:17: ; preds = %2412 %18 = mul nsw i32 %6, 7413 br label %70414 415; <label>:19: ; preds = %2416 %20 = shl nsw i32 %6, 3417 br label %70418 419; <label>:21: ; preds = %2420 %22 = mul nsw i32 %6, 9421 br label %70422 423; <label>:23: ; preds = %2424 %24 = mul nsw i32 %6, 10425 br label %70426 427; <label>:25: ; preds = %2428 %26 = mul nsw i32 %6, 11429 br label %70430 431; <label>:27: ; preds = %2432 %28 = mul nsw i32 %6, 12433 br label %70434 435; <label>:29: ; preds = %2436 %30 = mul nsw i32 %6, 13437 br label %70438 439; <label>:31: ; preds = %2440 %32 = mul nsw i32 %6, 14441 br label %70442 443; <label>:33: ; preds = %2444 %34 = mul nsw i32 %6, 15445 br label %70446 447; <label>:35: ; preds = %2448 %36 = shl nsw i32 %6, 4449 br label %70450 451; <label>:37: ; preds = %2452 %38 = mul nsw i32 %6, 17453 br label %70454 455; <label>:39: ; preds = %2456 %40 = mul nsw i32 %6, 18457 br label %70458 459; <label>:41: ; preds = %2460 %42 = mul nsw i32 %6, 19461 br label %70462 463; <label>:43: ; preds = %2464 %44 = mul nsw i32 %6, 20465 br label %70466 467; <label>:45: ; preds = %2468 %46 = mul nsw i32 %6, 21469 br label %70470 471; <label>:47: ; preds = %2472 %48 = mul nsw i32 %6, 22473 br label %70474 475; <label>:49: ; preds = %2476 %50 = mul nsw i32 %6, 23477 br label %70478 479; <label>:51: ; preds = %2480 %52 = mul nsw i32 %6, 24481 br label %70482 483; <label>:53: ; preds = %2484 %54 = mul nsw i32 %6, 25485 br label %70486 487; <label>:55: ; preds = %2488 %56 = mul nsw i32 %6, 26489 br label %70490 491; <label>:57: ; preds = %2492 %58 = mul nsw i32 %6, 27493 br label %70494 495; <label>:59: ; preds = %2496 %60 = mul nsw i32 %6, 28497 br label %70498 499; <label>:61: ; preds = %2500 %62 = mul nsw i32 %6, 29501 br label %70502 503; <label>:63: ; preds = %2504 %64 = mul nsw i32 %6, 30505 br label %70506 507; <label>:65: ; preds = %2508 %66 = mul nsw i32 %6, 31509 br label %70510 511; <label>:67: ; preds = %2512 %68 = shl nsw i32 %6, 5513 br label %70514 515; <label>:69: ; preds = %2516 br label %70517 518; <label>:70: ; preds = %2, %69, %67, %65, %63, %61, %59, %57, %55, %53, %51, %49, %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25, %23, %21, %19, %17, %15, %13, %11, %9, %7519 %71 = phi i32 [ %8, %7 ], [ %10, %9 ], [ %12, %11 ], [ %14, %13 ], [ %16, %15 ], [ %18, %17 ], [ %20, %19 ], [ %22, %21 ], [ %24, %23 ], [ %26, %25 ], [ %28, %27 ], [ %30, %29 ], [ %32, %31 ], [ %34, %33 ], [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %42, %41 ], [ %44, %43 ], [ %46, %45 ], [ %48, %47 ], [ %50, %49 ], [ %52, %51 ], [ %54, %53 ], [ %56, %55 ], [ %58, %57 ], [ %60, %59 ], [ %62, %61 ], [ %64, %63 ], [ %66, %65 ], [ %68, %67 ], [ 0, %69 ], [ %6, %2 ]520 ret i32 %71521}522 523; Function Attrs: norecurse nounwind readnone uwtable524define i32 @foo() local_unnamed_addr #0 {525; X86-LABEL: foo:526; X86: # %bb.0:527; X86-NEXT: pushl %ebp528; X86-NEXT: .cfi_def_cfa_offset 8529; X86-NEXT: pushl %ebx530; X86-NEXT: .cfi_def_cfa_offset 12531; X86-NEXT: pushl %edi532; X86-NEXT: .cfi_def_cfa_offset 16533; X86-NEXT: pushl %esi534; X86-NEXT: .cfi_def_cfa_offset 20535; X86-NEXT: .cfi_offset %esi, -20536; X86-NEXT: .cfi_offset %edi, -16537; X86-NEXT: .cfi_offset %ebx, -12538; X86-NEXT: .cfi_offset %ebp, -8539; X86-NEXT: pushl $0540; X86-NEXT: .cfi_adjust_cfa_offset 4541; X86-NEXT: pushl $1542; X86-NEXT: .cfi_adjust_cfa_offset 4543; X86-NEXT: calll mult@PLT544; X86-NEXT: addl $8, %esp545; X86-NEXT: .cfi_adjust_cfa_offset -8546; X86-NEXT: movl %eax, %esi547; X86-NEXT: xorl $1, %esi548; X86-NEXT: pushl $1549; X86-NEXT: .cfi_adjust_cfa_offset 4550; X86-NEXT: pushl $2551; X86-NEXT: .cfi_adjust_cfa_offset 4552; X86-NEXT: calll mult@PLT553; X86-NEXT: addl $8, %esp554; X86-NEXT: .cfi_adjust_cfa_offset -8555; X86-NEXT: movl %eax, %edi556; X86-NEXT: xorl $2, %edi557; X86-NEXT: orl %esi, %edi558; X86-NEXT: pushl $1559; X86-NEXT: .cfi_adjust_cfa_offset 4560; X86-NEXT: pushl $3561; X86-NEXT: .cfi_adjust_cfa_offset 4562; X86-NEXT: calll mult@PLT563; X86-NEXT: addl $8, %esp564; X86-NEXT: .cfi_adjust_cfa_offset -8565; X86-NEXT: movl %eax, %ebx566; X86-NEXT: xorl $3, %ebx567; X86-NEXT: pushl $2568; X86-NEXT: .cfi_adjust_cfa_offset 4569; X86-NEXT: pushl $4570; X86-NEXT: .cfi_adjust_cfa_offset 4571; X86-NEXT: calll mult@PLT572; X86-NEXT: addl $8, %esp573; X86-NEXT: .cfi_adjust_cfa_offset -8574; X86-NEXT: movl %eax, %esi575; X86-NEXT: xorl $4, %esi576; X86-NEXT: orl %ebx, %esi577; X86-NEXT: orl %edi, %esi578; X86-NEXT: pushl $2579; X86-NEXT: .cfi_adjust_cfa_offset 4580; X86-NEXT: pushl $5581; X86-NEXT: .cfi_adjust_cfa_offset 4582; X86-NEXT: calll mult@PLT583; X86-NEXT: addl $8, %esp584; X86-NEXT: .cfi_adjust_cfa_offset -8585; X86-NEXT: movl %eax, %edi586; X86-NEXT: xorl $5, %edi587; X86-NEXT: pushl $3588; X86-NEXT: .cfi_adjust_cfa_offset 4589; X86-NEXT: pushl $6590; X86-NEXT: .cfi_adjust_cfa_offset 4591; X86-NEXT: calll mult@PLT592; X86-NEXT: addl $8, %esp593; X86-NEXT: .cfi_adjust_cfa_offset -8594; X86-NEXT: movl %eax, %ebx595; X86-NEXT: xorl $6, %ebx596; X86-NEXT: orl %edi, %ebx597; X86-NEXT: pushl $3598; X86-NEXT: .cfi_adjust_cfa_offset 4599; X86-NEXT: pushl $7600; X86-NEXT: .cfi_adjust_cfa_offset 4601; X86-NEXT: calll mult@PLT602; X86-NEXT: addl $8, %esp603; X86-NEXT: .cfi_adjust_cfa_offset -8604; X86-NEXT: movl %eax, %edi605; X86-NEXT: xorl $7, %edi606; X86-NEXT: orl %ebx, %edi607; X86-NEXT: orl %esi, %edi608; X86-NEXT: pushl $4609; X86-NEXT: .cfi_adjust_cfa_offset 4610; X86-NEXT: pushl $8611; X86-NEXT: .cfi_adjust_cfa_offset 4612; X86-NEXT: calll mult@PLT613; X86-NEXT: addl $8, %esp614; X86-NEXT: .cfi_adjust_cfa_offset -8615; X86-NEXT: movl %eax, %ebx616; X86-NEXT: xorl $8, %ebx617; X86-NEXT: pushl $4618; X86-NEXT: .cfi_adjust_cfa_offset 4619; X86-NEXT: pushl $9620; X86-NEXT: .cfi_adjust_cfa_offset 4621; X86-NEXT: calll mult@PLT622; X86-NEXT: addl $8, %esp623; X86-NEXT: .cfi_adjust_cfa_offset -8624; X86-NEXT: movl %eax, %esi625; X86-NEXT: xorl $9, %esi626; X86-NEXT: orl %ebx, %esi627; X86-NEXT: pushl $5628; X86-NEXT: .cfi_adjust_cfa_offset 4629; X86-NEXT: pushl $10630; X86-NEXT: .cfi_adjust_cfa_offset 4631; X86-NEXT: calll mult@PLT632; X86-NEXT: addl $8, %esp633; X86-NEXT: .cfi_adjust_cfa_offset -8634; X86-NEXT: movl %eax, %ebx635; X86-NEXT: xorl $10, %ebx636; X86-NEXT: orl %esi, %ebx637; X86-NEXT: pushl $5638; X86-NEXT: .cfi_adjust_cfa_offset 4639; X86-NEXT: pushl $11640; X86-NEXT: .cfi_adjust_cfa_offset 4641; X86-NEXT: calll mult@PLT642; X86-NEXT: addl $8, %esp643; X86-NEXT: .cfi_adjust_cfa_offset -8644; X86-NEXT: movl %eax, %esi645; X86-NEXT: xorl $11, %esi646; X86-NEXT: orl %ebx, %esi647; X86-NEXT: orl %edi, %esi648; X86-NEXT: pushl $6649; X86-NEXT: .cfi_adjust_cfa_offset 4650; X86-NEXT: pushl $12651; X86-NEXT: .cfi_adjust_cfa_offset 4652; X86-NEXT: calll mult@PLT653; X86-NEXT: addl $8, %esp654; X86-NEXT: .cfi_adjust_cfa_offset -8655; X86-NEXT: movl %eax, %ebx656; X86-NEXT: xorl $12, %ebx657; X86-NEXT: pushl $6658; X86-NEXT: .cfi_adjust_cfa_offset 4659; X86-NEXT: pushl $13660; X86-NEXT: .cfi_adjust_cfa_offset 4661; X86-NEXT: calll mult@PLT662; X86-NEXT: addl $8, %esp663; X86-NEXT: .cfi_adjust_cfa_offset -8664; X86-NEXT: movl %eax, %edi665; X86-NEXT: xorl $13, %edi666; X86-NEXT: orl %ebx, %edi667; X86-NEXT: pushl $7668; X86-NEXT: .cfi_adjust_cfa_offset 4669; X86-NEXT: pushl $14670; X86-NEXT: .cfi_adjust_cfa_offset 4671; X86-NEXT: calll mult@PLT672; X86-NEXT: addl $8, %esp673; X86-NEXT: .cfi_adjust_cfa_offset -8674; X86-NEXT: movl %eax, %ebx675; X86-NEXT: xorl $14, %ebx676; X86-NEXT: orl %edi, %ebx677; X86-NEXT: pushl $7678; X86-NEXT: .cfi_adjust_cfa_offset 4679; X86-NEXT: pushl $15680; X86-NEXT: .cfi_adjust_cfa_offset 4681; X86-NEXT: calll mult@PLT682; X86-NEXT: addl $8, %esp683; X86-NEXT: .cfi_adjust_cfa_offset -8684; X86-NEXT: movl %eax, %ebp685; X86-NEXT: xorl $15, %ebp686; X86-NEXT: orl %ebx, %ebp687; X86-NEXT: pushl $8688; X86-NEXT: .cfi_adjust_cfa_offset 4689; X86-NEXT: pushl $16690; X86-NEXT: .cfi_adjust_cfa_offset 4691; X86-NEXT: calll mult@PLT692; X86-NEXT: addl $8, %esp693; X86-NEXT: .cfi_adjust_cfa_offset -8694; X86-NEXT: movl %eax, %edi695; X86-NEXT: xorl $16, %edi696; X86-NEXT: orl %ebp, %edi697; X86-NEXT: orl %esi, %edi698; X86-NEXT: pushl $8699; X86-NEXT: .cfi_adjust_cfa_offset 4700; X86-NEXT: pushl $17701; X86-NEXT: .cfi_adjust_cfa_offset 4702; X86-NEXT: calll mult@PLT703; X86-NEXT: addl $8, %esp704; X86-NEXT: .cfi_adjust_cfa_offset -8705; X86-NEXT: movl %eax, %ebx706; X86-NEXT: xorl $17, %ebx707; X86-NEXT: pushl $9708; X86-NEXT: .cfi_adjust_cfa_offset 4709; X86-NEXT: pushl $18710; X86-NEXT: .cfi_adjust_cfa_offset 4711; X86-NEXT: calll mult@PLT712; X86-NEXT: addl $8, %esp713; X86-NEXT: .cfi_adjust_cfa_offset -8714; X86-NEXT: movl %eax, %esi715; X86-NEXT: xorl $18, %esi716; X86-NEXT: orl %ebx, %esi717; X86-NEXT: pushl $9718; X86-NEXT: .cfi_adjust_cfa_offset 4719; X86-NEXT: pushl $19720; X86-NEXT: .cfi_adjust_cfa_offset 4721; X86-NEXT: calll mult@PLT722; X86-NEXT: addl $8, %esp723; X86-NEXT: .cfi_adjust_cfa_offset -8724; X86-NEXT: movl %eax, %ebx725; X86-NEXT: xorl $19, %ebx726; X86-NEXT: orl %esi, %ebx727; X86-NEXT: pushl $10728; X86-NEXT: .cfi_adjust_cfa_offset 4729; X86-NEXT: pushl $20730; X86-NEXT: .cfi_adjust_cfa_offset 4731; X86-NEXT: calll mult@PLT732; X86-NEXT: addl $8, %esp733; X86-NEXT: .cfi_adjust_cfa_offset -8734; X86-NEXT: movl %eax, %esi735; X86-NEXT: xorl $20, %esi736; X86-NEXT: orl %ebx, %esi737; X86-NEXT: pushl $10738; X86-NEXT: .cfi_adjust_cfa_offset 4739; X86-NEXT: pushl $21740; X86-NEXT: .cfi_adjust_cfa_offset 4741; X86-NEXT: calll mult@PLT742; X86-NEXT: addl $8, %esp743; X86-NEXT: .cfi_adjust_cfa_offset -8744; X86-NEXT: movl %eax, %ebx745; X86-NEXT: xorl $21, %ebx746; X86-NEXT: orl %esi, %ebx747; X86-NEXT: pushl $11748; X86-NEXT: .cfi_adjust_cfa_offset 4749; X86-NEXT: pushl $22750; X86-NEXT: .cfi_adjust_cfa_offset 4751; X86-NEXT: calll mult@PLT752; X86-NEXT: addl $8, %esp753; X86-NEXT: .cfi_adjust_cfa_offset -8754; X86-NEXT: movl %eax, %esi755; X86-NEXT: xorl $22, %esi756; X86-NEXT: orl %ebx, %esi757; X86-NEXT: orl %edi, %esi758; X86-NEXT: pushl $11759; X86-NEXT: .cfi_adjust_cfa_offset 4760; X86-NEXT: pushl $23761; X86-NEXT: .cfi_adjust_cfa_offset 4762; X86-NEXT: calll mult@PLT763; X86-NEXT: addl $8, %esp764; X86-NEXT: .cfi_adjust_cfa_offset -8765; X86-NEXT: movl %eax, %ebx766; X86-NEXT: xorl $23, %ebx767; X86-NEXT: pushl $12768; X86-NEXT: .cfi_adjust_cfa_offset 4769; X86-NEXT: pushl $24770; X86-NEXT: .cfi_adjust_cfa_offset 4771; X86-NEXT: calll mult@PLT772; X86-NEXT: addl $8, %esp773; X86-NEXT: .cfi_adjust_cfa_offset -8774; X86-NEXT: movl %eax, %edi775; X86-NEXT: xorl $24, %edi776; X86-NEXT: orl %ebx, %edi777; X86-NEXT: pushl $12778; X86-NEXT: .cfi_adjust_cfa_offset 4779; X86-NEXT: pushl $25780; X86-NEXT: .cfi_adjust_cfa_offset 4781; X86-NEXT: calll mult@PLT782; X86-NEXT: addl $8, %esp783; X86-NEXT: .cfi_adjust_cfa_offset -8784; X86-NEXT: movl %eax, %ebx785; X86-NEXT: xorl $25, %ebx786; X86-NEXT: orl %edi, %ebx787; X86-NEXT: pushl $13788; X86-NEXT: .cfi_adjust_cfa_offset 4789; X86-NEXT: pushl $26790; X86-NEXT: .cfi_adjust_cfa_offset 4791; X86-NEXT: calll mult@PLT792; X86-NEXT: addl $8, %esp793; X86-NEXT: .cfi_adjust_cfa_offset -8794; X86-NEXT: movl %eax, %edi795; X86-NEXT: xorl $26, %edi796; X86-NEXT: orl %ebx, %edi797; X86-NEXT: pushl $13798; X86-NEXT: .cfi_adjust_cfa_offset 4799; X86-NEXT: pushl $27800; X86-NEXT: .cfi_adjust_cfa_offset 4801; X86-NEXT: calll mult@PLT802; X86-NEXT: addl $8, %esp803; X86-NEXT: .cfi_adjust_cfa_offset -8804; X86-NEXT: movl %eax, %ebx805; X86-NEXT: xorl $27, %ebx806; X86-NEXT: orl %edi, %ebx807; X86-NEXT: pushl $14808; X86-NEXT: .cfi_adjust_cfa_offset 4809; X86-NEXT: pushl $28810; X86-NEXT: .cfi_adjust_cfa_offset 4811; X86-NEXT: calll mult@PLT812; X86-NEXT: addl $8, %esp813; X86-NEXT: .cfi_adjust_cfa_offset -8814; X86-NEXT: movl %eax, %ebp815; X86-NEXT: xorl $28, %ebp816; X86-NEXT: orl %ebx, %ebp817; X86-NEXT: pushl $14818; X86-NEXT: .cfi_adjust_cfa_offset 4819; X86-NEXT: pushl $29820; X86-NEXT: .cfi_adjust_cfa_offset 4821; X86-NEXT: calll mult@PLT822; X86-NEXT: addl $8, %esp823; X86-NEXT: .cfi_adjust_cfa_offset -8824; X86-NEXT: movl %eax, %edi825; X86-NEXT: xorl $29, %edi826; X86-NEXT: orl %ebp, %edi827; X86-NEXT: orl %esi, %edi828; X86-NEXT: pushl $15829; X86-NEXT: .cfi_adjust_cfa_offset 4830; X86-NEXT: pushl $30831; X86-NEXT: .cfi_adjust_cfa_offset 4832; X86-NEXT: calll mult@PLT833; X86-NEXT: addl $8, %esp834; X86-NEXT: .cfi_adjust_cfa_offset -8835; X86-NEXT: movl %eax, %ebx836; X86-NEXT: xorl $30, %ebx837; X86-NEXT: pushl $15838; X86-NEXT: .cfi_adjust_cfa_offset 4839; X86-NEXT: pushl $31840; X86-NEXT: .cfi_adjust_cfa_offset 4841; X86-NEXT: calll mult@PLT842; X86-NEXT: addl $8, %esp843; X86-NEXT: .cfi_adjust_cfa_offset -8844; X86-NEXT: movl %eax, %esi845; X86-NEXT: xorl $31, %esi846; X86-NEXT: orl %ebx, %esi847; X86-NEXT: orl %edi, %esi848; X86-NEXT: pushl $16849; X86-NEXT: .cfi_adjust_cfa_offset 4850; X86-NEXT: pushl $32851; X86-NEXT: .cfi_adjust_cfa_offset 4852; X86-NEXT: calll mult@PLT853; X86-NEXT: addl $8, %esp854; X86-NEXT: .cfi_adjust_cfa_offset -8855; X86-NEXT: xorl $32, %eax856; X86-NEXT: xorl %ecx, %ecx857; X86-NEXT: orl %esi, %eax858; X86-NEXT: setne %cl859; X86-NEXT: negl %ecx860; X86-NEXT: movl %ecx, %eax861; X86-NEXT: popl %esi862; X86-NEXT: .cfi_def_cfa_offset 16863; X86-NEXT: popl %edi864; X86-NEXT: .cfi_def_cfa_offset 12865; X86-NEXT: popl %ebx866; X86-NEXT: .cfi_def_cfa_offset 8867; X86-NEXT: popl %ebp868; X86-NEXT: .cfi_def_cfa_offset 4869; X86-NEXT: retl870;871; X64-HSW-LABEL: foo:872; X64-HSW: # %bb.0:873; X64-HSW-NEXT: pushq %rbp874; X64-HSW-NEXT: .cfi_def_cfa_offset 16875; X64-HSW-NEXT: pushq %r15876; X64-HSW-NEXT: .cfi_def_cfa_offset 24877; X64-HSW-NEXT: pushq %r14878; X64-HSW-NEXT: .cfi_def_cfa_offset 32879; X64-HSW-NEXT: pushq %rbx880; X64-HSW-NEXT: .cfi_def_cfa_offset 40881; X64-HSW-NEXT: pushq %rax882; X64-HSW-NEXT: .cfi_def_cfa_offset 48883; X64-HSW-NEXT: .cfi_offset %rbx, -40884; X64-HSW-NEXT: .cfi_offset %r14, -32885; X64-HSW-NEXT: .cfi_offset %r15, -24886; X64-HSW-NEXT: .cfi_offset %rbp, -16887; X64-HSW-NEXT: movl $1, %edi888; X64-HSW-NEXT: xorl %esi, %esi889; X64-HSW-NEXT: callq mult@PLT890; X64-HSW-NEXT: movl %eax, %ebx891; X64-HSW-NEXT: xorl $1, %ebx892; X64-HSW-NEXT: movl $2, %edi893; X64-HSW-NEXT: movl $1, %esi894; X64-HSW-NEXT: callq mult@PLT895; X64-HSW-NEXT: movl %eax, %ebp896; X64-HSW-NEXT: xorl $2, %ebp897; X64-HSW-NEXT: orl %ebx, %ebp898; X64-HSW-NEXT: movl $3, %edi899; X64-HSW-NEXT: movl $1, %esi900; X64-HSW-NEXT: callq mult@PLT901; X64-HSW-NEXT: movl %eax, %r14d902; X64-HSW-NEXT: xorl $3, %r14d903; X64-HSW-NEXT: movl $4, %edi904; X64-HSW-NEXT: movl $2, %esi905; X64-HSW-NEXT: callq mult@PLT906; X64-HSW-NEXT: movl %eax, %ebx907; X64-HSW-NEXT: xorl $4, %ebx908; X64-HSW-NEXT: orl %r14d, %ebx909; X64-HSW-NEXT: orl %ebp, %ebx910; X64-HSW-NEXT: movl $5, %edi911; X64-HSW-NEXT: movl $2, %esi912; X64-HSW-NEXT: callq mult@PLT913; X64-HSW-NEXT: movl %eax, %ebp914; X64-HSW-NEXT: xorl $5, %ebp915; X64-HSW-NEXT: movl $6, %edi916; X64-HSW-NEXT: movl $3, %esi917; X64-HSW-NEXT: callq mult@PLT918; X64-HSW-NEXT: movl %eax, %r14d919; X64-HSW-NEXT: xorl $6, %r14d920; X64-HSW-NEXT: orl %ebp, %r14d921; X64-HSW-NEXT: movl $7, %edi922; X64-HSW-NEXT: movl $3, %esi923; X64-HSW-NEXT: callq mult@PLT924; X64-HSW-NEXT: movl %eax, %ebp925; X64-HSW-NEXT: xorl $7, %ebp926; X64-HSW-NEXT: orl %r14d, %ebp927; X64-HSW-NEXT: orl %ebx, %ebp928; X64-HSW-NEXT: movl $8, %edi929; X64-HSW-NEXT: movl $4, %esi930; X64-HSW-NEXT: callq mult@PLT931; X64-HSW-NEXT: movl %eax, %ebx932; X64-HSW-NEXT: xorl $8, %ebx933; X64-HSW-NEXT: movl $9, %edi934; X64-HSW-NEXT: movl $4, %esi935; X64-HSW-NEXT: callq mult@PLT936; X64-HSW-NEXT: movl %eax, %r14d937; X64-HSW-NEXT: xorl $9, %r14d938; X64-HSW-NEXT: orl %ebx, %r14d939; X64-HSW-NEXT: movl $10, %edi940; X64-HSW-NEXT: movl $5, %esi941; X64-HSW-NEXT: callq mult@PLT942; X64-HSW-NEXT: movl %eax, %r15d943; X64-HSW-NEXT: xorl $10, %r15d944; X64-HSW-NEXT: orl %r14d, %r15d945; X64-HSW-NEXT: movl $11, %edi946; X64-HSW-NEXT: movl $5, %esi947; X64-HSW-NEXT: callq mult@PLT948; X64-HSW-NEXT: movl %eax, %ebx949; X64-HSW-NEXT: xorl $11, %ebx950; X64-HSW-NEXT: orl %r15d, %ebx951; X64-HSW-NEXT: orl %ebp, %ebx952; X64-HSW-NEXT: movl $12, %edi953; X64-HSW-NEXT: movl $6, %esi954; X64-HSW-NEXT: callq mult@PLT955; X64-HSW-NEXT: movl %eax, %ebp956; X64-HSW-NEXT: xorl $12, %ebp957; X64-HSW-NEXT: movl $13, %edi958; X64-HSW-NEXT: movl $6, %esi959; X64-HSW-NEXT: callq mult@PLT960; X64-HSW-NEXT: movl %eax, %r14d961; X64-HSW-NEXT: xorl $13, %r14d962; X64-HSW-NEXT: orl %ebp, %r14d963; X64-HSW-NEXT: movl $14, %edi964; X64-HSW-NEXT: movl $7, %esi965; X64-HSW-NEXT: callq mult@PLT966; X64-HSW-NEXT: movl %eax, %ebp967; X64-HSW-NEXT: xorl $14, %ebp968; X64-HSW-NEXT: orl %r14d, %ebp969; X64-HSW-NEXT: movl $15, %edi970; X64-HSW-NEXT: movl $7, %esi971; X64-HSW-NEXT: callq mult@PLT972; X64-HSW-NEXT: movl %eax, %r14d973; X64-HSW-NEXT: xorl $15, %r14d974; X64-HSW-NEXT: orl %ebp, %r14d975; X64-HSW-NEXT: movl $16, %edi976; X64-HSW-NEXT: movl $8, %esi977; X64-HSW-NEXT: callq mult@PLT978; X64-HSW-NEXT: movl %eax, %ebp979; X64-HSW-NEXT: xorl $16, %ebp980; X64-HSW-NEXT: orl %r14d, %ebp981; X64-HSW-NEXT: orl %ebx, %ebp982; X64-HSW-NEXT: movl $17, %edi983; X64-HSW-NEXT: movl $8, %esi984; X64-HSW-NEXT: callq mult@PLT985; X64-HSW-NEXT: movl %eax, %ebx986; X64-HSW-NEXT: xorl $17, %ebx987; X64-HSW-NEXT: movl $18, %edi988; X64-HSW-NEXT: movl $9, %esi989; X64-HSW-NEXT: callq mult@PLT990; X64-HSW-NEXT: movl %eax, %r14d991; X64-HSW-NEXT: xorl $18, %r14d992; X64-HSW-NEXT: orl %ebx, %r14d993; X64-HSW-NEXT: movl $19, %edi994; X64-HSW-NEXT: movl $9, %esi995; X64-HSW-NEXT: callq mult@PLT996; X64-HSW-NEXT: movl %eax, %ebx997; X64-HSW-NEXT: xorl $19, %ebx998; X64-HSW-NEXT: orl %r14d, %ebx999; X64-HSW-NEXT: movl $20, %edi1000; X64-HSW-NEXT: movl $10, %esi1001; X64-HSW-NEXT: callq mult@PLT1002; X64-HSW-NEXT: movl %eax, %r14d1003; X64-HSW-NEXT: xorl $20, %r14d1004; X64-HSW-NEXT: orl %ebx, %r14d1005; X64-HSW-NEXT: movl $21, %edi1006; X64-HSW-NEXT: movl $10, %esi1007; X64-HSW-NEXT: callq mult@PLT1008; X64-HSW-NEXT: movl %eax, %r15d1009; X64-HSW-NEXT: xorl $21, %r15d1010; X64-HSW-NEXT: orl %r14d, %r15d1011; X64-HSW-NEXT: movl $22, %edi1012; X64-HSW-NEXT: movl $11, %esi1013; X64-HSW-NEXT: callq mult@PLT1014; X64-HSW-NEXT: movl %eax, %ebx1015; X64-HSW-NEXT: xorl $22, %ebx1016; X64-HSW-NEXT: orl %r15d, %ebx1017; X64-HSW-NEXT: orl %ebp, %ebx1018; X64-HSW-NEXT: movl $23, %edi1019; X64-HSW-NEXT: movl $11, %esi1020; X64-HSW-NEXT: callq mult@PLT1021; X64-HSW-NEXT: movl %eax, %ebp1022; X64-HSW-NEXT: xorl $23, %ebp1023; X64-HSW-NEXT: movl $24, %edi1024; X64-HSW-NEXT: movl $12, %esi1025; X64-HSW-NEXT: callq mult@PLT1026; X64-HSW-NEXT: movl %eax, %r14d1027; X64-HSW-NEXT: xorl $24, %r14d1028; X64-HSW-NEXT: orl %ebp, %r14d1029; X64-HSW-NEXT: movl $25, %edi1030; X64-HSW-NEXT: movl $12, %esi1031; X64-HSW-NEXT: callq mult@PLT1032; X64-HSW-NEXT: movl %eax, %ebp1033; X64-HSW-NEXT: xorl $25, %ebp1034; X64-HSW-NEXT: orl %r14d, %ebp1035; X64-HSW-NEXT: movl $26, %edi1036; X64-HSW-NEXT: movl $13, %esi1037; X64-HSW-NEXT: callq mult@PLT1038; X64-HSW-NEXT: movl %eax, %r14d1039; X64-HSW-NEXT: xorl $26, %r14d1040; X64-HSW-NEXT: orl %ebp, %r14d1041; X64-HSW-NEXT: movl $27, %edi1042; X64-HSW-NEXT: movl $13, %esi1043; X64-HSW-NEXT: callq mult@PLT1044; X64-HSW-NEXT: movl %eax, %ebp1045; X64-HSW-NEXT: xorl $27, %ebp1046; X64-HSW-NEXT: orl %r14d, %ebp1047; X64-HSW-NEXT: movl $28, %edi1048; X64-HSW-NEXT: movl $14, %esi1049; X64-HSW-NEXT: callq mult@PLT1050; X64-HSW-NEXT: movl %eax, %r14d1051; X64-HSW-NEXT: xorl $28, %r14d1052; X64-HSW-NEXT: orl %ebp, %r14d1053; X64-HSW-NEXT: movl $29, %edi1054; X64-HSW-NEXT: movl $14, %esi1055; X64-HSW-NEXT: callq mult@PLT1056; X64-HSW-NEXT: movl %eax, %ebp1057; X64-HSW-NEXT: xorl $29, %ebp1058; X64-HSW-NEXT: orl %r14d, %ebp1059; X64-HSW-NEXT: orl %ebx, %ebp1060; X64-HSW-NEXT: movl $30, %edi1061; X64-HSW-NEXT: movl $15, %esi1062; X64-HSW-NEXT: callq mult@PLT1063; X64-HSW-NEXT: movl %eax, %ebx1064; X64-HSW-NEXT: xorl $30, %ebx1065; X64-HSW-NEXT: movl $31, %edi1066; X64-HSW-NEXT: movl $15, %esi1067; X64-HSW-NEXT: callq mult@PLT1068; X64-HSW-NEXT: movl %eax, %r14d1069; X64-HSW-NEXT: xorl $31, %r14d1070; X64-HSW-NEXT: orl %ebx, %r14d1071; X64-HSW-NEXT: orl %ebp, %r14d1072; X64-HSW-NEXT: movl $32, %edi1073; X64-HSW-NEXT: movl $16, %esi1074; X64-HSW-NEXT: callq mult@PLT1075; X64-HSW-NEXT: xorl $32, %eax1076; X64-HSW-NEXT: xorl %ecx, %ecx1077; X64-HSW-NEXT: orl %r14d, %eax1078; X64-HSW-NEXT: setne %cl1079; X64-HSW-NEXT: negl %ecx1080; X64-HSW-NEXT: movl %ecx, %eax1081; X64-HSW-NEXT: addq $8, %rsp1082; X64-HSW-NEXT: .cfi_def_cfa_offset 401083; X64-HSW-NEXT: popq %rbx1084; X64-HSW-NEXT: .cfi_def_cfa_offset 321085; X64-HSW-NEXT: popq %r141086; X64-HSW-NEXT: .cfi_def_cfa_offset 241087; X64-HSW-NEXT: popq %r151088; X64-HSW-NEXT: .cfi_def_cfa_offset 161089; X64-HSW-NEXT: popq %rbp1090; X64-HSW-NEXT: .cfi_def_cfa_offset 81091; X64-HSW-NEXT: retq1092 %1 = tail call i32 @mult(i32 1, i32 0)1093 %2 = icmp ne i32 %1, 11094 %3 = tail call i32 @mult(i32 2, i32 1)1095 %4 = icmp ne i32 %3, 21096 %5 = or i1 %2, %41097 %6 = tail call i32 @mult(i32 3, i32 1)1098 %7 = icmp ne i32 %6, 31099 %8 = or i1 %5, %71100 %9 = tail call i32 @mult(i32 4, i32 2)1101 %10 = icmp ne i32 %9, 41102 %11 = or i1 %8, %101103 %12 = tail call i32 @mult(i32 5, i32 2)1104 %13 = icmp ne i32 %12, 51105 %14 = or i1 %11, %131106 %15 = tail call i32 @mult(i32 6, i32 3)1107 %16 = icmp ne i32 %15, 61108 %17 = or i1 %14, %161109 %18 = tail call i32 @mult(i32 7, i32 3)1110 %19 = icmp ne i32 %18, 71111 %20 = or i1 %17, %191112 %21 = tail call i32 @mult(i32 8, i32 4)1113 %22 = icmp ne i32 %21, 81114 %23 = or i1 %20, %221115 %24 = tail call i32 @mult(i32 9, i32 4)1116 %25 = icmp ne i32 %24, 91117 %26 = or i1 %23, %251118 %27 = tail call i32 @mult(i32 10, i32 5)1119 %28 = icmp ne i32 %27, 101120 %29 = or i1 %26, %281121 %30 = tail call i32 @mult(i32 11, i32 5)1122 %31 = icmp ne i32 %30, 111123 %32 = or i1 %29, %311124 %33 = tail call i32 @mult(i32 12, i32 6)1125 %34 = icmp ne i32 %33, 121126 %35 = or i1 %32, %341127 %36 = tail call i32 @mult(i32 13, i32 6)1128 %37 = icmp ne i32 %36, 131129 %38 = or i1 %35, %371130 %39 = tail call i32 @mult(i32 14, i32 7)1131 %40 = icmp ne i32 %39, 141132 %41 = or i1 %38, %401133 %42 = tail call i32 @mult(i32 15, i32 7)1134 %43 = icmp ne i32 %42, 151135 %44 = or i1 %41, %431136 %45 = tail call i32 @mult(i32 16, i32 8)1137 %46 = icmp ne i32 %45, 161138 %47 = or i1 %44, %461139 %48 = tail call i32 @mult(i32 17, i32 8)1140 %49 = icmp ne i32 %48, 171141 %50 = or i1 %47, %491142 %51 = tail call i32 @mult(i32 18, i32 9)1143 %52 = icmp ne i32 %51, 181144 %53 = or i1 %50, %521145 %54 = tail call i32 @mult(i32 19, i32 9)1146 %55 = icmp ne i32 %54, 191147 %56 = or i1 %53, %551148 %57 = tail call i32 @mult(i32 20, i32 10)1149 %58 = icmp ne i32 %57, 201150 %59 = or i1 %56, %581151 %60 = tail call i32 @mult(i32 21, i32 10)1152 %61 = icmp ne i32 %60, 211153 %62 = or i1 %59, %611154 %63 = tail call i32 @mult(i32 22, i32 11)1155 %64 = icmp ne i32 %63, 221156 %65 = or i1 %62, %641157 %66 = tail call i32 @mult(i32 23, i32 11)1158 %67 = icmp ne i32 %66, 231159 %68 = or i1 %65, %671160 %69 = tail call i32 @mult(i32 24, i32 12)1161 %70 = icmp ne i32 %69, 241162 %71 = or i1 %68, %701163 %72 = tail call i32 @mult(i32 25, i32 12)1164 %73 = icmp ne i32 %72, 251165 %74 = or i1 %71, %731166 %75 = tail call i32 @mult(i32 26, i32 13)1167 %76 = icmp ne i32 %75, 261168 %77 = or i1 %74, %761169 %78 = tail call i32 @mult(i32 27, i32 13)1170 %79 = icmp ne i32 %78, 271171 %80 = or i1 %77, %791172 %81 = tail call i32 @mult(i32 28, i32 14)1173 %82 = icmp ne i32 %81, 281174 %83 = or i1 %80, %821175 %84 = tail call i32 @mult(i32 29, i32 14)1176 %85 = icmp ne i32 %84, 291177 %86 = or i1 %83, %851178 %87 = tail call i32 @mult(i32 30, i32 15)1179 %88 = icmp ne i32 %87, 301180 %89 = or i1 %86, %881181 %90 = tail call i32 @mult(i32 31, i32 15)1182 %91 = icmp ne i32 %90, 311183 %92 = or i1 %89, %911184 %93 = tail call i32 @mult(i32 32, i32 16)1185 %94 = icmp ne i32 %93, 321186 %95 = or i1 %92, %941187 %96 = sext i1 %95 to i321188 ret i32 %961189}1190 1191attributes #0 = { norecurse nounwind readnone uwtable }1192