1298 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-darwin-unknown < %s | FileCheck %s --check-prefix=X643; RUN: llc -mtriple=i686-darwin-unknown < %s | FileCheck %s --check-prefix=X864 5define zeroext i1 @smuloi128(i128 %v1, i128 %v2, ptr %res) {6; X64-LABEL: smuloi128:7; X64: ## %bb.0:8; X64-NEXT: pushq %r159; X64-NEXT: .cfi_def_cfa_offset 1610; X64-NEXT: pushq %r1411; X64-NEXT: .cfi_def_cfa_offset 2412; X64-NEXT: pushq %rbx13; X64-NEXT: .cfi_def_cfa_offset 3214; X64-NEXT: .cfi_offset %rbx, -3215; X64-NEXT: .cfi_offset %r14, -2416; X64-NEXT: .cfi_offset %r15, -1617; X64-NEXT: movq %rdx, %r1018; X64-NEXT: movq %rsi, %r919; X64-NEXT: movq %rsi, %r1420; X64-NEXT: sarq $63, %r1421; X64-NEXT: imulq %rdx, %r1422; X64-NEXT: movq %rdi, %rax23; X64-NEXT: mulq %rdx24; X64-NEXT: movq %rdx, %r1125; X64-NEXT: movq %rax, %rsi26; X64-NEXT: movq %r9, %rax27; X64-NEXT: mulq %r1028; X64-NEXT: movq %rdx, %r1029; X64-NEXT: movq %rax, %rbx30; X64-NEXT: addq %r11, %rbx31; X64-NEXT: adcq %r14, %r1032; X64-NEXT: movq %r10, %r1433; X64-NEXT: sarq $63, %r1434; X64-NEXT: movq %rcx, %r1535; X64-NEXT: sarq $63, %r1536; X64-NEXT: imulq %rdi, %r1537; X64-NEXT: movq %rdi, %rax38; X64-NEXT: mulq %rcx39; X64-NEXT: movq %rdx, %r1140; X64-NEXT: movq %rax, %rdi41; X64-NEXT: addq %rbx, %rdi42; X64-NEXT: adcq %r15, %r1143; X64-NEXT: movq %r11, %rbx44; X64-NEXT: sarq $63, %rbx45; X64-NEXT: addq %r10, %r1146; X64-NEXT: adcq %r14, %rbx47; X64-NEXT: movq %r9, %rax48; X64-NEXT: imulq %rcx49; X64-NEXT: addq %r11, %rax50; X64-NEXT: adcq %rbx, %rdx51; X64-NEXT: movq %rdi, 8(%r8)52; X64-NEXT: sarq $63, %rdi53; X64-NEXT: xorq %rdi, %rdx54; X64-NEXT: xorq %rax, %rdi55; X64-NEXT: orq %rdx, %rdi56; X64-NEXT: setne %al57; X64-NEXT: movq %rsi, (%r8)58; X64-NEXT: popq %rbx59; X64-NEXT: popq %r1460; X64-NEXT: popq %r1561; X64-NEXT: retq62;63; X86-LABEL: smuloi128:64; X86: ## %bb.0:65; X86-NEXT: pushl %ebp66; X86-NEXT: .cfi_def_cfa_offset 867; X86-NEXT: pushl %ebx68; X86-NEXT: .cfi_def_cfa_offset 1269; X86-NEXT: pushl %edi70; X86-NEXT: .cfi_def_cfa_offset 1671; X86-NEXT: pushl %esi72; X86-NEXT: .cfi_def_cfa_offset 2073; X86-NEXT: subl $44, %esp74; X86-NEXT: .cfi_def_cfa_offset 6475; X86-NEXT: .cfi_offset %esi, -2076; X86-NEXT: .cfi_offset %edi, -1677; X86-NEXT: .cfi_offset %ebx, -1278; X86-NEXT: .cfi_offset %ebp, -879; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx80; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp81; X86-NEXT: movl {{[0-9]+}}(%esp), %esi82; X86-NEXT: movl %ebp, %eax83; X86-NEXT: mull %esi84; X86-NEXT: movl %edx, %ebx85; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill86; X86-NEXT: movl %ecx, %eax87; X86-NEXT: mull %esi88; X86-NEXT: movl %edx, %ecx89; X86-NEXT: movl %eax, %edi90; X86-NEXT: addl %ebx, %edi91; X86-NEXT: movl {{[0-9]+}}(%esp), %esi92; X86-NEXT: adcl $0, %ecx93; X86-NEXT: movl %ebp, %eax94; X86-NEXT: mull %esi95; X86-NEXT: movl %edx, %ebp96; X86-NEXT: addl %edi, %eax97; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill98; X86-NEXT: adcl %ecx, %ebp99; X86-NEXT: setb %cl100; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx101; X86-NEXT: movl %ebx, %eax102; X86-NEXT: mull %esi103; X86-NEXT: movl %edx, %edi104; X86-NEXT: movl %eax, %esi105; X86-NEXT: addl %ebp, %esi106; X86-NEXT: movzbl %cl, %eax107; X86-NEXT: adcl %eax, %edi108; X86-NEXT: sarl $31, %ebx109; X86-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill110; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp111; X86-NEXT: imull %ebx, %ebp112; X86-NEXT: movl {{[0-9]+}}(%esp), %eax113; X86-NEXT: mull %ebx114; X86-NEXT: movl %edx, %ecx115; X86-NEXT: addl %eax, %ecx116; X86-NEXT: addl %ebp, %ecx117; X86-NEXT: addl %eax, %esi118; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill119; X86-NEXT: adcl %edi, %ecx120; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx121; X86-NEXT: movl %ebx, %eax122; X86-NEXT: movl {{[0-9]+}}(%esp), %esi123; X86-NEXT: mull %esi124; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill125; X86-NEXT: movl %edx, %edi126; X86-NEXT: movl {{[0-9]+}}(%esp), %eax127; X86-NEXT: mull %esi128; X86-NEXT: movl %edx, %esi129; X86-NEXT: movl %eax, %ebp130; X86-NEXT: addl %edi, %ebp131; X86-NEXT: adcl $0, %esi132; X86-NEXT: movl %ebx, %eax133; X86-NEXT: mull {{[0-9]+}}(%esp)134; X86-NEXT: movl %edx, %edi135; X86-NEXT: addl %ebp, %eax136; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill137; X86-NEXT: adcl %esi, %edi138; X86-NEXT: setb %bl139; X86-NEXT: movl {{[0-9]+}}(%esp), %esi140; X86-NEXT: movl %esi, %eax141; X86-NEXT: mull {{[0-9]+}}(%esp)142; X86-NEXT: addl %edi, %eax143; X86-NEXT: movzbl %bl, %edi144; X86-NEXT: adcl %edi, %edx145; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload146; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill147; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload148; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill149; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill150; X86-NEXT: adcl $0, %ecx151; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill152; X86-NEXT: sarl $31, %ecx153; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill154; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx155; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp156; X86-NEXT: movl %ebp, %eax157; X86-NEXT: mull %ecx158; X86-NEXT: movl %edx, %ebx159; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill160; X86-NEXT: movl %esi, %eax161; X86-NEXT: mull %ecx162; X86-NEXT: movl %edx, %esi163; X86-NEXT: movl %eax, %edi164; X86-NEXT: addl %ebx, %edi165; X86-NEXT: adcl $0, %esi166; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx167; X86-NEXT: movl %ebp, %eax168; X86-NEXT: mull %ebx169; X86-NEXT: movl %ebx, %ebp170; X86-NEXT: movl %edx, %ebx171; X86-NEXT: addl %edi, %eax172; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill173; X86-NEXT: adcl %esi, %ebx174; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill175; X86-NEXT: movl {{[0-9]+}}(%esp), %eax176; X86-NEXT: mull %ebp177; X86-NEXT: movl %edx, %edi178; X86-NEXT: movl %eax, %ecx179; X86-NEXT: addl %ebx, %ecx180; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload181; X86-NEXT: adcl %eax, %edi182; X86-NEXT: movl %ebp, %esi183; X86-NEXT: sarl $31, %esi184; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx185; X86-NEXT: imull %esi, %ebx186; X86-NEXT: movl %esi, %eax187; X86-NEXT: mull {{[0-9]+}}(%esp)188; X86-NEXT: movl %edx, %ebp189; X86-NEXT: addl %ebx, %ebp190; X86-NEXT: addl %eax, %ebp191; X86-NEXT: addl %eax, %ecx192; X86-NEXT: adcl %edi, %ebp193; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Reload194; X86-NEXT: addl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill195; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Reload196; X86-NEXT: adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill197; X86-NEXT: adcl $0, %ecx198; X86-NEXT: adcl $0, %ebp199; X86-NEXT: movl %ebp, %eax200; X86-NEXT: sarl $31, %eax201; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload202; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill203; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload204; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload205; X86-NEXT: movl %edx, %ecx206; X86-NEXT: adcl %eax, %ecx207; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill208; X86-NEXT: adcl %edx, %eax209; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill210; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx211; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload212; X86-NEXT: imull %ecx, %ebx213; X86-NEXT: movl {{[0-9]+}}(%esp), %eax214; X86-NEXT: mull %ecx215; X86-NEXT: movl %edx, %ecx216; X86-NEXT: movl %eax, %edi217; X86-NEXT: addl %eax, %ecx218; X86-NEXT: addl %ebx, %ecx219; X86-NEXT: movl %esi, %ebx220; X86-NEXT: movl {{[0-9]+}}(%esp), %eax221; X86-NEXT: imull %eax, %ebx222; X86-NEXT: movl %esi, %eax223; X86-NEXT: movl {{[0-9]+}}(%esp), %edx224; X86-NEXT: mull %edx225; X86-NEXT: movl %edx, %esi226; X86-NEXT: addl %ebx, %esi227; X86-NEXT: addl %eax, %esi228; X86-NEXT: addl %edi, %eax229; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill230; X86-NEXT: adcl %ecx, %esi231; X86-NEXT: movl {{[0-9]+}}(%esp), %eax232; X86-NEXT: movl {{[0-9]+}}(%esp), %edi233; X86-NEXT: mull %edi234; X86-NEXT: movl %edx, %ecx235; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill236; X86-NEXT: movl {{[0-9]+}}(%esp), %eax237; X86-NEXT: mull %edi238; X86-NEXT: movl %edx, %ebx239; X86-NEXT: movl %eax, %edi240; X86-NEXT: addl %ecx, %edi241; X86-NEXT: adcl $0, %ebx242; X86-NEXT: movl {{[0-9]+}}(%esp), %eax243; X86-NEXT: mull {{[0-9]+}}(%esp)244; X86-NEXT: movl %edx, %ecx245; X86-NEXT: addl %edi, %eax246; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill247; X86-NEXT: adcl %ebx, %ecx248; X86-NEXT: setb %bl249; X86-NEXT: movl {{[0-9]+}}(%esp), %eax250; X86-NEXT: mull {{[0-9]+}}(%esp)251; X86-NEXT: addl %ecx, %eax252; X86-NEXT: movzbl %bl, %ecx253; X86-NEXT: adcl %ecx, %edx254; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload255; X86-NEXT: adcl %esi, %edx256; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Reload257; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload258; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Reload259; X86-NEXT: adcl %ebp, %ebx260; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload261; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload262; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Reload263; X86-NEXT: movl %esi, %ecx264; X86-NEXT: sarl $31, %ecx265; X86-NEXT: xorl %ecx, %eax266; X86-NEXT: xorl %ecx, %edi267; X86-NEXT: orl %eax, %edi268; X86-NEXT: xorl %ecx, %edx269; X86-NEXT: xorl %ebx, %ecx270; X86-NEXT: orl %edx, %ecx271; X86-NEXT: orl %edi, %ecx272; X86-NEXT: movl {{[0-9]+}}(%esp), %eax273; X86-NEXT: movl %esi, 12(%eax)274; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload275; X86-NEXT: movl %ecx, (%eax)276; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload277; X86-NEXT: movl %ecx, 4(%eax)278; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload279; X86-NEXT: movl %ecx, 8(%eax)280; X86-NEXT: setne %al281; X86-NEXT: addl $44, %esp282; X86-NEXT: popl %esi283; X86-NEXT: popl %edi284; X86-NEXT: popl %ebx285; X86-NEXT: popl %ebp286; X86-NEXT: retl287 %t = call {i128, i1} @llvm.smul.with.overflow.i128(i128 %v1, i128 %v2)288 %val = extractvalue {i128, i1} %t, 0289 %obit = extractvalue {i128, i1} %t, 1290 store i128 %val, ptr %res291 ret i1 %obit292}293 294define zeroext i1 @smuloi256(i256 %v1, i256 %v2, ptr %res) {295; X64-LABEL: smuloi256:296; X64: ## %bb.0:297; X64-NEXT: pushq %rbp298; X64-NEXT: .cfi_def_cfa_offset 16299; X64-NEXT: pushq %r15300; X64-NEXT: .cfi_def_cfa_offset 24301; X64-NEXT: pushq %r14302; X64-NEXT: .cfi_def_cfa_offset 32303; X64-NEXT: pushq %r13304; X64-NEXT: .cfi_def_cfa_offset 40305; X64-NEXT: pushq %r12306; X64-NEXT: .cfi_def_cfa_offset 48307; X64-NEXT: pushq %rbx308; X64-NEXT: .cfi_def_cfa_offset 56309; X64-NEXT: .cfi_offset %rbx, -56310; X64-NEXT: .cfi_offset %r12, -48311; X64-NEXT: .cfi_offset %r13, -40312; X64-NEXT: .cfi_offset %r14, -32313; X64-NEXT: .cfi_offset %r15, -24314; X64-NEXT: .cfi_offset %rbp, -16315; X64-NEXT: movq %r8, %r12316; X64-NEXT: movq %rcx, %rbx317; X64-NEXT: movq %rdx, %r8318; X64-NEXT: movq %rsi, %r10319; X64-NEXT: movq %rdi, %r11320; X64-NEXT: movq %rdx, %rax321; X64-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill322; X64-NEXT: mulq %r12323; X64-NEXT: movq %rdx, %rsi324; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill325; X64-NEXT: movq %rcx, %rax326; X64-NEXT: mulq %r12327; X64-NEXT: movq %rdx, %rcx328; X64-NEXT: movq %rax, %r14329; X64-NEXT: addq %rsi, %r14330; X64-NEXT: adcq $0, %rcx331; X64-NEXT: movq %r8, %rax332; X64-NEXT: mulq %r9333; X64-NEXT: movq %rdx, %rsi334; X64-NEXT: movq %rax, %r13335; X64-NEXT: addq %r14, %r13336; X64-NEXT: adcq %rcx, %rsi337; X64-NEXT: setb %al338; X64-NEXT: movzbl %al, %ecx339; X64-NEXT: movq %rbx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill340; X64-NEXT: movq %rbx, %rax341; X64-NEXT: mulq %r9342; X64-NEXT: movq %rdx, %r8343; X64-NEXT: movq %rax, %r14344; X64-NEXT: addq %rsi, %r14345; X64-NEXT: adcq %rcx, %r8346; X64-NEXT: movq %rbx, %rcx347; X64-NEXT: sarq $63, %rcx348; X64-NEXT: movq %r9, %rsi349; X64-NEXT: imulq %rcx, %rsi350; X64-NEXT: movq %r12, %rax351; X64-NEXT: mulq %rcx352; X64-NEXT: movq %rdx, %r15353; X64-NEXT: addq %rax, %r15354; X64-NEXT: addq %rsi, %r15355; X64-NEXT: addq %rax, %r14356; X64-NEXT: adcq %r8, %r15357; X64-NEXT: movq %rdi, %rax358; X64-NEXT: mulq %r12359; X64-NEXT: movq %rdx, %rsi360; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill361; X64-NEXT: movq %r10, %rax362; X64-NEXT: mulq %r12363; X64-NEXT: movq %rdx, %rdi364; X64-NEXT: movq %rax, %r12365; X64-NEXT: addq %rsi, %r12366; X64-NEXT: adcq $0, %rdi367; X64-NEXT: movq %r11, %rax368; X64-NEXT: mulq %r9369; X64-NEXT: movq %rdx, %rbx370; X64-NEXT: addq %r12, %rax371; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill372; X64-NEXT: adcq %rdi, %rbx373; X64-NEXT: setb %dil374; X64-NEXT: movq %r10, %rax375; X64-NEXT: mulq %r9376; X64-NEXT: movq %rdx, %rbp377; X64-NEXT: movq %rax, %rsi378; X64-NEXT: addq %rbx, %rsi379; X64-NEXT: movq {{[0-9]+}}(%rsp), %r8380; X64-NEXT: movzbl %dil, %eax381; X64-NEXT: adcq %rax, %rbp382; X64-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %rsi ## 8-byte Folded Reload383; X64-NEXT: adcq %r13, %rbp384; X64-NEXT: adcq $0, %r14385; X64-NEXT: adcq $0, %r15386; X64-NEXT: movq %r15, %r12387; X64-NEXT: sarq $63, %r12388; X64-NEXT: movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill389; X64-NEXT: movq %r11, %rax390; X64-NEXT: mulq %r8391; X64-NEXT: movq %rdx, %rdi392; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill393; X64-NEXT: movq %r10, %rax394; X64-NEXT: mulq %r8395; X64-NEXT: movq %rdx, %r13396; X64-NEXT: movq %rax, %r9397; X64-NEXT: addq %rdi, %r9398; X64-NEXT: adcq $0, %r13399; X64-NEXT: movq {{[0-9]+}}(%rsp), %rdi400; X64-NEXT: movq %r11, %rax401; X64-NEXT: mulq %rdi402; X64-NEXT: movq %rdi, %r11403; X64-NEXT: movq %rdx, %rdi404; X64-NEXT: addq %r9, %rax405; X64-NEXT: movq %rax, %rbx406; X64-NEXT: adcq %r13, %rdi407; X64-NEXT: setb %r8b408; X64-NEXT: movq %r10, %rax409; X64-NEXT: mulq %r11410; X64-NEXT: movq %rdx, %r9411; X64-NEXT: movq %rax, %r13412; X64-NEXT: addq %rdi, %r13413; X64-NEXT: movzbl %r8b, %eax414; X64-NEXT: adcq %rax, %r9415; X64-NEXT: movq %r11, %rdi416; X64-NEXT: movq %r11, %r8417; X64-NEXT: sarq $63, %rdi418; X64-NEXT: imulq %rdi, %r10419; X64-NEXT: movq %rdi, %rax420; X64-NEXT: mulq {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Folded Reload421; X64-NEXT: movq %rdx, %r11422; X64-NEXT: addq %r10, %r11423; X64-NEXT: addq %rax, %r11424; X64-NEXT: addq %rax, %r13425; X64-NEXT: adcq %r9, %r11426; X64-NEXT: addq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Folded Spill427; X64-NEXT: adcq %rbp, %rbx428; X64-NEXT: movq %rbx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill429; X64-NEXT: adcq $0, %r13430; X64-NEXT: adcq $0, %r11431; X64-NEXT: movq %r11, %rbp432; X64-NEXT: sarq $63, %rbp433; X64-NEXT: addq %r14, %r13434; X64-NEXT: adcq %r15, %r11435; X64-NEXT: movq %r12, %rax436; X64-NEXT: adcq %rbp, %rax437; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill438; X64-NEXT: adcq %r12, %rbp439; X64-NEXT: movq %r8, %rbx440; X64-NEXT: imulq %rcx, %r8441; X64-NEXT: movq {{[0-9]+}}(%rsp), %r15442; X64-NEXT: movq %r15, %rax443; X64-NEXT: mulq %rcx444; X64-NEXT: movq %rdx, %rsi445; X64-NEXT: movq %rax, %r9446; X64-NEXT: addq %rax, %rsi447; X64-NEXT: addq %r8, %rsi448; X64-NEXT: movq %rdi, %rcx449; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r12 ## 8-byte Reload450; X64-NEXT: imulq %r12, %rcx451; X64-NEXT: movq %rdi, %rax452; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi ## 8-byte Reload453; X64-NEXT: mulq %rdi454; X64-NEXT: movq %rax, %r14455; X64-NEXT: movq %rdx, %r10456; X64-NEXT: addq %rcx, %r10457; X64-NEXT: addq %rax, %r10458; X64-NEXT: addq %r9, %r14459; X64-NEXT: adcq %rsi, %r10460; X64-NEXT: movq %rdi, %rax461; X64-NEXT: movq %rdi, %rcx462; X64-NEXT: mulq %r15463; X64-NEXT: movq %rdx, %rdi464; X64-NEXT: movq %rax, %rsi465; X64-NEXT: movq %r12, %rax466; X64-NEXT: mulq %r15467; X64-NEXT: movq %rdx, %r9468; X64-NEXT: movq %rax, %r15469; X64-NEXT: addq %rdi, %r15470; X64-NEXT: adcq $0, %r9471; X64-NEXT: movq %rcx, %rax472; X64-NEXT: mulq %rbx473; X64-NEXT: movq %rdx, %r8474; X64-NEXT: movq %rax, %rdi475; X64-NEXT: addq %r15, %rdi476; X64-NEXT: adcq %r9, %r8477; X64-NEXT: setb %cl478; X64-NEXT: movq %r12, %rax479; X64-NEXT: mulq %rbx480; X64-NEXT: addq %r8, %rax481; X64-NEXT: movzbl %cl, %ecx482; X64-NEXT: adcq %rcx, %rdx483; X64-NEXT: addq %r14, %rax484; X64-NEXT: adcq %r10, %rdx485; X64-NEXT: addq %r13, %rsi486; X64-NEXT: adcq %r11, %rdi487; X64-NEXT: adcq {{[-0-9]+}}(%r{{[sb]}}p), %rax ## 8-byte Folded Reload488; X64-NEXT: adcq %rbp, %rdx489; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 ## 8-byte Reload490; X64-NEXT: movq %r8, %rcx491; X64-NEXT: sarq $63, %rcx492; X64-NEXT: xorq %rcx, %rax493; X64-NEXT: xorq %rcx, %rsi494; X64-NEXT: orq %rax, %rsi495; X64-NEXT: xorq %rcx, %rdx496; X64-NEXT: xorq %rdi, %rcx497; X64-NEXT: orq %rdx, %rcx498; X64-NEXT: orq %rsi, %rcx499; X64-NEXT: movq {{[0-9]+}}(%rsp), %rax500; X64-NEXT: movq %r8, 24(%rax)501; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx ## 8-byte Reload502; X64-NEXT: movq %rcx, (%rax)503; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx ## 8-byte Reload504; X64-NEXT: movq %rcx, 8(%rax)505; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx ## 8-byte Reload506; X64-NEXT: movq %rcx, 16(%rax)507; X64-NEXT: setne %al508; X64-NEXT: popq %rbx509; X64-NEXT: popq %r12510; X64-NEXT: popq %r13511; X64-NEXT: popq %r14512; X64-NEXT: popq %r15513; X64-NEXT: popq %rbp514; X64-NEXT: retq515;516; X86-LABEL: smuloi256:517; X86: ## %bb.0:518; X86-NEXT: pushl %ebp519; X86-NEXT: .cfi_def_cfa_offset 8520; X86-NEXT: pushl %ebx521; X86-NEXT: .cfi_def_cfa_offset 12522; X86-NEXT: pushl %edi523; X86-NEXT: .cfi_def_cfa_offset 16524; X86-NEXT: pushl %esi525; X86-NEXT: .cfi_def_cfa_offset 20526; X86-NEXT: subl $128, %esp527; X86-NEXT: .cfi_def_cfa_offset 148528; X86-NEXT: .cfi_offset %esi, -20529; X86-NEXT: .cfi_offset %edi, -16530; X86-NEXT: .cfi_offset %ebx, -12531; X86-NEXT: .cfi_offset %ebp, -8532; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx533; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx534; X86-NEXT: movl {{[0-9]+}}(%esp), %esi535; X86-NEXT: movl %ebx, %eax536; X86-NEXT: mull %esi537; X86-NEXT: movl %edx, %edi538; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill539; X86-NEXT: movl %ecx, %eax540; X86-NEXT: mull %esi541; X86-NEXT: movl %edx, %esi542; X86-NEXT: movl %eax, %ecx543; X86-NEXT: addl %edi, %ecx544; X86-NEXT: movl {{[0-9]+}}(%esp), %edi545; X86-NEXT: adcl $0, %esi546; X86-NEXT: movl %ebx, %eax547; X86-NEXT: mull %edi548; X86-NEXT: movl %edx, %ebx549; X86-NEXT: movl %eax, %ebp550; X86-NEXT: addl %ecx, %ebp551; X86-NEXT: adcl %esi, %ebx552; X86-NEXT: setb %cl553; X86-NEXT: movl {{[0-9]+}}(%esp), %eax554; X86-NEXT: mull %edi555; X86-NEXT: addl %ebx, %eax556; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill557; X86-NEXT: movzbl %cl, %eax558; X86-NEXT: adcl %eax, %edx559; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill560; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx561; X86-NEXT: movl %ebx, %eax562; X86-NEXT: movl {{[0-9]+}}(%esp), %esi563; X86-NEXT: mull %esi564; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill565; X86-NEXT: movl %edx, %ecx566; X86-NEXT: movl {{[0-9]+}}(%esp), %eax567; X86-NEXT: mull %esi568; X86-NEXT: movl %edx, %esi569; X86-NEXT: movl %eax, %edi570; X86-NEXT: addl %ecx, %edi571; X86-NEXT: adcl $0, %esi572; X86-NEXT: movl %ebx, %eax573; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx574; X86-NEXT: mull %ebx575; X86-NEXT: movl %edx, %ecx576; X86-NEXT: addl %edi, %eax577; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill578; X86-NEXT: adcl %esi, %ecx579; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill580; X86-NEXT: movl {{[0-9]+}}(%esp), %esi581; X86-NEXT: movl %esi, %eax582; X86-NEXT: mull %ebx583; X86-NEXT: movl %eax, %ebx584; X86-NEXT: addl %ecx, %ebx585; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload586; X86-NEXT: adcl %eax, %edx587; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload588; X86-NEXT: adcl %ebp, %edx589; X86-NEXT: movl %edx, (%esp) ## 4-byte Spill590; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill591; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill592; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx593; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp594; X86-NEXT: movl %ebp, %eax595; X86-NEXT: mull %ecx596; X86-NEXT: movl %edx, %edi597; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill598; X86-NEXT: movl %esi, %eax599; X86-NEXT: mull %ecx600; X86-NEXT: movl %edx, %ecx601; X86-NEXT: movl %eax, %esi602; X86-NEXT: addl %edi, %esi603; X86-NEXT: adcl $0, %ecx604; X86-NEXT: movl {{[0-9]+}}(%esp), %edi605; X86-NEXT: movl %ebp, %eax606; X86-NEXT: mull %edi607; X86-NEXT: movl %edi, %ebp608; X86-NEXT: movl %edx, %edi609; X86-NEXT: addl %esi, %eax610; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill611; X86-NEXT: adcl %ecx, %edi612; X86-NEXT: setb %cl613; X86-NEXT: movl {{[0-9]+}}(%esp), %eax614; X86-NEXT: mull %ebp615; X86-NEXT: movl %ebp, %esi616; X86-NEXT: movl %eax, %ebp617; X86-NEXT: addl %edi, %ebp618; X86-NEXT: movzbl %cl, %eax619; X86-NEXT: adcl %eax, %edx620; X86-NEXT: addl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill621; X86-NEXT: movl (%esp), %eax ## 4-byte Reload622; X86-NEXT: adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill623; X86-NEXT: adcl $0, %ebp624; X86-NEXT: adcl $0, %edx625; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload626; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload627; X86-NEXT: movl %edx, (%esp) ## 4-byte Spill628; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill629; X86-NEXT: movl {{[0-9]+}}(%esp), %eax630; X86-NEXT: movl {{[0-9]+}}(%esp), %edi631; X86-NEXT: mull %edi632; X86-NEXT: movl %edx, %ecx633; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill634; X86-NEXT: movl {{[0-9]+}}(%esp), %eax635; X86-NEXT: mull %edi636; X86-NEXT: movl %edx, %edi637; X86-NEXT: movl %eax, %ebx638; X86-NEXT: addl %ecx, %ebx639; X86-NEXT: adcl $0, %edi640; X86-NEXT: movl {{[0-9]+}}(%esp), %eax641; X86-NEXT: mull %esi642; X86-NEXT: movl %edx, %ecx643; X86-NEXT: movl %eax, %esi644; X86-NEXT: addl %ebx, %esi645; X86-NEXT: adcl %edi, %ecx646; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill647; X86-NEXT: movl {{[0-9]+}}(%esp), %edi648; X86-NEXT: movl %edi, %eax649; X86-NEXT: mull {{[0-9]+}}(%esp)650; X86-NEXT: movl %eax, %ebx651; X86-NEXT: addl %ecx, %ebx652; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload653; X86-NEXT: adcl %eax, %edx654; X86-NEXT: addl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill655; X86-NEXT: adcl (%esp), %esi ## 4-byte Folded Reload656; X86-NEXT: movl %esi, (%esp) ## 4-byte Spill657; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload658; X86-NEXT: adcl %eax, %ebx659; X86-NEXT: adcl $0, %edx660; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill661; X86-NEXT: movl %edi, %ebp662; X86-NEXT: sarl $31, %ebp663; X86-NEXT: movl {{[0-9]+}}(%esp), %eax664; X86-NEXT: mull %ebp665; X86-NEXT: movl %edx, %edi666; X86-NEXT: movl %eax, %ecx667; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill668; X86-NEXT: movl {{[0-9]+}}(%esp), %eax669; X86-NEXT: mull %ebp670; X86-NEXT: movl %ebp, %esi671; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill672; X86-NEXT: movl %eax, %ebp673; X86-NEXT: addl %edi, %eax674; X86-NEXT: adcl $0, %edx675; X86-NEXT: addl %ecx, %eax676; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill677; X86-NEXT: adcl %edi, %edx678; X86-NEXT: movl %edx, %ecx679; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill680; X86-NEXT: movl %esi, %eax681; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill682; X86-NEXT: imull {{[0-9]+}}(%esp), %esi683; X86-NEXT: mull {{[0-9]+}}(%esp)684; X86-NEXT: addl %esi, %edx685; X86-NEXT: addl %eax, %edx686; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Reload687; X86-NEXT: addl %edi, %eax688; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Reload689; X86-NEXT: adcl %esi, %edx690; X86-NEXT: addl %ebp, %ecx691; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 1-byte Folded Reload692; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload693; X86-NEXT: addl %eax, %ecx694; X86-NEXT: adcl %edx, %ebp695; X86-NEXT: addl %edi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill696; X86-NEXT: adcl (%esp), %esi ## 4-byte Folded Reload697; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill698; X86-NEXT: adcl %ebx, %ecx699; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill700; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload701; X86-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill702; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx703; X86-NEXT: movl %ebx, %eax704; X86-NEXT: movl {{[0-9]+}}(%esp), %esi705; X86-NEXT: mull %esi706; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill707; X86-NEXT: movl %edx, %ecx708; X86-NEXT: movl {{[0-9]+}}(%esp), %eax709; X86-NEXT: mull %esi710; X86-NEXT: movl %edx, %edi711; X86-NEXT: movl %eax, %esi712; X86-NEXT: addl %ecx, %esi713; X86-NEXT: adcl $0, %edi714; X86-NEXT: movl %ebx, %eax715; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp716; X86-NEXT: mull %ebp717; X86-NEXT: movl %edx, %ebx718; X86-NEXT: addl %esi, %eax719; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill720; X86-NEXT: adcl %edi, %ebx721; X86-NEXT: setb %cl722; X86-NEXT: movl {{[0-9]+}}(%esp), %eax723; X86-NEXT: mull %ebp724; X86-NEXT: addl %ebx, %eax725; X86-NEXT: movl %eax, (%esp) ## 4-byte Spill726; X86-NEXT: movzbl %cl, %eax727; X86-NEXT: adcl %eax, %edx728; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill729; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx730; X86-NEXT: movl %ecx, %eax731; X86-NEXT: movl {{[0-9]+}}(%esp), %edi732; X86-NEXT: mull %edi733; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill734; X86-NEXT: movl %edx, %esi735; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp736; X86-NEXT: movl %ebp, %eax737; X86-NEXT: mull %edi738; X86-NEXT: movl %edx, %ebx739; X86-NEXT: movl %eax, %edi740; X86-NEXT: addl %esi, %edi741; X86-NEXT: adcl $0, %ebx742; X86-NEXT: movl %ecx, %eax743; X86-NEXT: mull {{[0-9]+}}(%esp)744; X86-NEXT: movl %edx, %esi745; X86-NEXT: addl %edi, %eax746; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill747; X86-NEXT: adcl %ebx, %esi748; X86-NEXT: setb %cl749; X86-NEXT: movl %ebp, %eax750; X86-NEXT: mull {{[0-9]+}}(%esp)751; X86-NEXT: movl %edx, %ebp752; X86-NEXT: movl %eax, %ebx753; X86-NEXT: addl %esi, %ebx754; X86-NEXT: movzbl %cl, %eax755; X86-NEXT: adcl %eax, %ebp756; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload757; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload758; X86-NEXT: adcl $0, (%esp) ## 4-byte Folded Spill759; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill760; X86-NEXT: movl {{[0-9]+}}(%esp), %eax761; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx762; X86-NEXT: mull %ecx763; X86-NEXT: movl %edx, %edi764; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill765; X86-NEXT: movl {{[0-9]+}}(%esp), %eax766; X86-NEXT: mull %ecx767; X86-NEXT: movl %edx, %ecx768; X86-NEXT: movl %eax, %esi769; X86-NEXT: addl %edi, %esi770; X86-NEXT: adcl $0, %ecx771; X86-NEXT: movl {{[0-9]+}}(%esp), %eax772; X86-NEXT: movl {{[0-9]+}}(%esp), %edx773; X86-NEXT: mull %edx774; X86-NEXT: movl %edx, %edi775; X86-NEXT: addl %esi, %eax776; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill777; X86-NEXT: adcl %ecx, %edi778; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill779; X86-NEXT: movl {{[0-9]+}}(%esp), %eax780; X86-NEXT: mull {{[0-9]+}}(%esp)781; X86-NEXT: movl %edx, %ecx782; X86-NEXT: movl %eax, %esi783; X86-NEXT: addl %edi, %esi784; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload785; X86-NEXT: adcl %eax, %ecx786; X86-NEXT: addl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill787; X86-NEXT: adcl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill788; X86-NEXT: adcl $0, %esi789; X86-NEXT: adcl $0, %ecx790; X86-NEXT: addl (%esp), %esi ## 4-byte Folded Reload791; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload792; X86-NEXT: setb (%esp) ## 1-byte Folded Spill793; X86-NEXT: movl {{[0-9]+}}(%esp), %eax794; X86-NEXT: movl {{[0-9]+}}(%esp), %edi795; X86-NEXT: mull %edi796; X86-NEXT: movl %edx, %ebx797; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill798; X86-NEXT: movl {{[0-9]+}}(%esp), %eax799; X86-NEXT: mull %edi800; X86-NEXT: movl %edx, %edi801; X86-NEXT: movl %eax, %ebp802; X86-NEXT: addl %ebx, %ebp803; X86-NEXT: adcl $0, %edi804; X86-NEXT: movl {{[0-9]+}}(%esp), %eax805; X86-NEXT: mull {{[0-9]+}}(%esp)806; X86-NEXT: movl %edx, %ebx807; X86-NEXT: addl %ebp, %eax808; X86-NEXT: movl %eax, %ebp809; X86-NEXT: adcl %edi, %ebx810; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill811; X86-NEXT: movl {{[0-9]+}}(%esp), %eax812; X86-NEXT: mull {{[0-9]+}}(%esp)813; X86-NEXT: addl %ebx, %eax814; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 1-byte Folded Reload815; X86-NEXT: movl %edx, %edi816; X86-NEXT: adcl %ebx, %edi817; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload818; X86-NEXT: addl %esi, %edx819; X86-NEXT: movl %ebp, %esi820; X86-NEXT: adcl %ecx, %esi821; X86-NEXT: movzbl (%esp), %ecx ## 1-byte Folded Reload822; X86-NEXT: adcl %ecx, %eax823; X86-NEXT: adcl $0, %edi824; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload825; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill826; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Folded Reload827; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill828; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload829; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill830; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload831; X86-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill832; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill833; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill834; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill835; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Reload836; X86-NEXT: adcl $0, %eax837; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill838; X86-NEXT: sarl $31, %eax839; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill840; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx841; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp842; X86-NEXT: movl %ebp, %eax843; X86-NEXT: mull %ecx844; X86-NEXT: movl %edx, %esi845; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill846; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx847; X86-NEXT: movl %ebx, %eax848; X86-NEXT: mull %ecx849; X86-NEXT: movl %edx, %ecx850; X86-NEXT: movl %eax, %edi851; X86-NEXT: addl %esi, %edi852; X86-NEXT: adcl $0, %ecx853; X86-NEXT: movl {{[0-9]+}}(%esp), %esi854; X86-NEXT: movl %ebp, %eax855; X86-NEXT: mull %esi856; X86-NEXT: movl %esi, %ebp857; X86-NEXT: movl %edx, %esi858; X86-NEXT: addl %edi, %eax859; X86-NEXT: movl %eax, (%esp) ## 4-byte Spill860; X86-NEXT: adcl %ecx, %esi861; X86-NEXT: setb %cl862; X86-NEXT: movl %ebx, %eax863; X86-NEXT: mull %ebp864; X86-NEXT: addl %esi, %eax865; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill866; X86-NEXT: movzbl %cl, %eax867; X86-NEXT: adcl %eax, %edx868; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill869; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx870; X86-NEXT: movl %ebx, %eax871; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx872; X86-NEXT: mull %ecx873; X86-NEXT: movl %edx, %edi874; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill875; X86-NEXT: movl {{[0-9]+}}(%esp), %eax876; X86-NEXT: mull %ecx877; X86-NEXT: movl %edx, %ecx878; X86-NEXT: movl %eax, %esi879; X86-NEXT: addl %edi, %esi880; X86-NEXT: adcl $0, %ecx881; X86-NEXT: movl %ebx, %eax882; X86-NEXT: movl %ebp, %edi883; X86-NEXT: mull %ebp884; X86-NEXT: movl %edx, %ebp885; X86-NEXT: addl %esi, %eax886; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill887; X86-NEXT: adcl %ecx, %ebp888; X86-NEXT: setb %bl889; X86-NEXT: movl {{[0-9]+}}(%esp), %eax890; X86-NEXT: mull %edi891; X86-NEXT: movl %edx, %ecx892; X86-NEXT: movl %eax, %esi893; X86-NEXT: addl %ebp, %esi894; X86-NEXT: movzbl %bl, %eax895; X86-NEXT: adcl %eax, %ecx896; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Folded Reload897; X86-NEXT: adcl (%esp), %ecx ## 4-byte Folded Reload898; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill899; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill900; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx901; X86-NEXT: movl {{[0-9]+}}(%esp), %eax902; X86-NEXT: mull %ebx903; X86-NEXT: movl %edx, %edi904; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill905; X86-NEXT: movl {{[0-9]+}}(%esp), %eax906; X86-NEXT: mull %ebx907; X86-NEXT: movl %edx, %ebx908; X86-NEXT: movl %eax, %ebp909; X86-NEXT: addl %edi, %ebp910; X86-NEXT: adcl $0, %ebx911; X86-NEXT: movl {{[0-9]+}}(%esp), %eax912; X86-NEXT: mull {{[0-9]+}}(%esp)913; X86-NEXT: movl %edx, %edi914; X86-NEXT: addl %ebp, %eax915; X86-NEXT: movl %eax, (%esp) ## 4-byte Spill916; X86-NEXT: adcl %ebx, %edi917; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill918; X86-NEXT: movl {{[0-9]+}}(%esp), %eax919; X86-NEXT: mull {{[0-9]+}}(%esp)920; X86-NEXT: movl %edx, %ebp921; X86-NEXT: movl %eax, %ebx922; X86-NEXT: addl %edi, %ebx923; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload924; X86-NEXT: adcl %eax, %ebp925; X86-NEXT: addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill926; X86-NEXT: adcl %ecx, (%esp) ## 4-byte Folded Spill927; X86-NEXT: adcl $0, %ebx928; X86-NEXT: adcl $0, %ebp929; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload930; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload931; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill932; X86-NEXT: movl {{[0-9]+}}(%esp), %eax933; X86-NEXT: movl {{[0-9]+}}(%esp), %esi934; X86-NEXT: mull %esi935; X86-NEXT: movl %edx, %ecx936; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill937; X86-NEXT: movl {{[0-9]+}}(%esp), %eax938; X86-NEXT: mull %esi939; X86-NEXT: movl %edx, %esi940; X86-NEXT: movl %eax, %edi941; X86-NEXT: addl %ecx, %edi942; X86-NEXT: adcl $0, %esi943; X86-NEXT: movl {{[0-9]+}}(%esp), %eax944; X86-NEXT: mull {{[0-9]+}}(%esp)945; X86-NEXT: movl %edx, %ecx946; X86-NEXT: addl %edi, %eax947; X86-NEXT: movl %eax, %edi948; X86-NEXT: adcl %esi, %ecx949; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill950; X86-NEXT: movl {{[0-9]+}}(%esp), %eax951; X86-NEXT: movl {{[0-9]+}}(%esp), %esi952; X86-NEXT: mull %esi953; X86-NEXT: addl %ecx, %eax954; X86-NEXT: movl %eax, %ecx955; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload956; X86-NEXT: adcl %eax, %edx957; X86-NEXT: addl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill958; X86-NEXT: adcl %ebp, %edi959; X86-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill960; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload961; X86-NEXT: adcl %eax, %ecx962; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill963; X86-NEXT: adcl $0, %edx964; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill965; X86-NEXT: movl %esi, %ebp966; X86-NEXT: sarl $31, %ebp967; X86-NEXT: movl %ebp, %eax968; X86-NEXT: mull {{[0-9]+}}(%esp)969; X86-NEXT: movl %eax, %edi970; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill971; X86-NEXT: addl %edx, %edi972; X86-NEXT: adcl $0, %edx973; X86-NEXT: movl %edx, %ecx974; X86-NEXT: movl %ebp, %eax975; X86-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill976; X86-NEXT: mull {{[0-9]+}}(%esp)977; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill978; X86-NEXT: movl %eax, %ebx979; X86-NEXT: addl %eax, %edi980; X86-NEXT: adcl %edx, %ecx981; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill982; X86-NEXT: movl {{[0-9]+}}(%esp), %esi983; X86-NEXT: imull %ebp, %esi984; X86-NEXT: movl {{[0-9]+}}(%esp), %eax985; X86-NEXT: mull %ebp986; X86-NEXT: addl %eax, %edx987; X86-NEXT: addl %esi, %edx988; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Reload989; X86-NEXT: addl %esi, %eax990; X86-NEXT: adcl %edi, %edx991; X86-NEXT: addl %ebx, %ecx992; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 1-byte Folded Reload993; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload994; X86-NEXT: addl %eax, %ecx995; X86-NEXT: adcl %edx, %ebp996; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Reload997; X86-NEXT: addl %esi, %eax998; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload999; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1000; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1001; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1002; X86-NEXT: addl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1003; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1004; X86-NEXT: adcl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1005; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1006; X86-NEXT: adcl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1007; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1008; X86-NEXT: adcl %edx, (%esp) ## 4-byte Folded Spill1009; X86-NEXT: adcl $0, %eax1010; X86-NEXT: adcl $0, %edi1011; X86-NEXT: adcl $0, %ecx1012; X86-NEXT: adcl $0, %ebp1013; X86-NEXT: movl %ebp, %edx1014; X86-NEXT: sarl $31, %edx1015; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload1016; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1017; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload1018; X86-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1019; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1020; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1021; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1022; X86-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1023; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1024; X86-NEXT: movl %ecx, %eax1025; X86-NEXT: adcl %edx, %eax1026; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1027; X86-NEXT: movl %ecx, %eax1028; X86-NEXT: adcl %edx, %eax1029; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1030; X86-NEXT: movl %ecx, %eax1031; X86-NEXT: adcl %edx, %eax1032; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1033; X86-NEXT: adcl %ecx, %edx1034; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1035; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp1036; X86-NEXT: movl %ebp, %eax1037; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx1038; X86-NEXT: mull %ecx1039; X86-NEXT: movl %edx, %edi1040; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1041; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx1042; X86-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1043; X86-NEXT: movl %ebx, %eax1044; X86-NEXT: mull %ecx1045; X86-NEXT: movl %edx, %ecx1046; X86-NEXT: movl %eax, %esi1047; X86-NEXT: addl %edi, %esi1048; X86-NEXT: adcl $0, %ecx1049; X86-NEXT: movl %ebp, %eax1050; X86-NEXT: movl {{[0-9]+}}(%esp), %edi1051; X86-NEXT: mull %edi1052; X86-NEXT: movl %edx, %ebp1053; X86-NEXT: addl %esi, %eax1054; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1055; X86-NEXT: adcl %ecx, %ebp1056; X86-NEXT: setb %cl1057; X86-NEXT: movl %ebx, %eax1058; X86-NEXT: mull %edi1059; X86-NEXT: addl %ebp, %eax1060; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1061; X86-NEXT: movzbl %cl, %eax1062; X86-NEXT: adcl %eax, %edx1063; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1064; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx1065; X86-NEXT: movl %ebx, %eax1066; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx1067; X86-NEXT: mull %ecx1068; X86-NEXT: movl %edx, %edi1069; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1070; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1071; X86-NEXT: mull %ecx1072; X86-NEXT: movl %edx, %ecx1073; X86-NEXT: movl %eax, %esi1074; X86-NEXT: addl %edi, %esi1075; X86-NEXT: adcl $0, %ecx1076; X86-NEXT: movl %ebx, %eax1077; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp1078; X86-NEXT: mull %ebp1079; X86-NEXT: movl %edx, %edi1080; X86-NEXT: addl %esi, %eax1081; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1082; X86-NEXT: adcl %ecx, %edi1083; X86-NEXT: setb %bl1084; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1085; X86-NEXT: mull %ebp1086; X86-NEXT: movl %edx, %ecx1087; X86-NEXT: movl %eax, %ebp1088; X86-NEXT: addl %edi, %ebp1089; X86-NEXT: movzbl %bl, %eax1090; X86-NEXT: adcl %eax, %ecx1091; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1092; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1093; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1094; X86-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1095; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1096; X86-NEXT: movl {{[0-9]+}}(%esp), %edi1097; X86-NEXT: mull %edi1098; X86-NEXT: movl %edx, %esi1099; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1100; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1101; X86-NEXT: mull %edi1102; X86-NEXT: movl %edx, %edi1103; X86-NEXT: movl %eax, %ebx1104; X86-NEXT: addl %esi, %ebx1105; X86-NEXT: adcl $0, %edi1106; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1107; X86-NEXT: movl {{[0-9]+}}(%esp), %edx1108; X86-NEXT: mull %edx1109; X86-NEXT: movl %edx, %esi1110; X86-NEXT: addl %ebx, %eax1111; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1112; X86-NEXT: adcl %edi, %esi1113; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill1114; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1115; X86-NEXT: mull {{[0-9]+}}(%esp)1116; X86-NEXT: movl %edx, %edi1117; X86-NEXT: movl %eax, %ebx1118; X86-NEXT: addl %esi, %ebx1119; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload1120; X86-NEXT: adcl %eax, %edi1121; X86-NEXT: addl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1122; X86-NEXT: adcl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1123; X86-NEXT: adcl $0, %ebx1124; X86-NEXT: adcl $0, %edi1125; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload1126; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload1127; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill1128; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1129; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx1130; X86-NEXT: mull %ecx1131; X86-NEXT: movl %edx, %esi1132; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1133; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1134; X86-NEXT: mull %ecx1135; X86-NEXT: movl %edx, %ecx1136; X86-NEXT: movl %eax, %ebp1137; X86-NEXT: addl %esi, %ebp1138; X86-NEXT: adcl $0, %ecx1139; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1140; X86-NEXT: movl {{[0-9]+}}(%esp), %edx1141; X86-NEXT: mull %edx1142; X86-NEXT: movl %edx, %esi1143; X86-NEXT: addl %ebp, %eax1144; X86-NEXT: movl %eax, %ebp1145; X86-NEXT: adcl %ecx, %esi1146; X86-NEXT: setb %cl1147; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1148; X86-NEXT: mull {{[0-9]+}}(%esp)1149; X86-NEXT: addl %esi, %eax1150; X86-NEXT: movl %eax, %esi1151; X86-NEXT: movzbl %cl, %eax1152; X86-NEXT: adcl %eax, %edx1153; X86-NEXT: addl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill1154; X86-NEXT: adcl %edi, %ebp1155; X86-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1156; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload1157; X86-NEXT: adcl %eax, %esi1158; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1159; X86-NEXT: adcl $0, %edx1160; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1161; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1162; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Reload1163; X86-NEXT: mull %edi1164; X86-NEXT: movl %edx, %ebp1165; X86-NEXT: movl %eax, %ecx1166; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1167; X86-NEXT: mull %edi1168; X86-NEXT: movl %edx, %ebx1169; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1170; X86-NEXT: movl %eax, %esi1171; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1172; X86-NEXT: addl %ebp, %esi1173; X86-NEXT: adcl $0, %ebx1174; X86-NEXT: addl %ecx, %esi1175; X86-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1176; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1177; X86-NEXT: adcl %ebp, %ebx1178; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill1179; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp1180; X86-NEXT: imull %edi, %ebp1181; X86-NEXT: movl %edi, %eax1182; X86-NEXT: mull {{[0-9]+}}(%esp)1183; X86-NEXT: addl %ebp, %edx1184; X86-NEXT: addl %eax, %edx1185; X86-NEXT: addl %ecx, %eax1186; X86-NEXT: adcl %esi, %edx1187; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload1188; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 1-byte Folded Reload1189; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1190; X86-NEXT: addl %eax, %ebx1191; X86-NEXT: adcl %edx, %ecx1192; X86-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1193; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi ## 4-byte Reload1194; X86-NEXT: movl %esi, %eax1195; X86-NEXT: mull {{[0-9]+}}(%esp)1196; X86-NEXT: movl %edx, %ecx1197; X86-NEXT: movl %eax, %edi1198; X86-NEXT: movl %eax, %ebp1199; X86-NEXT: addl %edx, %ebp1200; X86-NEXT: adcl $0, %ecx1201; X86-NEXT: movl %esi, %eax1202; X86-NEXT: mull {{[0-9]+}}(%esp)1203; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1204; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1205; X86-NEXT: addl %eax, %ebp1206; X86-NEXT: adcl %edx, %ecx1207; X86-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) ## 1-byte Folded Spill1208; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Reload1209; X86-NEXT: imull %esi, %eax1210; X86-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1211; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1212; X86-NEXT: mull %esi1213; X86-NEXT: movl %eax, %esi1214; X86-NEXT: addl %eax, %edx1215; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload1216; X86-NEXT: addl %edi, %esi1217; X86-NEXT: adcl %ebp, %edx1218; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1219; X86-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 1-byte Folded Reload1220; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload1221; X86-NEXT: addl %esi, %ecx1222; X86-NEXT: adcl %edx, %eax1223; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload1224; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1225; X86-NEXT: adcl %ebx, %ecx1226; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload1227; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload1228; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1229; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1230; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload1231; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Reload1232; X86-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx ## 4-byte Folded Reload1233; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1234; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload1235; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1236; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1237; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload1238; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1239; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Reload1240; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload1241; X86-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Spill1242; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Folded Reload1243; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp ## 4-byte Folded Reload1244; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Folded Reload1245; X86-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax ## 4-byte Folded Reload1246; X86-NEXT: movl (%esp), %esi ## 4-byte Reload1247; X86-NEXT: movl %esi, %edx1248; X86-NEXT: sarl $31, %edx1249; X86-NEXT: xorl %edx, %edi1250; X86-NEXT: xorl %edx, %ebx1251; X86-NEXT: orl %edi, %ebx1252; X86-NEXT: xorl %edx, %ecx1253; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi ## 4-byte Reload1254; X86-NEXT: xorl %edx, %edi1255; X86-NEXT: orl %ecx, %edi1256; X86-NEXT: orl %ebx, %edi1257; X86-NEXT: xorl %edx, %ebp1258; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1259; X86-NEXT: xorl %edx, %ecx1260; X86-NEXT: orl %ebp, %ecx1261; X86-NEXT: xorl %edx, %eax1262; X86-NEXT: xorl {{[-0-9]+}}(%e{{[sb]}}p), %edx ## 4-byte Folded Reload1263; X86-NEXT: orl %eax, %edx1264; X86-NEXT: orl %ecx, %edx1265; X86-NEXT: orl %edi, %edx1266; X86-NEXT: movl {{[0-9]+}}(%esp), %eax1267; X86-NEXT: movl %esi, 28(%eax)1268; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1269; X86-NEXT: movl %ecx, (%eax)1270; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1271; X86-NEXT: movl %ecx, 4(%eax)1272; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1273; X86-NEXT: movl %ecx, 8(%eax)1274; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1275; X86-NEXT: movl %ecx, 12(%eax)1276; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1277; X86-NEXT: movl %ecx, 16(%eax)1278; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1279; X86-NEXT: movl %ecx, 20(%eax)1280; X86-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx ## 4-byte Reload1281; X86-NEXT: movl %ecx, 24(%eax)1282; X86-NEXT: setne %al1283; X86-NEXT: addl $128, %esp1284; X86-NEXT: popl %esi1285; X86-NEXT: popl %edi1286; X86-NEXT: popl %ebx1287; X86-NEXT: popl %ebp1288; X86-NEXT: retl1289 %t = call {i256, i1} @llvm.smul.with.overflow.i256(i256 %v1, i256 %v2)1290 %val = extractvalue {i256, i1} %t, 01291 %obit = extractvalue {i256, i1} %t, 11292 store i256 %val, ptr %res1293 ret i1 %obit1294}1295 1296declare {i128, i1} @llvm.smul.with.overflow.i128(i128, i128) nounwind readnone1297declare {i256, i1} @llvm.smul.with.overflow.i256(i256, i256) nounwind readnone1298