brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.7 KiB · df16733 Raw
846 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK,X644 5@ok = internal constant [4 x i8] c"%d\0A\00"6@no = internal constant [4 x i8] c"no\0A\00"7 8define i1 @test1(i32 %v1, i32 %v2) nounwind {9; X86-LABEL: test1:10; X86:       # %bb.0: # %entry11; X86-NEXT:    subl $12, %esp12; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax13; X86-NEXT:    imull {{[0-9]+}}(%esp), %eax14; X86-NEXT:    jno .LBB0_115; X86-NEXT:  # %bb.2: # %overflow16; X86-NEXT:    movl $no, (%esp)17; X86-NEXT:    calll printf@PLT18; X86-NEXT:    xorl %eax, %eax19; X86-NEXT:    addl $12, %esp20; X86-NEXT:    retl21; X86-NEXT:  .LBB0_1: # %normal22; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)23; X86-NEXT:    movl $ok, (%esp)24; X86-NEXT:    calll printf@PLT25; X86-NEXT:    movb $1, %al26; X86-NEXT:    addl $12, %esp27; X86-NEXT:    retl28;29; X64-LABEL: test1:30; X64:       # %bb.0: # %entry31; X64-NEXT:    pushq %rax32; X64-NEXT:    movl %edi, %eax33; X64-NEXT:    imull %esi, %eax34; X64-NEXT:    jno .LBB0_135; X64-NEXT:  # %bb.2: # %overflow36; X64-NEXT:    movl $no, %edi37; X64-NEXT:    xorl %eax, %eax38; X64-NEXT:    callq printf@PLT39; X64-NEXT:    xorl %eax, %eax40; X64-NEXT:    popq %rcx41; X64-NEXT:    retq42; X64-NEXT:  .LBB0_1: # %normal43; X64-NEXT:    movl $ok, %edi44; X64-NEXT:    movl %eax, %esi45; X64-NEXT:    xorl %eax, %eax46; X64-NEXT:    callq printf@PLT47; X64-NEXT:    movb $1, %al48; X64-NEXT:    popq %rcx49; X64-NEXT:    retq50entry:51  %t = call {i32, i1} @llvm.smul.with.overflow.i32(i32 %v1, i32 %v2)52  %sum = extractvalue {i32, i1} %t, 053  %obit = extractvalue {i32, i1} %t, 154  br i1 %obit, label %overflow, label %normal55 56normal:57  %t1 = tail call i32 (ptr, ...) @printf( ptr @ok, i32 %sum ) nounwind58  ret i1 true59 60overflow:61  %t2 = tail call i32 (ptr, ...) @printf( ptr @no ) nounwind62  ret i1 false63}64 65define i1 @test2(i32 %v1, i32 %v2) nounwind {66; X86-LABEL: test2:67; X86:       # %bb.0: # %entry68; X86-NEXT:    subl $12, %esp69; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax70; X86-NEXT:    imull {{[0-9]+}}(%esp), %eax71; X86-NEXT:    jno .LBB1_272; X86-NEXT:  # %bb.1: # %overflow73; X86-NEXT:    movl $no, (%esp)74; X86-NEXT:    calll printf@PLT75; X86-NEXT:    xorl %eax, %eax76; X86-NEXT:    addl $12, %esp77; X86-NEXT:    retl78; X86-NEXT:  .LBB1_2: # %normal79; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)80; X86-NEXT:    movl $ok, (%esp)81; X86-NEXT:    calll printf@PLT82; X86-NEXT:    movb $1, %al83; X86-NEXT:    addl $12, %esp84; X86-NEXT:    retl85;86; X64-LABEL: test2:87; X64:       # %bb.0: # %entry88; X64-NEXT:    pushq %rax89; X64-NEXT:    movl %edi, %eax90; X64-NEXT:    imull %esi, %eax91; X64-NEXT:    jno .LBB1_292; X64-NEXT:  # %bb.1: # %overflow93; X64-NEXT:    movl $no, %edi94; X64-NEXT:    xorl %eax, %eax95; X64-NEXT:    callq printf@PLT96; X64-NEXT:    xorl %eax, %eax97; X64-NEXT:    popq %rcx98; X64-NEXT:    retq99; X64-NEXT:  .LBB1_2: # %normal100; X64-NEXT:    movl $ok, %edi101; X64-NEXT:    movl %eax, %esi102; X64-NEXT:    xorl %eax, %eax103; X64-NEXT:    callq printf@PLT104; X64-NEXT:    movb $1, %al105; X64-NEXT:    popq %rcx106; X64-NEXT:    retq107entry:108  %t = call {i32, i1} @llvm.smul.with.overflow.i32(i32 %v1, i32 %v2)109  %sum = extractvalue {i32, i1} %t, 0110  %obit = extractvalue {i32, i1} %t, 1111  br i1 %obit, label %overflow, label %normal112 113overflow:114  %t2 = tail call i32 (ptr, ...) @printf( ptr @no ) nounwind115  ret i1 false116 117normal:118  %t1 = tail call i32 (ptr, ...) @printf( ptr @ok, i32 %sum ) nounwind119  ret i1 true120}121 122declare i32 @printf(ptr, ...) nounwind123declare {i32, i1} @llvm.smul.with.overflow.i32(i32, i32)124 125define i32 @test3(i32 %a, i32 %b) nounwind readnone {126; X86-LABEL: test3:127; X86:       # %bb.0: # %entry128; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax129; X86-NEXT:    addl {{[0-9]+}}(%esp), %eax130; X86-NEXT:    addl %eax, %eax131; X86-NEXT:    retl132;133; X64-LABEL: test3:134; X64:       # %bb.0: # %entry135; X64-NEXT:    # kill: def $esi killed $esi def $rsi136; X64-NEXT:    # kill: def $edi killed $edi def $rdi137; X64-NEXT:    leal (%rdi,%rsi), %eax138; X64-NEXT:    addl %eax, %eax139; X64-NEXT:    retq140entry:141	%tmp0 = add i32 %b, %a142	%tmp1 = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 %tmp0, i32 2)143	%tmp2 = extractvalue { i32, i1 } %tmp1, 0144	ret i32 %tmp2145}146 147define i32 @test4(i32 %a, i32 %b) nounwind readnone {148; X86-LABEL: test4:149; X86:       # %bb.0: # %entry150; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax151; X86-NEXT:    addl {{[0-9]+}}(%esp), %eax152; X86-NEXT:    imull $4, %eax, %eax153; X86-NEXT:    retl154;155; X64-LABEL: test4:156; X64:       # %bb.0: # %entry157; X64-NEXT:    addl %esi, %edi158; X64-NEXT:    imull $4, %edi, %eax159; X64-NEXT:    retq160entry:161	%tmp0 = add i32 %b, %a162	%tmp1 = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 %tmp0, i32 4)163	%tmp2 = extractvalue { i32, i1 } %tmp1, 0164	ret i32 %tmp2165}166 167declare { i63, i1 } @llvm.smul.with.overflow.i63(i63, i63) nounwind readnone168 169; Was returning false, should return true (not constant folded yet though).170; PR13991171define i1 @test5() nounwind {172; CHECK-LABEL: test5:173; CHECK:       # %bb.0: # %entry174; CHECK-NEXT:    movb $1, %al175; CHECK-NEXT:    ret{{[l|q]}}176entry:177  %res = call { i63, i1 } @llvm.smul.with.overflow.i63(i63 4, i63 4611686018427387903)178  %sum = extractvalue { i63, i1 } %res, 0179  %overflow = extractvalue { i63, i1 } %res, 1180  ret i1 %overflow181}182 183 184 185declare { i129, i1 } @llvm.smul.with.overflow.i129(i129, i129)186 187define { i129, i1 } @smul_ovf(i129 %x, i129 %y) nounwind {188; X86-LABEL: smul_ovf:189; X86:       # %bb.0:190; X86-NEXT:    pushl %ebp191; X86-NEXT:    pushl %ebx192; X86-NEXT:    pushl %edi193; X86-NEXT:    pushl %esi194; X86-NEXT:    subl $108, %esp195; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax196; X86-NEXT:    andl $1, %eax197; X86-NEXT:    negl %eax198; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill199; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax200; X86-NEXT:    andl $1, %eax201; X86-NEXT:    negl %eax202; X86-NEXT:    movl %eax, %ecx203; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax204; X86-NEXT:    mull %ecx205; X86-NEXT:    movl %eax, %esi206; X86-NEXT:    movl %eax, %ebx207; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill208; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill209; X86-NEXT:    addl %edx, %esi210; X86-NEXT:    movl %esi, %edi211; X86-NEXT:    movl %edx, %esi212; X86-NEXT:    adcl $0, %esi213; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax214; X86-NEXT:    mull %ecx215; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill216; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill217; X86-NEXT:    movl %edi, %ebp218; X86-NEXT:    addl %eax, %ebp219; X86-NEXT:    movl %eax, %edi220; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill221; X86-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill222; X86-NEXT:    adcl %edx, %esi223; X86-NEXT:    setb %al224; X86-NEXT:    addl %edi, %esi225; X86-NEXT:    movzbl %al, %edi226; X86-NEXT:    adcl %edx, %edi227; X86-NEXT:    movl %ebx, %eax228; X86-NEXT:    addl %esi, %eax229; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill230; X86-NEXT:    movl %ebp, %eax231; X86-NEXT:    adcl %edi, %eax232; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill233; X86-NEXT:    adcl $0, %esi234; X86-NEXT:    adcl $0, %edi235; X86-NEXT:    movl %ecx, %eax236; X86-NEXT:    mull {{[0-9]+}}(%esp)237; X86-NEXT:    movl %edx, %ebx238; X86-NEXT:    movl %eax, %ebp239; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill240; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill241; X86-NEXT:    addl %edx, %ebp242; X86-NEXT:    adcl $0, %ebx243; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload244; X86-NEXT:    mull {{[0-9]+}}(%esp)245; X86-NEXT:    addl %eax, %ebp246; X86-NEXT:    movl %eax, %ecx247; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill248; X86-NEXT:    adcl %edx, %ebx249; X86-NEXT:    setb %al250; X86-NEXT:    addl %ecx, %ebx251; X86-NEXT:    movzbl %al, %ecx252; X86-NEXT:    adcl %edx, %ecx253; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload254; X86-NEXT:    addl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill255; X86-NEXT:    adcl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill256; X86-NEXT:    movl %ebx, %edx257; X86-NEXT:    adcl $0, %edx258; X86-NEXT:    movl %ecx, %eax259; X86-NEXT:    adcl $0, %eax260; X86-NEXT:    addl %esi, %edx261; X86-NEXT:    adcl %edi, %eax262; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill263; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload264; X86-NEXT:    adcl %ebp, %eax265; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill266; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload267; X86-NEXT:    adcl %ebx, %eax268; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill269; X86-NEXT:    adcl $0, %ecx270; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill271; X86-NEXT:    movl (%esp), %esi # 4-byte Reload272; X86-NEXT:    movl %esi, %edi273; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload274; X86-NEXT:    addl %ebp, %edi275; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload276; X86-NEXT:    adcl $0, %ebx277; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload278; X86-NEXT:    addl %ecx, %edi279; X86-NEXT:    adcl %ebp, %ebx280; X86-NEXT:    movl %ebx, %ebp281; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill282; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload283; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload284; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload285; X86-NEXT:    addl %ebx, %eax286; X86-NEXT:    addl %ecx, %ebx287; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill288; X86-NEXT:    movl %ecx, %ebx289; X86-NEXT:    adcl %edi, %eax290; X86-NEXT:    movl %eax, %ecx291; X86-NEXT:    addl %esi, %ebp292; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload293; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload294; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload295; X86-NEXT:    adcl %ecx, %eax296; X86-NEXT:    addl %ebx, %edx297; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill298; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload299; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill300; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload301; X86-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill302; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload303; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill304; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx305; X86-NEXT:    movl %ebx, %eax306; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx307; X86-NEXT:    mull %ecx308; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill309; X86-NEXT:    movl %edx, %edi310; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax311; X86-NEXT:    mull %ecx312; X86-NEXT:    movl %edx, %ecx313; X86-NEXT:    movl %eax, %esi314; X86-NEXT:    addl %edi, %esi315; X86-NEXT:    adcl $0, %ecx316; X86-NEXT:    movl %ebx, %eax317; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi318; X86-NEXT:    mull %edi319; X86-NEXT:    movl %edx, %ebp320; X86-NEXT:    addl %esi, %eax321; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill322; X86-NEXT:    adcl %ecx, %ebp323; X86-NEXT:    setb %cl324; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax325; X86-NEXT:    mull %edi326; X86-NEXT:    addl %ebp, %eax327; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill328; X86-NEXT:    movzbl %cl, %eax329; X86-NEXT:    adcl %eax, %edx330; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill331; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx332; X86-NEXT:    movl %ebx, %eax333; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx334; X86-NEXT:    mull %ecx335; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill336; X86-NEXT:    movl %edx, %edi337; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax338; X86-NEXT:    mull %ecx339; X86-NEXT:    movl %edx, %ecx340; X86-NEXT:    movl %eax, %esi341; X86-NEXT:    addl %edi, %esi342; X86-NEXT:    adcl $0, %ecx343; X86-NEXT:    movl %ebx, %eax344; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp345; X86-NEXT:    mull %ebp346; X86-NEXT:    movl %edx, %edi347; X86-NEXT:    addl %esi, %eax348; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill349; X86-NEXT:    adcl %ecx, %edi350; X86-NEXT:    setb %bl351; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax352; X86-NEXT:    mull %ebp353; X86-NEXT:    movl %edx, %ebp354; X86-NEXT:    movl %eax, %ecx355; X86-NEXT:    addl %edi, %ecx356; X86-NEXT:    movzbl %bl, %eax357; X86-NEXT:    adcl %eax, %ebp358; X86-NEXT:    addl (%esp), %ecx # 4-byte Folded Reload359; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload360; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill361; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill362; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax363; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi364; X86-NEXT:    mull %edi365; X86-NEXT:    movl %edx, %esi366; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill367; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax368; X86-NEXT:    mull %edi369; X86-NEXT:    movl %edx, %edi370; X86-NEXT:    movl %eax, %ebx371; X86-NEXT:    addl %esi, %ebx372; X86-NEXT:    adcl $0, %edi373; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax374; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx375; X86-NEXT:    mull %edx376; X86-NEXT:    movl %edx, %esi377; X86-NEXT:    addl %ebx, %eax378; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill379; X86-NEXT:    adcl %edi, %esi380; X86-NEXT:    setb (%esp) # 1-byte Folded Spill381; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax382; X86-NEXT:    mull {{[0-9]+}}(%esp)383; X86-NEXT:    movl %edx, %edi384; X86-NEXT:    movl %eax, %ebx385; X86-NEXT:    addl %esi, %ebx386; X86-NEXT:    movzbl (%esp), %eax # 1-byte Folded Reload387; X86-NEXT:    adcl %eax, %edi388; X86-NEXT:    addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill389; X86-NEXT:    adcl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill390; X86-NEXT:    adcl $0, %ebx391; X86-NEXT:    adcl $0, %edi392; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload393; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload394; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill395; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax396; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx397; X86-NEXT:    mull %ecx398; X86-NEXT:    movl %edx, %ebp399; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill400; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax401; X86-NEXT:    mull %ecx402; X86-NEXT:    movl %edx, %ecx403; X86-NEXT:    movl %eax, %esi404; X86-NEXT:    addl %ebp, %esi405; X86-NEXT:    adcl $0, %ecx406; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax407; X86-NEXT:    mull {{[0-9]+}}(%esp)408; X86-NEXT:    movl %edx, %ebp409; X86-NEXT:    addl %esi, %eax410; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill411; X86-NEXT:    adcl %ecx, %ebp412; X86-NEXT:    setb %cl413; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax414; X86-NEXT:    mull {{[0-9]+}}(%esp)415; X86-NEXT:    movl %eax, %esi416; X86-NEXT:    addl %ebp, %esi417; X86-NEXT:    movzbl %cl, %eax418; X86-NEXT:    movl %edx, %ebp419; X86-NEXT:    adcl %eax, %ebp420; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload421; X86-NEXT:    addl %ebx, %ecx422; X86-NEXT:    movl (%esp), %edx # 4-byte Reload423; X86-NEXT:    adcl %edi, %edx424; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload425; X86-NEXT:    adcl %eax, %esi426; X86-NEXT:    adcl $0, %ebp427; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload428; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill429; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload430; X86-NEXT:    movl %edx, (%esp) # 4-byte Spill431; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload432; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill433; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload434; X86-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill435; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill436; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill437; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill438; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload439; X86-NEXT:    adcl $0, %eax440; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill441; X86-NEXT:    sarl $31, %eax442; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill443; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax444; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload445; X86-NEXT:    mull %ecx446; X86-NEXT:    movl %edx, %esi447; X86-NEXT:    movl %eax, %edi448; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill449; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax450; X86-NEXT:    mull %ecx451; X86-NEXT:    movl %eax, %ebp452; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill453; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill454; X86-NEXT:    addl %esi, %eax455; X86-NEXT:    movl %edx, %ebx456; X86-NEXT:    adcl $0, %ebx457; X86-NEXT:    addl %edi, %eax458; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill459; X86-NEXT:    adcl %esi, %ebx460; X86-NEXT:    setb %al461; X86-NEXT:    addl %ebp, %ebx462; X86-NEXT:    movzbl %al, %eax463; X86-NEXT:    adcl %edx, %eax464; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill465; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax466; X86-NEXT:    mull %ecx467; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill468; X86-NEXT:    movl %eax, %esi469; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill470; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax471; X86-NEXT:    mull %ecx472; X86-NEXT:    movl %eax, %edi473; X86-NEXT:    movl %eax, %ebp474; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill475; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload476; X86-NEXT:    addl %eax, %edi477; X86-NEXT:    movl %edx, %ecx478; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill479; X86-NEXT:    adcl $0, %ecx480; X86-NEXT:    addl %esi, %edi481; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill482; X86-NEXT:    adcl %eax, %ecx483; X86-NEXT:    setb %al484; X86-NEXT:    addl %ebp, %ecx485; X86-NEXT:    movzbl %al, %eax486; X86-NEXT:    adcl %edx, %eax487; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload488; X86-NEXT:    addl %ecx, %edi489; X86-NEXT:    movl %ecx, %edx490; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload491; X86-NEXT:    adcl %eax, %ecx492; X86-NEXT:    movl %ebx, %esi493; X86-NEXT:    adcl $0, %esi494; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload495; X86-NEXT:    adcl $0, %ebp496; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload497; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill498; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload499; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill500; X86-NEXT:    adcl $0, %edx501; X86-NEXT:    adcl $0, %eax502; X86-NEXT:    addl %esi, %edx503; X86-NEXT:    adcl %ebp, %eax504; X86-NEXT:    setb %cl505; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload506; X86-NEXT:    addl %edi, %edx507; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload508; X86-NEXT:    movzbl %cl, %ecx509; X86-NEXT:    adcl %ebx, %ecx510; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill511; X86-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill512; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload513; X86-NEXT:    movl %esi, %ebx514; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload515; X86-NEXT:    addl %ecx, %ebx516; X86-NEXT:    adcl $0, %ecx517; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload518; X86-NEXT:    movl %ebx, %ebp519; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload520; X86-NEXT:    movl %ecx, %ebx521; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill522; X86-NEXT:    movl %edi, %ecx523; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload524; X86-NEXT:    addl %ecx, %edi525; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload526; X86-NEXT:    addl %esi, %ecx527; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill528; X86-NEXT:    adcl %ebp, %edi529; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload530; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload531; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload532; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload533; X86-NEXT:    adcl %edi, %ecx534; X86-NEXT:    addl %esi, %edx535; X86-NEXT:    adcl %eax, %ebp536; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload537; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload538; X86-NEXT:    addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill539; X86-NEXT:    movl (%esp), %eax # 4-byte Reload540; X86-NEXT:    adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill541; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload542; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload543; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill544; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload545; X86-NEXT:    adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill546; X86-NEXT:    adcl $0, %edx547; X86-NEXT:    adcl $0, %ebp548; X86-NEXT:    adcl $0, %ebx549; X86-NEXT:    adcl $0, %ecx550; X86-NEXT:    movl %ecx, %esi551; X86-NEXT:    sarl $31, %esi552; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload553; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill554; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload555; X86-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill556; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload557; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill558; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload559; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill560; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload561; X86-NEXT:    movl %eax, %ecx562; X86-NEXT:    adcl %esi, %ecx563; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill564; X86-NEXT:    movl %eax, %ecx565; X86-NEXT:    adcl %esi, %ecx566; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill567; X86-NEXT:    movl %eax, %ecx568; X86-NEXT:    adcl %esi, %ecx569; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill570; X86-NEXT:    adcl %eax, %esi571; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill572; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload573; X86-NEXT:    mull {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload574; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill575; X86-NEXT:    movl %eax, %esi576; X86-NEXT:    addl %edx, %esi577; X86-NEXT:    movl %edx, %ecx578; X86-NEXT:    adcl $0, %ecx579; X86-NEXT:    addl %eax, %esi580; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill581; X86-NEXT:    adcl %edx, %ecx582; X86-NEXT:    setb %bl583; X86-NEXT:    addl %eax, %ecx584; X86-NEXT:    movzbl %bl, %ebx585; X86-NEXT:    adcl %edx, %ebx586; X86-NEXT:    addl %ecx, %eax587; X86-NEXT:    movl %esi, %edi588; X86-NEXT:    adcl %ebx, %edi589; X86-NEXT:    movl %ecx, %ebp590; X86-NEXT:    adcl $0, %ebp591; X86-NEXT:    movl %ebx, %edx592; X86-NEXT:    adcl $0, %edx593; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload594; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill595; X86-NEXT:    adcl %esi, %edi596; X86-NEXT:    movl %edi, (%esp) # 4-byte Spill597; X86-NEXT:    movl %ecx, %esi598; X86-NEXT:    adcl $0, %esi599; X86-NEXT:    movl %ebx, %edi600; X86-NEXT:    adcl $0, %edi601; X86-NEXT:    addl %ebp, %esi602; X86-NEXT:    adcl %edx, %edi603; X86-NEXT:    setb %al604; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload605; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload606; X86-NEXT:    adcl %ebp, %edi607; X86-NEXT:    movzbl %al, %eax608; X86-NEXT:    adcl %ecx, %eax609; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill610; X86-NEXT:    movl %ebx, %eax611; X86-NEXT:    adcl $0, %eax612; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill613; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload614; X86-NEXT:    imull {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload615; X86-NEXT:    addl %eax, %eax616; X86-NEXT:    adcl %edx, %edx617; X86-NEXT:    addl %ecx, %eax618; X86-NEXT:    adcl %ebx, %edx619; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload620; X86-NEXT:    addl %ebx, %ebx621; X86-NEXT:    movl %ebp, %ecx622; X86-NEXT:    adcl %ebp, %ecx623; X86-NEXT:    adcl %eax, %eax624; X86-NEXT:    adcl %edx, %edx625; X86-NEXT:    addl %esi, %ebx626; X86-NEXT:    adcl %edi, %ecx627; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload628; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload629; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload630; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload631; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload632; X86-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill633; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload634; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload635; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill636; X86-NEXT:    movl (%esp), %edi # 4-byte Reload637; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload638; X86-NEXT:    movl %edi, (%esp) # 4-byte Spill639; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload640; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload641; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload642; X86-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload643; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload644; X86-NEXT:    movl %edi, %ebp645; X86-NEXT:    sarl $31, %ebp646; X86-NEXT:    xorl %ebp, %ebx647; X86-NEXT:    xorl %ebp, %esi648; X86-NEXT:    orl %ebx, %esi649; X86-NEXT:    xorl %ebp, %eax650; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload651; X86-NEXT:    xorl %ebp, %ebx652; X86-NEXT:    orl %eax, %ebx653; X86-NEXT:    orl %esi, %ebx654; X86-NEXT:    xorl %ebp, %ecx655; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload656; X86-NEXT:    xorl %ebp, %eax657; X86-NEXT:    orl %ecx, %eax658; X86-NEXT:    xorl %ebp, %edx659; X86-NEXT:    xorl (%esp), %ebp # 4-byte Folded Reload660; X86-NEXT:    orl %edx, %ebp661; X86-NEXT:    orl %eax, %ebp662; X86-NEXT:    orl %ebx, %ebp663; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload664; X86-NEXT:    movl %edx, %ecx665; X86-NEXT:    andl $1, %ecx666; X86-NEXT:    movl %ecx, %eax667; X86-NEXT:    negl %eax668; X86-NEXT:    xorl %eax, %edi669; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload670; X86-NEXT:    xorl %eax, %esi671; X86-NEXT:    orl %edi, %esi672; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload673; X86-NEXT:    xorl %eax, %edi674; X86-NEXT:    xorl %edx, %eax675; X86-NEXT:    orl %edi, %eax676; X86-NEXT:    orl %esi, %eax677; X86-NEXT:    orl %ebp, %eax678; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax679; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload680; X86-NEXT:    movl %edx, 4(%eax)681; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload682; X86-NEXT:    movl %edx, (%eax)683; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload684; X86-NEXT:    movl %edx, 8(%eax)685; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload686; X86-NEXT:    movl %edx, 12(%eax)687; X86-NEXT:    movb %cl, 16(%eax)688; X86-NEXT:    setne 32(%eax)689; X86-NEXT:    addl $108, %esp690; X86-NEXT:    popl %esi691; X86-NEXT:    popl %edi692; X86-NEXT:    popl %ebx693; X86-NEXT:    popl %ebp694; X86-NEXT:    retl $4695;696; X64-LABEL: smul_ovf:697; X64:       # %bb.0:698; X64-NEXT:    pushq %rbp699; X64-NEXT:    pushq %r15700; X64-NEXT:    pushq %r14701; X64-NEXT:    pushq %r13702; X64-NEXT:    pushq %r12703; X64-NEXT:    pushq %rbx704; X64-NEXT:    movq %rcx, %r14705; X64-NEXT:    movq %rdx, %r15706; X64-NEXT:    movq %rsi, %rbx707; X64-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill708; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r13709; X64-NEXT:    andl $1, %r13d710; X64-NEXT:    negq %r13711; X64-NEXT:    andl $1, %r14d712; X64-NEXT:    negq %r14713; X64-NEXT:    movq %r14, %rax714; X64-NEXT:    mulq %r8715; X64-NEXT:    movq %rdx, %r11716; X64-NEXT:    movq %rax, %rdi717; X64-NEXT:    movq %rax, %r12718; X64-NEXT:    addq %rdx, %r12719; X64-NEXT:    adcq $0, %r11720; X64-NEXT:    movq %r14, %rax721; X64-NEXT:    mulq %r9722; X64-NEXT:    addq %rax, %r12723; X64-NEXT:    adcq %rdx, %r11724; X64-NEXT:    setb %cl725; X64-NEXT:    movzbl %cl, %ecx726; X64-NEXT:    addq %rax, %r11727; X64-NEXT:    adcq %rdx, %rcx728; X64-NEXT:    addq %rdi, %r11729; X64-NEXT:    adcq %r12, %rcx730; X64-NEXT:    movq %rsi, %rax731; X64-NEXT:    mulq %r8732; X64-NEXT:    movq %rdx, %r10733; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill734; X64-NEXT:    movq %r15, %rax735; X64-NEXT:    mulq %r8736; X64-NEXT:    movq %rdx, %r8737; X64-NEXT:    movq %rax, %rbp738; X64-NEXT:    addq %r10, %rbp739; X64-NEXT:    adcq $0, %r8740; X64-NEXT:    movq %rsi, %rax741; X64-NEXT:    mulq %r9742; X64-NEXT:    movq %rdx, %rsi743; X64-NEXT:    addq %rbp, %rax744; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill745; X64-NEXT:    adcq %r8, %rsi746; X64-NEXT:    setb %al747; X64-NEXT:    movzbl %al, %ebp748; X64-NEXT:    movq %r15, %rax749; X64-NEXT:    mulq %r9750; X64-NEXT:    movq %rdx, %r8751; X64-NEXT:    movq %rax, %r10752; X64-NEXT:    addq %rsi, %r10753; X64-NEXT:    adcq %rbp, %r8754; X64-NEXT:    addq %rdi, %r10755; X64-NEXT:    adcq %r12, %r8756; X64-NEXT:    adcq $0, %r11757; X64-NEXT:    adcq $0, %rcx758; X64-NEXT:    movq %r13, %rax759; X64-NEXT:    mulq %rbx760; X64-NEXT:    movq %rdx, %rsi761; X64-NEXT:    movq %rax, %r9762; X64-NEXT:    movq %r15, %rax763; X64-NEXT:    mulq %r13764; X64-NEXT:    movq %rax, %rbx765; X64-NEXT:    addq %rsi, %rbx766; X64-NEXT:    movq %rdx, %r15767; X64-NEXT:    adcq $0, %r15768; X64-NEXT:    addq %r9, %rbx769; X64-NEXT:    adcq %rsi, %r15770; X64-NEXT:    setb %sil771; X64-NEXT:    movzbl %sil, %esi772; X64-NEXT:    addq %rax, %r15773; X64-NEXT:    adcq %rdx, %rsi774; X64-NEXT:    addq %r9, %r15775; X64-NEXT:    adcq %rbx, %rsi776; X64-NEXT:    addq %r9, %r10777; X64-NEXT:    adcq %r8, %rbx778; X64-NEXT:    adcq $0, %r15779; X64-NEXT:    adcq $0, %rsi780; X64-NEXT:    movq %rsi, %rax781; X64-NEXT:    sarq $63, %rax782; X64-NEXT:    movq %rcx, %rdi783; X64-NEXT:    sarq $63, %rdi784; X64-NEXT:    addq %r11, %r15785; X64-NEXT:    adcq %rcx, %rsi786; X64-NEXT:    movq %rdi, %r9787; X64-NEXT:    adcq %rax, %r9788; X64-NEXT:    adcq %rax, %rdi789; X64-NEXT:    movq %r14, %rax790; X64-NEXT:    mulq %r13791; X64-NEXT:    movq %rax, %r8792; X64-NEXT:    movq %rax, %rcx793; X64-NEXT:    addq %rdx, %rcx794; X64-NEXT:    movq %rdx, %r11795; X64-NEXT:    adcq $0, %r11796; X64-NEXT:    addq %rax, %rcx797; X64-NEXT:    adcq %rdx, %r11798; X64-NEXT:    setb %al799; X64-NEXT:    addq %r8, %r11800; X64-NEXT:    movzbl %al, %r12d801; X64-NEXT:    adcq %rdx, %r12802; X64-NEXT:    movq %r13, %rax803; X64-NEXT:    imulq %r14804; X64-NEXT:    addq %rax, %rax805; X64-NEXT:    adcq %rdx, %rdx806; X64-NEXT:    addq %r11, %rax807; X64-NEXT:    adcq %r12, %rdx808; X64-NEXT:    addq %r8, %r15809; X64-NEXT:    adcq %rsi, %rcx810; X64-NEXT:    adcq %r9, %rax811; X64-NEXT:    adcq %rdi, %rdx812; X64-NEXT:    movq %rbx, %rsi813; X64-NEXT:    sarq $63, %rsi814; X64-NEXT:    xorq %rsi, %rax815; X64-NEXT:    xorq %rsi, %r15816; X64-NEXT:    orq %rax, %r15817; X64-NEXT:    xorq %rsi, %rdx818; X64-NEXT:    xorq %rcx, %rsi819; X64-NEXT:    orq %rdx, %rsi820; X64-NEXT:    orq %r15, %rsi821; X64-NEXT:    movl %r10d, %edx822; X64-NEXT:    andl $1, %edx823; X64-NEXT:    movq %rdx, %rcx824; X64-NEXT:    negq %rcx825; X64-NEXT:    xorq %rcx, %rbx826; X64-NEXT:    xorq %r10, %rcx827; X64-NEXT:    orq %rbx, %rcx828; X64-NEXT:    orq %rsi, %rcx829; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload830; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload831; X64-NEXT:    movq %rcx, 8(%rax)832; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload833; X64-NEXT:    movq %rcx, (%rax)834; X64-NEXT:    movb %dl, 16(%rax)835; X64-NEXT:    setne 32(%rax)836; X64-NEXT:    popq %rbx837; X64-NEXT:    popq %r12838; X64-NEXT:    popq %r13839; X64-NEXT:    popq %r14840; X64-NEXT:    popq %r15841; X64-NEXT:    popq %rbp842; X64-NEXT:    retq843  %r = tail call { i129, i1 } @llvm.smul.with.overflow.i129(i129 %x, i129 %y)844  ret { i129, i1 } %r845}846