485 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefix=X643 4define i8 @test_mul_by_1(i8 %x) {5; X64-LABEL: test_mul_by_1:6; X64: # %bb.0:7; X64-NEXT: movl %edi, %eax8; X64-NEXT: # kill: def $al killed $al killed $eax9; X64-NEXT: retq10 %m = mul i8 %x, 111 ret i8 %m12}13 14define i8 @test_mul_by_2(i8 %x) {15; X64-LABEL: test_mul_by_2:16; X64: # %bb.0:17; X64-NEXT: # kill: def $edi killed $edi def $rdi18; X64-NEXT: leal (%rdi,%rdi), %eax19; X64-NEXT: # kill: def $al killed $al killed $eax20; X64-NEXT: retq21 %m = mul i8 %x, 222 ret i8 %m23}24 25define i8 @test_mul_by_3(i8 %x) {26; X64-LABEL: test_mul_by_3:27; X64: # %bb.0:28; X64-NEXT: # kill: def $edi killed $edi def $rdi29; X64-NEXT: leal (%rdi,%rdi,2), %eax30; X64-NEXT: # kill: def $al killed $al killed $eax31; X64-NEXT: retq32 %m = mul i8 %x, 333 ret i8 %m34}35 36define i8 @test_mul_by_4(i8 %x) {37; X64-LABEL: test_mul_by_4:38; X64: # %bb.0:39; X64-NEXT: # kill: def $edi killed $edi def $rdi40; X64-NEXT: leal (,%rdi,4), %eax41; X64-NEXT: # kill: def $al killed $al killed $eax42; X64-NEXT: retq43 %m = mul i8 %x, 444 ret i8 %m45}46 47define i8 @test_mul_by_5(i8 %x) {48; X64-LABEL: test_mul_by_5:49; X64: # %bb.0:50; X64-NEXT: # kill: def $edi killed $edi def $rdi51; X64-NEXT: leal (%rdi,%rdi,4), %eax52; X64-NEXT: # kill: def $al killed $al killed $eax53; X64-NEXT: retq54 %m = mul i8 %x, 555 ret i8 %m56}57 58define i8 @test_mul_by_6(i8 %x) {59; X64-LABEL: test_mul_by_6:60; X64: # %bb.0:61; X64-NEXT: # kill: def $edi killed $edi def $rdi62; X64-NEXT: addl %edi, %edi63; X64-NEXT: leal (%rdi,%rdi,2), %eax64; X64-NEXT: # kill: def $al killed $al killed $eax65; X64-NEXT: retq66 %m = mul i8 %x, 667 ret i8 %m68}69 70define i8 @test_mul_by_7(i8 %x) {71; X64-LABEL: test_mul_by_7:72; X64: # %bb.0:73; X64-NEXT: # kill: def $edi killed $edi def $rdi74; X64-NEXT: leal (,%rdi,8), %eax75; X64-NEXT: subl %edi, %eax76; X64-NEXT: # kill: def $al killed $al killed $eax77; X64-NEXT: retq78 %m = mul i8 %x, 779 ret i8 %m80}81 82define i8 @test_mul_by_8(i8 %x) {83; X64-LABEL: test_mul_by_8:84; X64: # %bb.0:85; X64-NEXT: # kill: def $edi killed $edi def $rdi86; X64-NEXT: leal (,%rdi,8), %eax87; X64-NEXT: # kill: def $al killed $al killed $eax88; X64-NEXT: retq89 %m = mul i8 %x, 890 ret i8 %m91}92 93define i8 @test_mul_by_9(i8 %x) {94; X64-LABEL: test_mul_by_9:95; X64: # %bb.0:96; X64-NEXT: # kill: def $edi killed $edi def $rdi97; X64-NEXT: leal (%rdi,%rdi,8), %eax98; X64-NEXT: # kill: def $al killed $al killed $eax99; X64-NEXT: retq100 %m = mul i8 %x, 9101 ret i8 %m102}103 104define i8 @test_mul_by_10(i8 %x) {105; X64-LABEL: test_mul_by_10:106; X64: # %bb.0:107; X64-NEXT: # kill: def $edi killed $edi def $rdi108; X64-NEXT: addl %edi, %edi109; X64-NEXT: leal (%rdi,%rdi,4), %eax110; X64-NEXT: # kill: def $al killed $al killed $eax111; X64-NEXT: retq112 %m = mul i8 %x, 10113 ret i8 %m114}115 116define i8 @test_mul_by_11(i8 %x) {117; X64-LABEL: test_mul_by_11:118; X64: # %bb.0:119; X64-NEXT: # kill: def $edi killed $edi def $rdi120; X64-NEXT: leal (%rdi,%rdi,4), %eax121; X64-NEXT: leal (%rdi,%rax,2), %eax122; X64-NEXT: # kill: def $al killed $al killed $eax123; X64-NEXT: retq124 %m = mul i8 %x, 11125 ret i8 %m126}127 128define i8 @test_mul_by_12(i8 %x) {129; X64-LABEL: test_mul_by_12:130; X64: # %bb.0:131; X64-NEXT: # kill: def $edi killed $edi def $rdi132; X64-NEXT: shll $2, %edi133; X64-NEXT: leal (%rdi,%rdi,2), %eax134; X64-NEXT: # kill: def $al killed $al killed $eax135; X64-NEXT: retq136 %m = mul i8 %x, 12137 ret i8 %m138}139 140define i8 @test_mul_by_13(i8 %x) {141; X64-LABEL: test_mul_by_13:142; X64: # %bb.0:143; X64-NEXT: # kill: def $edi killed $edi def $rdi144; X64-NEXT: leal (%rdi,%rdi,2), %eax145; X64-NEXT: leal (%rdi,%rax,4), %eax146; X64-NEXT: # kill: def $al killed $al killed $eax147; X64-NEXT: retq148 %m = mul i8 %x, 13149 ret i8 %m150}151 152define i8 @test_mul_by_14(i8 %x) {153; X64-LABEL: test_mul_by_14:154; X64: # %bb.0:155; X64-NEXT: movl %edi, %eax156; X64-NEXT: leal (%rax,%rax), %ecx157; X64-NEXT: shll $4, %eax158; X64-NEXT: subl %ecx, %eax159; X64-NEXT: # kill: def $al killed $al killed $rax160; X64-NEXT: retq161 %m = mul i8 %x, 14162 ret i8 %m163}164 165define i8 @test_mul_by_15(i8 %x) {166; X64-LABEL: test_mul_by_15:167; X64: # %bb.0:168; X64-NEXT: # kill: def $edi killed $edi def $rdi169; X64-NEXT: leal (%rdi,%rdi,4), %eax170; X64-NEXT: leal (%rax,%rax,2), %eax171; X64-NEXT: # kill: def $al killed $al killed $eax172; X64-NEXT: retq173 %m = mul i8 %x, 15174 ret i8 %m175}176 177define i8 @test_mul_by_16(i8 %x) {178; X64-LABEL: test_mul_by_16:179; X64: # %bb.0:180; X64-NEXT: movl %edi, %eax181; X64-NEXT: shlb $4, %al182; X64-NEXT: # kill: def $al killed $al killed $eax183; X64-NEXT: retq184 %m = mul i8 %x, 16185 ret i8 %m186}187 188define i8 @test_mul_by_17(i8 %x) {189; X64-LABEL: test_mul_by_17:190; X64: # %bb.0:191; X64-NEXT: movl %edi, %eax192; X64-NEXT: shll $4, %eax193; X64-NEXT: addl %edi, %eax194; X64-NEXT: # kill: def $al killed $al killed $eax195; X64-NEXT: retq196 %m = mul i8 %x, 17197 ret i8 %m198}199 200define i8 @test_mul_by_18(i8 %x) {201; X64-LABEL: test_mul_by_18:202; X64: # %bb.0:203; X64-NEXT: # kill: def $edi killed $edi def $rdi204; X64-NEXT: addl %edi, %edi205; X64-NEXT: leal (%rdi,%rdi,8), %eax206; X64-NEXT: # kill: def $al killed $al killed $eax207; X64-NEXT: retq208 %m = mul i8 %x, 18209 ret i8 %m210}211 212define i8 @test_mul_by_19(i8 %x) {213; X64-LABEL: test_mul_by_19:214; X64: # %bb.0:215; X64-NEXT: # kill: def $edi killed $edi def $rdi216; X64-NEXT: leal (%rdi,%rdi,8), %eax217; X64-NEXT: leal (%rdi,%rax,2), %eax218; X64-NEXT: # kill: def $al killed $al killed $eax219; X64-NEXT: retq220 %m = mul i8 %x, 19221 ret i8 %m222}223 224define i8 @test_mul_by_20(i8 %x) {225; X64-LABEL: test_mul_by_20:226; X64: # %bb.0:227; X64-NEXT: # kill: def $edi killed $edi def $rdi228; X64-NEXT: shll $2, %edi229; X64-NEXT: leal (%rdi,%rdi,4), %eax230; X64-NEXT: # kill: def $al killed $al killed $eax231; X64-NEXT: retq232 %m = mul i8 %x, 20233 ret i8 %m234}235 236define i8 @test_mul_by_21(i8 %x) {237; X64-LABEL: test_mul_by_21:238; X64: # %bb.0:239; X64-NEXT: # kill: def $edi killed $edi def $rdi240; X64-NEXT: leal (%rdi,%rdi,4), %eax241; X64-NEXT: leal (%rdi,%rax,4), %eax242; X64-NEXT: # kill: def $al killed $al killed $eax243; X64-NEXT: retq244 %m = mul i8 %x, 21245 ret i8 %m246}247 248define i8 @test_mul_by_22(i8 %x) {249; X64-LABEL: test_mul_by_22:250; X64: # %bb.0:251; X64-NEXT: # kill: def $edi killed $edi def $rdi252; X64-NEXT: leal (%rdi,%rdi,4), %eax253; X64-NEXT: leal (%rdi,%rax,4), %eax254; X64-NEXT: addl %edi, %eax255; X64-NEXT: # kill: def $al killed $al killed $eax256; X64-NEXT: retq257 %m = mul i8 %x, 22258 ret i8 %m259}260 261define i8 @test_mul_by_23(i8 %x) {262; X64-LABEL: test_mul_by_23:263; X64: # %bb.0:264; X64-NEXT: # kill: def $edi killed $edi def $rdi265; X64-NEXT: leal (%rdi,%rdi,2), %eax266; X64-NEXT: shll $3, %eax267; X64-NEXT: subl %edi, %eax268; X64-NEXT: # kill: def $al killed $al killed $eax269; X64-NEXT: retq270 %m = mul i8 %x, 23271 ret i8 %m272}273 274define i8 @test_mul_by_24(i8 %x) {275; X64-LABEL: test_mul_by_24:276; X64: # %bb.0:277; X64-NEXT: # kill: def $edi killed $edi def $rdi278; X64-NEXT: shll $3, %edi279; X64-NEXT: leal (%rdi,%rdi,2), %eax280; X64-NEXT: # kill: def $al killed $al killed $eax281; X64-NEXT: retq282 %m = mul i8 %x, 24283 ret i8 %m284}285 286define i8 @test_mul_by_25(i8 %x) {287; X64-LABEL: test_mul_by_25:288; X64: # %bb.0:289; X64-NEXT: # kill: def $edi killed $edi def $rdi290; X64-NEXT: leal (%rdi,%rdi,4), %eax291; X64-NEXT: leal (%rax,%rax,4), %eax292; X64-NEXT: # kill: def $al killed $al killed $eax293; X64-NEXT: retq294 %m = mul i8 %x, 25295 ret i8 %m296}297 298define i8 @test_mul_by_26(i8 %x) {299; X64-LABEL: test_mul_by_26:300; X64: # %bb.0:301; X64-NEXT: # kill: def $edi killed $edi def $rdi302; X64-NEXT: leal (%rdi,%rdi,4), %eax303; X64-NEXT: leal (%rax,%rax,4), %eax304; X64-NEXT: addl %edi, %eax305; X64-NEXT: # kill: def $al killed $al killed $eax306; X64-NEXT: retq307 %m = mul i8 %x, 26308 ret i8 %m309}310 311define i8 @test_mul_by_27(i8 %x) {312; X64-LABEL: test_mul_by_27:313; X64: # %bb.0:314; X64-NEXT: # kill: def $edi killed $edi def $rdi315; X64-NEXT: leal (%rdi,%rdi,8), %eax316; X64-NEXT: leal (%rax,%rax,2), %eax317; X64-NEXT: # kill: def $al killed $al killed $eax318; X64-NEXT: retq319 %m = mul i8 %x, 27320 ret i8 %m321}322 323define i8 @test_mul_by_28(i8 %x) {324; X64-LABEL: test_mul_by_28:325; X64: # %bb.0:326; X64-NEXT: # kill: def $edi killed $edi def $rdi327; X64-NEXT: leal (%rdi,%rdi,8), %eax328; X64-NEXT: leal (%rax,%rax,2), %eax329; X64-NEXT: addl %edi, %eax330; X64-NEXT: # kill: def $al killed $al killed $eax331; X64-NEXT: retq332 %m = mul i8 %x, 28333 ret i8 %m334}335 336define i8 @test_mul_by_29(i8 %x) {337; X64-LABEL: test_mul_by_29:338; X64: # %bb.0:339; X64-NEXT: # kill: def $edi killed $edi def $rdi340; X64-NEXT: leal (%rdi,%rdi,8), %eax341; X64-NEXT: leal (%rax,%rax,2), %eax342; X64-NEXT: addl %edi, %eax343; X64-NEXT: addl %edi, %eax344; X64-NEXT: # kill: def $al killed $al killed $eax345; X64-NEXT: retq346 %m = mul i8 %x, 29347 ret i8 %m348}349 350define i8 @test_mul_by_30(i8 %x) {351; X64-LABEL: test_mul_by_30:352; X64: # %bb.0:353; X64-NEXT: movl %edi, %eax354; X64-NEXT: leal (%rax,%rax), %ecx355; X64-NEXT: shll $5, %eax356; X64-NEXT: subl %ecx, %eax357; X64-NEXT: # kill: def $al killed $al killed $rax358; X64-NEXT: retq359 %m = mul i8 %x, 30360 ret i8 %m361}362 363define i8 @test_mul_by_31(i8 %x) {364; X64-LABEL: test_mul_by_31:365; X64: # %bb.0:366; X64-NEXT: movl %edi, %eax367; X64-NEXT: shll $5, %eax368; X64-NEXT: subl %edi, %eax369; X64-NEXT: # kill: def $al killed $al killed $eax370; X64-NEXT: retq371 %m = mul i8 %x, 31372 ret i8 %m373}374 375define i8 @test_mul_by_32(i8 %x) {376; X64-LABEL: test_mul_by_32:377; X64: # %bb.0:378; X64-NEXT: movl %edi, %eax379; X64-NEXT: shlb $5, %al380; X64-NEXT: # kill: def $al killed $al killed $eax381; X64-NEXT: retq382 %m = mul i8 %x, 32383 ret i8 %m384}385 386define i8 @test_mul_by_37(i8 %x) {387; X64-LABEL: test_mul_by_37:388; X64: # %bb.0:389; X64-NEXT: # kill: def $edi killed $edi def $rdi390; X64-NEXT: leal (%rdi,%rdi,8), %eax391; X64-NEXT: leal (%rdi,%rax,4), %eax392; X64-NEXT: # kill: def $al killed $al killed $eax393; X64-NEXT: retq394 %m = mul i8 %x, 37395 ret i8 %m396}397 398define i8 @test_mul_by_41(i8 %x) {399; X64-LABEL: test_mul_by_41:400; X64: # %bb.0:401; X64-NEXT: # kill: def $edi killed $edi def $rdi402; X64-NEXT: leal (%rdi,%rdi,4), %eax403; X64-NEXT: leal (%rdi,%rax,8), %eax404; X64-NEXT: # kill: def $al killed $al killed $eax405; X64-NEXT: retq406 %m = mul i8 %x, 41407 ret i8 %m408}409 410define i8 @test_mul_by_62(i8 %x) {411; X64-LABEL: test_mul_by_62:412; X64: # %bb.0:413; X64-NEXT: movl %edi, %eax414; X64-NEXT: leal (%rax,%rax), %ecx415; X64-NEXT: shll $6, %eax416; X64-NEXT: subl %ecx, %eax417; X64-NEXT: # kill: def $al killed $al killed $rax418; X64-NEXT: retq419 %m = mul i8 %x, 62420 ret i8 %m421}422 423define i8 @test_mul_by_66(i8 %x) {424; X64-LABEL: test_mul_by_66:425; X64: # %bb.0:426; X64-NEXT: # kill: def $edi killed $edi def $rdi427; X64-NEXT: movl %edi, %eax428; X64-NEXT: shll $6, %edi429; X64-NEXT: leal (%rdi,%rax,2), %eax430; X64-NEXT: # kill: def $al killed $al killed $eax431; X64-NEXT: retq432 %m = mul i8 %x, 66433 ret i8 %m434}435 436define i8 @test_mul_by_73(i8 %x) {437; X64-LABEL: test_mul_by_73:438; X64: # %bb.0:439; X64-NEXT: # kill: def $edi killed $edi def $rdi440; X64-NEXT: leal (%rdi,%rdi,8), %eax441; X64-NEXT: leal (%rdi,%rax,8), %eax442; X64-NEXT: # kill: def $al killed $al killed $eax443; X64-NEXT: retq444 %m = mul i8 %x, 73445 ret i8 %m446}447 448define i8 @test_mul_by_520(i8 %x) {449; X64-LABEL: test_mul_by_520:450; X64: # %bb.0:451; X64-NEXT: # kill: def $edi killed $edi def $rdi452; X64-NEXT: leal (,%rdi,8), %eax453; X64-NEXT: # kill: def $al killed $al killed $eax454; X64-NEXT: retq455 %m = mul i8 %x, 520456 ret i8 %m457}458 459define i8 @test_mul_by_neg10(i8 %x) {460; X64-LABEL: test_mul_by_neg10:461; X64: # %bb.0:462; X64-NEXT: # kill: def $edi killed $edi def $rdi463; X64-NEXT: addl %edi, %edi464; X64-NEXT: leal (%rdi,%rdi,4), %eax465; X64-NEXT: negl %eax466; X64-NEXT: # kill: def $al killed $al killed $eax467; X64-NEXT: retq468 %m = mul i8 %x, -10469 ret i8 %m470}471 472define i8 @test_mul_by_neg36(i8 %x) {473; X64-LABEL: test_mul_by_neg36:474; X64: # %bb.0:475; X64-NEXT: # kill: def $edi killed $edi def $rdi476; X64-NEXT: shll $2, %edi477; X64-NEXT: leal (%rdi,%rdi,8), %eax478; X64-NEXT: negl %eax479; X64-NEXT: # kill: def $al killed $al killed $eax480; X64-NEXT: retq481 %m = mul i8 %x, -36482 ret i8 %m483}484 485