brintos

brintos / llvm-project-archived public Read only

0
0
Text · 43.4 KiB · 7df490f Raw
1198 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s --check-prefix=X643; RUN: llc < %s -mtriple=i686 -mattr=cmov | FileCheck %s --check-prefix=X864 5declare  i4  @llvm.sdiv.fix.sat.i4   (i4,  i4,  i32)6declare  i15 @llvm.sdiv.fix.sat.i15  (i15, i15, i32)7declare  i16 @llvm.sdiv.fix.sat.i16  (i16, i16, i32)8declare  i18 @llvm.sdiv.fix.sat.i18  (i18, i18, i32)9declare  i64 @llvm.sdiv.fix.sat.i64  (i64, i64, i32)10declare  <4 x i32> @llvm.sdiv.fix.sat.v4i32(<4 x i32>, <4 x i32>, i32)11 12define i16 @func(i16 %x, i16 %y) nounwind {13;14; X64-LABEL: func:15; X64:       # %bb.0:16; X64-NEXT:    movswl %si, %esi17; X64-NEXT:    movswl %di, %ecx18; X64-NEXT:    shll $8, %ecx19; X64-NEXT:    movl %ecx, %eax20; X64-NEXT:    cltd21; X64-NEXT:    idivl %esi22; X64-NEXT:    # kill: def $eax killed $eax def $rax23; X64-NEXT:    leal -1(%rax), %edi24; X64-NEXT:    testl %esi, %esi25; X64-NEXT:    sets %sil26; X64-NEXT:    testl %ecx, %ecx27; X64-NEXT:    sets %cl28; X64-NEXT:    xorb %sil, %cl29; X64-NEXT:    testl %edx, %edx30; X64-NEXT:    setne %dl31; X64-NEXT:    testb %cl, %dl32; X64-NEXT:    cmovnel %edi, %eax33; X64-NEXT:    cmpl $65535, %eax # imm = 0xFFFF34; X64-NEXT:    movl $65535, %ecx # imm = 0xFFFF35; X64-NEXT:    cmovgel %ecx, %eax36; X64-NEXT:    cmpl $-65535, %eax # imm = 0xFFFF000137; X64-NEXT:    movl $-65536, %ecx # imm = 0xFFFF000038; X64-NEXT:    cmovll %ecx, %eax39; X64-NEXT:    shrl %eax40; X64-NEXT:    # kill: def $ax killed $ax killed $rax41; X64-NEXT:    retq42;43; X86-LABEL: func:44; X86:       # %bb.0:45; X86-NEXT:    pushl %ebx46; X86-NEXT:    pushl %edi47; X86-NEXT:    pushl %esi48; X86-NEXT:    movswl {{[0-9]+}}(%esp), %esi49; X86-NEXT:    movswl {{[0-9]+}}(%esp), %ecx50; X86-NEXT:    shll $8, %ecx51; X86-NEXT:    movl %ecx, %eax52; X86-NEXT:    cltd53; X86-NEXT:    idivl %esi54; X86-NEXT:    leal -1(%eax), %edi55; X86-NEXT:    testl %esi, %esi56; X86-NEXT:    sets %bl57; X86-NEXT:    testl %ecx, %ecx58; X86-NEXT:    sets %cl59; X86-NEXT:    xorb %bl, %cl60; X86-NEXT:    testl %edx, %edx61; X86-NEXT:    setne %dl62; X86-NEXT:    testb %cl, %dl63; X86-NEXT:    cmovnel %edi, %eax64; X86-NEXT:    cmpl $65535, %eax # imm = 0xFFFF65; X86-NEXT:    movl $65535, %ecx # imm = 0xFFFF66; X86-NEXT:    cmovgel %ecx, %eax67; X86-NEXT:    cmpl $-65535, %eax # imm = 0xFFFF000168; X86-NEXT:    movl $-65536, %ecx # imm = 0xFFFF000069; X86-NEXT:    cmovll %ecx, %eax70; X86-NEXT:    shrl %eax71; X86-NEXT:    # kill: def $ax killed $ax killed $eax72; X86-NEXT:    popl %esi73; X86-NEXT:    popl %edi74; X86-NEXT:    popl %ebx75; X86-NEXT:    retl76  %tmp = call i16 @llvm.sdiv.fix.sat.i16(i16 %x, i16 %y, i32 7)77  ret i16 %tmp78}79 80define i16 @func2(i8 %x, i8 %y) nounwind {81;82; X64-LABEL: func2:83; X64:       # %bb.0:84; X64-NEXT:    movsbl %sil, %esi85; X64-NEXT:    movsbl %dil, %ecx86; X64-NEXT:    shll $14, %ecx87; X64-NEXT:    movl %ecx, %eax88; X64-NEXT:    cltd89; X64-NEXT:    idivl %esi90; X64-NEXT:    # kill: def $eax killed $eax def $rax91; X64-NEXT:    leal -1(%rax), %edi92; X64-NEXT:    testl %esi, %esi93; X64-NEXT:    sets %sil94; X64-NEXT:    testl %ecx, %ecx95; X64-NEXT:    sets %cl96; X64-NEXT:    xorb %sil, %cl97; X64-NEXT:    testl %edx, %edx98; X64-NEXT:    setne %dl99; X64-NEXT:    testb %cl, %dl100; X64-NEXT:    cmovnel %edi, %eax101; X64-NEXT:    cmpl $16383, %eax # imm = 0x3FFF102; X64-NEXT:    movl $16383, %ecx # imm = 0x3FFF103; X64-NEXT:    cmovgel %ecx, %eax104; X64-NEXT:    cmpl $-16383, %eax # imm = 0xC001105; X64-NEXT:    movl $-16384, %ecx # imm = 0xC000106; X64-NEXT:    cmovll %ecx, %eax107; X64-NEXT:    # kill: def $ax killed $ax killed $rax108; X64-NEXT:    retq109;110; X86-LABEL: func2:111; X86:       # %bb.0:112; X86-NEXT:    pushl %ebx113; X86-NEXT:    pushl %edi114; X86-NEXT:    pushl %esi115; X86-NEXT:    movsbl {{[0-9]+}}(%esp), %esi116; X86-NEXT:    movsbl {{[0-9]+}}(%esp), %ecx117; X86-NEXT:    shll $14, %ecx118; X86-NEXT:    movl %ecx, %eax119; X86-NEXT:    cltd120; X86-NEXT:    idivl %esi121; X86-NEXT:    leal -1(%eax), %edi122; X86-NEXT:    testl %esi, %esi123; X86-NEXT:    sets %bl124; X86-NEXT:    testl %ecx, %ecx125; X86-NEXT:    sets %cl126; X86-NEXT:    xorb %bl, %cl127; X86-NEXT:    testl %edx, %edx128; X86-NEXT:    setne %dl129; X86-NEXT:    testb %cl, %dl130; X86-NEXT:    cmovnel %edi, %eax131; X86-NEXT:    cmpl $16383, %eax # imm = 0x3FFF132; X86-NEXT:    movl $16383, %ecx # imm = 0x3FFF133; X86-NEXT:    cmovgel %ecx, %eax134; X86-NEXT:    cmpl $-16383, %eax # imm = 0xC001135; X86-NEXT:    movl $-16384, %ecx # imm = 0xC000136; X86-NEXT:    cmovll %ecx, %eax137; X86-NEXT:    # kill: def $ax killed $ax killed $eax138; X86-NEXT:    popl %esi139; X86-NEXT:    popl %edi140; X86-NEXT:    popl %ebx141; X86-NEXT:    retl142  %x2 = sext i8 %x to i15143  %y2 = sext i8 %y to i15144  %tmp = call i15 @llvm.sdiv.fix.sat.i15(i15 %x2, i15 %y2, i32 14)145  %tmp2 = sext i15 %tmp to i16146  ret i16 %tmp2147}148 149define i16 @func3(i15 %x, i8 %y) nounwind {150;151; X64-LABEL: func3:152; X64:       # %bb.0:153; X64-NEXT:    shll $8, %esi154; X64-NEXT:    movswl %si, %ecx155; X64-NEXT:    addl %edi, %edi156; X64-NEXT:    shrl $4, %ecx157; X64-NEXT:    movl %edi, %eax158; X64-NEXT:    cwtd159; X64-NEXT:    idivw %cx160; X64-NEXT:    # kill: def $ax killed $ax def $rax161; X64-NEXT:    leal -1(%rax), %esi162; X64-NEXT:    testw %di, %di163; X64-NEXT:    sets %dil164; X64-NEXT:    testw %cx, %cx165; X64-NEXT:    sets %cl166; X64-NEXT:    xorb %dil, %cl167; X64-NEXT:    testw %dx, %dx168; X64-NEXT:    setne %dl169; X64-NEXT:    testb %cl, %dl170; X64-NEXT:    cmovnel %esi, %eax171; X64-NEXT:    movswl %ax, %ecx172; X64-NEXT:    cmpl $16383, %ecx # imm = 0x3FFF173; X64-NEXT:    movl $16383, %ecx # imm = 0x3FFF174; X64-NEXT:    cmovgel %ecx, %eax175; X64-NEXT:    movswl %ax, %ecx176; X64-NEXT:    cmpl $-16383, %ecx # imm = 0xC001177; X64-NEXT:    movl $49152, %ecx # imm = 0xC000178; X64-NEXT:    cmovll %ecx, %eax179; X64-NEXT:    # kill: def $ax killed $ax killed $rax180; X64-NEXT:    retq181;182; X86-LABEL: func3:183; X86:       # %bb.0:184; X86-NEXT:    pushl %edi185; X86-NEXT:    pushl %esi186; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx187; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax188; X86-NEXT:    shll $8, %eax189; X86-NEXT:    movswl %ax, %esi190; X86-NEXT:    addl %ecx, %ecx191; X86-NEXT:    shrl $4, %esi192; X86-NEXT:    movl %ecx, %eax193; X86-NEXT:    cwtd194; X86-NEXT:    idivw %si195; X86-NEXT:    # kill: def $ax killed $ax def $eax196; X86-NEXT:    leal -1(%eax), %edi197; X86-NEXT:    testw %cx, %cx198; X86-NEXT:    sets %cl199; X86-NEXT:    testw %si, %si200; X86-NEXT:    sets %ch201; X86-NEXT:    xorb %cl, %ch202; X86-NEXT:    testw %dx, %dx203; X86-NEXT:    setne %cl204; X86-NEXT:    testb %ch, %cl205; X86-NEXT:    cmovnel %edi, %eax206; X86-NEXT:    movswl %ax, %ecx207; X86-NEXT:    cmpl $16383, %ecx # imm = 0x3FFF208; X86-NEXT:    movl $16383, %ecx # imm = 0x3FFF209; X86-NEXT:    cmovgel %ecx, %eax210; X86-NEXT:    movswl %ax, %ecx211; X86-NEXT:    cmpl $-16383, %ecx # imm = 0xC001212; X86-NEXT:    movl $49152, %ecx # imm = 0xC000213; X86-NEXT:    cmovll %ecx, %eax214; X86-NEXT:    # kill: def $ax killed $ax killed $eax215; X86-NEXT:    popl %esi216; X86-NEXT:    popl %edi217; X86-NEXT:    retl218  %y2 = sext i8 %y to i15219  %y3 = shl i15 %y2, 7220  %tmp = call i15 @llvm.sdiv.fix.sat.i15(i15 %x, i15 %y3, i32 4)221  %tmp2 = sext i15 %tmp to i16222  ret i16 %tmp2223}224 225define i4 @func4(i4 %x, i4 %y) nounwind {226;227; X64-LABEL: func4:228; X64:       # %bb.0:229; X64-NEXT:    shlb $4, %sil230; X64-NEXT:    sarb $4, %sil231; X64-NEXT:    shlb $4, %dil232; X64-NEXT:    sarb $4, %dil233; X64-NEXT:    shlb $2, %dil234; X64-NEXT:    movsbl %dil, %ecx235; X64-NEXT:    movl %ecx, %eax236; X64-NEXT:    idivb %sil237; X64-NEXT:    movsbl %ah, %edx238; X64-NEXT:    movzbl %al, %eax239; X64-NEXT:    leal -1(%rax), %edi240; X64-NEXT:    movzbl %dil, %edi241; X64-NEXT:    testb %sil, %sil242; X64-NEXT:    sets %sil243; X64-NEXT:    testb %cl, %cl244; X64-NEXT:    sets %cl245; X64-NEXT:    xorb %sil, %cl246; X64-NEXT:    testb %dl, %dl247; X64-NEXT:    setne %dl248; X64-NEXT:    testb %cl, %dl249; X64-NEXT:    cmovel %eax, %edi250; X64-NEXT:    cmpb $7, %dil251; X64-NEXT:    movl $7, %ecx252; X64-NEXT:    cmovll %edi, %ecx253; X64-NEXT:    cmpb $-7, %cl254; X64-NEXT:    movl $248, %eax255; X64-NEXT:    cmovgel %ecx, %eax256; X64-NEXT:    # kill: def $al killed $al killed $eax257; X64-NEXT:    retq258;259; X86-LABEL: func4:260; X86:       # %bb.0:261; X86-NEXT:    pushl %ebx262; X86-NEXT:    pushl %esi263; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx264; X86-NEXT:    shlb $4, %cl265; X86-NEXT:    sarb $4, %cl266; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %edx267; X86-NEXT:    shlb $4, %dl268; X86-NEXT:    sarb $4, %dl269; X86-NEXT:    shlb $2, %dl270; X86-NEXT:    movsbl %dl, %eax271; X86-NEXT:    idivb %cl272; X86-NEXT:    movsbl %ah, %ebx273; X86-NEXT:    movzbl %al, %esi274; X86-NEXT:    decb %al275; X86-NEXT:    movzbl %al, %eax276; X86-NEXT:    testb %cl, %cl277; X86-NEXT:    sets %cl278; X86-NEXT:    testb %dl, %dl279; X86-NEXT:    sets %dl280; X86-NEXT:    xorb %cl, %dl281; X86-NEXT:    testb %bl, %bl282; X86-NEXT:    setne %cl283; X86-NEXT:    testb %dl, %cl284; X86-NEXT:    cmovel %esi, %eax285; X86-NEXT:    cmpb $7, %al286; X86-NEXT:    movl $7, %ecx287; X86-NEXT:    cmovll %eax, %ecx288; X86-NEXT:    cmpb $-7, %cl289; X86-NEXT:    movl $248, %eax290; X86-NEXT:    cmovgel %ecx, %eax291; X86-NEXT:    # kill: def $al killed $al killed $eax292; X86-NEXT:    popl %esi293; X86-NEXT:    popl %ebx294; X86-NEXT:    retl295  %tmp = call i4 @llvm.sdiv.fix.sat.i4(i4 %x, i4 %y, i32 2)296  ret i4 %tmp297}298 299define i64 @func5(i64 %x, i64 %y) nounwind {300;301; X64-LABEL: func5:302; X64:       # %bb.0:303; X64-NEXT:    pushq %rbp304; X64-NEXT:    pushq %r15305; X64-NEXT:    pushq %r14306; X64-NEXT:    pushq %r13307; X64-NEXT:    pushq %r12308; X64-NEXT:    pushq %rbx309; X64-NEXT:    subq $24, %rsp310; X64-NEXT:    movq %rsi, %rdx311; X64-NEXT:    movq %rsi, (%rsp) # 8-byte Spill312; X64-NEXT:    movq %rdi, %r14313; X64-NEXT:    leaq (%rdi,%rdi), %rax314; X64-NEXT:    movq %rdi, %r15315; X64-NEXT:    sarq $63, %r15316; X64-NEXT:    shldq $31, %rax, %r15317; X64-NEXT:    shlq $32, %r14318; X64-NEXT:    movq %rsi, %r12319; X64-NEXT:    sarq $63, %r12320; X64-NEXT:    movq %r14, %rdi321; X64-NEXT:    movq %r15, %rsi322; X64-NEXT:    movq %r12, %rcx323; X64-NEXT:    callq __divti3@PLT324; X64-NEXT:    movq %rax, %r13325; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill326; X64-NEXT:    movq %rdx, %rbp327; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill328; X64-NEXT:    subq $1, %r13329; X64-NEXT:    sbbq $0, %rbp330; X64-NEXT:    testq %r15, %r15331; X64-NEXT:    sets %al332; X64-NEXT:    testq %r12, %r12333; X64-NEXT:    sets %bl334; X64-NEXT:    xorb %al, %bl335; X64-NEXT:    movq %r14, %rdi336; X64-NEXT:    movq %r15, %rsi337; X64-NEXT:    movq (%rsp), %rdx # 8-byte Reload338; X64-NEXT:    movq %r12, %rcx339; X64-NEXT:    callq __modti3@PLT340; X64-NEXT:    orq %rax, %rdx341; X64-NEXT:    setne %al342; X64-NEXT:    testb %bl, %al343; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Folded Reload344; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %r13 # 8-byte Folded Reload345; X64-NEXT:    movq %rbp, %rcx346; X64-NEXT:    sarq $63, %rcx347; X64-NEXT:    andq %rbp, %rcx348; X64-NEXT:    testq %rbp, %rbp349; X64-NEXT:    movq $-1, %rdx350; X64-NEXT:    cmovgq %rdx, %r13351; X64-NEXT:    xorl %eax, %eax352; X64-NEXT:    cmpq $-1, %rcx353; X64-NEXT:    cmovlq %rdx, %rcx354; X64-NEXT:    cmovgeq %r13, %rax355; X64-NEXT:    shrdq $1, %rcx, %rax356; X64-NEXT:    addq $24, %rsp357; X64-NEXT:    popq %rbx358; X64-NEXT:    popq %r12359; X64-NEXT:    popq %r13360; X64-NEXT:    popq %r14361; X64-NEXT:    popq %r15362; X64-NEXT:    popq %rbp363; X64-NEXT:    retq364;365; X86-LABEL: func5:366; X86:       # %bb.0:367; X86-NEXT:    pushl %ebp368; X86-NEXT:    movl %esp, %ebp369; X86-NEXT:    pushl %ebx370; X86-NEXT:    pushl %edi371; X86-NEXT:    pushl %esi372; X86-NEXT:    andl $-16, %esp373; X86-NEXT:    subl $128, %esp374; X86-NEXT:    movl 8(%ebp), %esi375; X86-NEXT:    movl 12(%ebp), %edi376; X86-NEXT:    movl 16(%ebp), %ecx377; X86-NEXT:    movl 20(%ebp), %edx378; X86-NEXT:    movl %edx, %eax379; X86-NEXT:    sarl $31, %eax380; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill381; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)382; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)383; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)384; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)385; X86-NEXT:    movl %edi, %ebx386; X86-NEXT:    sarl $31, %ebx387; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)388; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill389; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax390; X86-NEXT:    movl %eax, (%esp)391; X86-NEXT:    shldl $31, %edi, %ebx392; X86-NEXT:    shldl $31, %esi, %edi393; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)394; X86-NEXT:    shll $31, %esi395; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)396; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)397; X86-NEXT:    calll __divti3398; X86-NEXT:    subl $4, %esp399; X86-NEXT:    movl 20(%ebp), %eax400; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)401; X86-NEXT:    movl 16(%ebp), %eax402; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)403; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload404; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)405; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)406; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload407; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)408; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)409; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)410; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax411; X86-NEXT:    movl %eax, (%esp)412; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)413; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi414; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill415; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax416; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill417; X86-NEXT:    subl $1, %edi418; X86-NEXT:    sbbl $0, %eax419; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill420; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax421; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill422; X86-NEXT:    sbbl $0, %eax423; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill424; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi425; X86-NEXT:    movl %esi, %ebx426; X86-NEXT:    sbbl $0, %ebx427; X86-NEXT:    testl %ecx, %ecx428; X86-NEXT:    sets %al429; X86-NEXT:    testl %edx, %edx430; X86-NEXT:    sets %cl431; X86-NEXT:    xorb %al, %cl432; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill433; X86-NEXT:    calll __modti3434; X86-NEXT:    subl $4, %esp435; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax436; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax437; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx438; X86-NEXT:    orl {{[0-9]+}}(%esp), %ecx439; X86-NEXT:    orl %eax, %ecx440; X86-NEXT:    setne %al441; X86-NEXT:    testb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Reload442; X86-NEXT:    cmovel %esi, %ebx443; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload444; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload445; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload446; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload447; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill448; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload449; X86-NEXT:    cmpl $-1, %edi450; X86-NEXT:    sbbl $2147483647, %ecx # imm = 0x7FFFFFFF451; X86-NEXT:    movl %eax, %ecx452; X86-NEXT:    sbbl $0, %ecx453; X86-NEXT:    movl %ebx, %ecx454; X86-NEXT:    sbbl $0, %ecx455; X86-NEXT:    movl $2147483647, %edx # imm = 0x7FFFFFFF456; X86-NEXT:    cmovll {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload457; X86-NEXT:    movl $0, %ecx458; X86-NEXT:    cmovgel %ecx, %ebx459; X86-NEXT:    cmovgel %ecx, %eax460; X86-NEXT:    movl $-1, %ecx461; X86-NEXT:    cmovgel %ecx, %edi462; X86-NEXT:    movl %edi, %esi463; X86-NEXT:    negl %esi464; X86-NEXT:    movl $-2147483648, %esi # imm = 0x80000000465; X86-NEXT:    sbbl %edx, %esi466; X86-NEXT:    movl $-1, %esi467; X86-NEXT:    sbbl %eax, %esi468; X86-NEXT:    sbbl %ebx, %ecx469; X86-NEXT:    movl $0, %eax470; X86-NEXT:    cmovgel %eax, %edi471; X86-NEXT:    movl $-2147483648, %eax # imm = 0x80000000472; X86-NEXT:    cmovgel %eax, %edx473; X86-NEXT:    movl %edi, %eax474; X86-NEXT:    leal -12(%ebp), %esp475; X86-NEXT:    popl %esi476; X86-NEXT:    popl %edi477; X86-NEXT:    popl %ebx478; X86-NEXT:    popl %ebp479; X86-NEXT:    retl480  %tmp = call i64 @llvm.sdiv.fix.sat.i64(i64 %x, i64 %y, i32 31)481  ret i64 %tmp482}483 484define i18 @func6(i16 %x, i16 %y) nounwind {485;486; X64-LABEL: func6:487; X64:       # %bb.0:488; X64-NEXT:    movswl %di, %ecx489; X64-NEXT:    movswl %si, %esi490; X64-NEXT:    shll $7, %ecx491; X64-NEXT:    movl %ecx, %eax492; X64-NEXT:    cltd493; X64-NEXT:    idivl %esi494; X64-NEXT:    # kill: def $eax killed $eax def $rax495; X64-NEXT:    leal -1(%rax), %edi496; X64-NEXT:    testl %esi, %esi497; X64-NEXT:    sets %sil498; X64-NEXT:    testl %ecx, %ecx499; X64-NEXT:    sets %cl500; X64-NEXT:    xorb %sil, %cl501; X64-NEXT:    testl %edx, %edx502; X64-NEXT:    setne %dl503; X64-NEXT:    testb %cl, %dl504; X64-NEXT:    cmovnel %edi, %eax505; X64-NEXT:    cmpl $131071, %eax # imm = 0x1FFFF506; X64-NEXT:    movl $131071, %ecx # imm = 0x1FFFF507; X64-NEXT:    cmovgel %ecx, %eax508; X64-NEXT:    cmpl $-131071, %eax # imm = 0xFFFE0001509; X64-NEXT:    movl $-131072, %ecx # imm = 0xFFFE0000510; X64-NEXT:    cmovll %ecx, %eax511; X64-NEXT:    # kill: def $eax killed $eax killed $rax512; X64-NEXT:    retq513;514; X86-LABEL: func6:515; X86:       # %bb.0:516; X86-NEXT:    pushl %ebx517; X86-NEXT:    pushl %edi518; X86-NEXT:    pushl %esi519; X86-NEXT:    movswl {{[0-9]+}}(%esp), %esi520; X86-NEXT:    movswl {{[0-9]+}}(%esp), %ecx521; X86-NEXT:    shll $7, %ecx522; X86-NEXT:    movl %ecx, %eax523; X86-NEXT:    cltd524; X86-NEXT:    idivl %esi525; X86-NEXT:    leal -1(%eax), %edi526; X86-NEXT:    testl %esi, %esi527; X86-NEXT:    sets %bl528; X86-NEXT:    testl %ecx, %ecx529; X86-NEXT:    sets %cl530; X86-NEXT:    xorb %bl, %cl531; X86-NEXT:    testl %edx, %edx532; X86-NEXT:    setne %dl533; X86-NEXT:    testb %cl, %dl534; X86-NEXT:    cmovnel %edi, %eax535; X86-NEXT:    cmpl $131071, %eax # imm = 0x1FFFF536; X86-NEXT:    movl $131071, %ecx # imm = 0x1FFFF537; X86-NEXT:    cmovgel %ecx, %eax538; X86-NEXT:    cmpl $-131071, %eax # imm = 0xFFFE0001539; X86-NEXT:    movl $-131072, %ecx # imm = 0xFFFE0000540; X86-NEXT:    cmovll %ecx, %eax541; X86-NEXT:    popl %esi542; X86-NEXT:    popl %edi543; X86-NEXT:    popl %ebx544; X86-NEXT:    retl545  %x2 = sext i16 %x to i18546  %y2 = sext i16 %y to i18547  %tmp = call i18 @llvm.sdiv.fix.sat.i18(i18 %x2, i18 %y2, i32 7)548  ret i18 %tmp549}550 551define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {552;553; X64-LABEL: vec:554; X64:       # %bb.0:555; X64-NEXT:    pushq %rbp556; X64-NEXT:    pushq %r15557; X64-NEXT:    pushq %r14558; X64-NEXT:    pushq %r13559; X64-NEXT:    pushq %r12560; X64-NEXT:    pushq %rbx561; X64-NEXT:    subq $120, %rsp562; X64-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill563; X64-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill564; X64-NEXT:    pxor %xmm2, %xmm2565; X64-NEXT:    punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm0[2],xmm2[3],xmm0[3]566; X64-NEXT:    psrlq $31, %xmm2567; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[0,2,2,3]568; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]569; X64-NEXT:    psrad $31, %xmm2570; X64-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]571; X64-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill572; X64-NEXT:    movq %xmm3, %rbx573; X64-NEXT:    movq %rbx, %r13574; X64-NEXT:    sarq $63, %r13575; X64-NEXT:    shldq $31, %rbx, %r13576; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]577; X64-NEXT:    pxor %xmm0, %xmm0578; X64-NEXT:    pcmpgtd %xmm1, %xmm0579; X64-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]580; X64-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill581; X64-NEXT:    movq %xmm1, %rdx582; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill583; X64-NEXT:    movq %rdx, %r15584; X64-NEXT:    sarq $63, %r15585; X64-NEXT:    movq %rbx, %r12586; X64-NEXT:    shlq $31, %r12587; X64-NEXT:    movq %r12, %rdi588; X64-NEXT:    movq %r13, %rsi589; X64-NEXT:    movq %r15, %rcx590; X64-NEXT:    callq __divti3@PLT591; X64-NEXT:    movq %rax, %rbp592; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill593; X64-NEXT:    movq %rdx, %r14594; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill595; X64-NEXT:    subq $1, %rbp596; X64-NEXT:    sbbq $0, %r14597; X64-NEXT:    shrq $63, %rbx598; X64-NEXT:    xorl %r15d, %ebx599; X64-NEXT:    movq %r12, %rdi600; X64-NEXT:    movq %r13, %rsi601; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload602; X64-NEXT:    movq %r15, %rcx603; X64-NEXT:    callq __modti3@PLT604; X64-NEXT:    orq %rax, %rdx605; X64-NEXT:    setne %al606; X64-NEXT:    testb %bl, %al607; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Folded Reload608; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Folded Reload609; X64-NEXT:    xorl %ecx, %ecx610; X64-NEXT:    movl $4294967295, %edx # imm = 0xFFFFFFFF611; X64-NEXT:    cmpq %rdx, %rbp612; X64-NEXT:    movq %r14, %rax613; X64-NEXT:    sbbq $0, %rax614; X64-NEXT:    cmovgeq %rcx, %r14615; X64-NEXT:    cmovgeq %rdx, %rbp616; X64-NEXT:    movabsq $-4294967296, %rcx # imm = 0xFFFFFFFF00000000617; X64-NEXT:    cmpq %rbp, %rcx618; X64-NEXT:    movq $-1, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Folded Spill619; X64-NEXT:    movq $-1, %rax620; X64-NEXT:    sbbq %r14, %rax621; X64-NEXT:    cmovgeq %rcx, %rbp622; X64-NEXT:    movq %rbp, %xmm0623; X64-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill624; X64-NEXT:    pshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload625; X64-NEXT:    # xmm0 = mem[2,3,2,3]626; X64-NEXT:    movq %xmm0, %rbx627; X64-NEXT:    movq %rbx, %r13628; X64-NEXT:    sarq $63, %r13629; X64-NEXT:    shldq $31, %rbx, %r13630; X64-NEXT:    pshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload631; X64-NEXT:    # xmm0 = mem[2,3,2,3]632; X64-NEXT:    movq %xmm0, %rdx633; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill634; X64-NEXT:    movq %rdx, %r15635; X64-NEXT:    sarq $63, %r15636; X64-NEXT:    movq %rbx, %r12637; X64-NEXT:    shlq $31, %r12638; X64-NEXT:    movq %r12, %rdi639; X64-NEXT:    movq %r13, %rsi640; X64-NEXT:    movq %r15, %rcx641; X64-NEXT:    callq __divti3@PLT642; X64-NEXT:    movq %rax, %rbp643; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill644; X64-NEXT:    movq %rdx, %r14645; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill646; X64-NEXT:    subq $1, %rbp647; X64-NEXT:    sbbq $0, %r14648; X64-NEXT:    shrq $63, %rbx649; X64-NEXT:    xorl %r15d, %ebx650; X64-NEXT:    movq %r12, %rdi651; X64-NEXT:    movq %r13, %rsi652; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload653; X64-NEXT:    movq %r15, %rcx654; X64-NEXT:    callq __modti3@PLT655; X64-NEXT:    orq %rax, %rdx656; X64-NEXT:    setne %al657; X64-NEXT:    testb %bl, %al658; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Folded Reload659; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Folded Reload660; X64-NEXT:    movl $4294967295, %ecx # imm = 0xFFFFFFFF661; X64-NEXT:    cmpq %rcx, %rbp662; X64-NEXT:    movq %r14, %rax663; X64-NEXT:    sbbq $0, %rax664; X64-NEXT:    movl $0, %eax665; X64-NEXT:    cmovgeq %rax, %r14666; X64-NEXT:    cmovgeq %rcx, %rbp667; X64-NEXT:    movabsq $-4294967296, %rcx # imm = 0xFFFFFFFF00000000668; X64-NEXT:    cmpq %rbp, %rcx669; X64-NEXT:    movq $-1, %rax670; X64-NEXT:    sbbq %r14, %rax671; X64-NEXT:    cmovgeq %rcx, %rbp672; X64-NEXT:    movq %rbp, %xmm0673; X64-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload674; X64-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]675; X64-NEXT:    psrlq $1, %xmm1676; X64-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill677; X64-NEXT:    pxor %xmm0, %xmm0678; X64-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload679; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]680; X64-NEXT:    psrlq $31, %xmm0681; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]682; X64-NEXT:    psrad $31, %xmm1683; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]684; X64-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill685; X64-NEXT:    movq %xmm0, %rbx686; X64-NEXT:    movq %rbx, %r13687; X64-NEXT:    sarq $63, %r13688; X64-NEXT:    shldq $31, %rbx, %r13689; X64-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload690; X64-NEXT:    pxor %xmm1, %xmm1691; X64-NEXT:    pcmpgtd %xmm0, %xmm1692; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]693; X64-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill694; X64-NEXT:    movq %xmm0, %rdx695; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill696; X64-NEXT:    movq %rdx, %r15697; X64-NEXT:    sarq $63, %r15698; X64-NEXT:    movq %rbx, %r12699; X64-NEXT:    shlq $31, %r12700; X64-NEXT:    movq %r12, %rdi701; X64-NEXT:    movq %r13, %rsi702; X64-NEXT:    movq %r15, %rcx703; X64-NEXT:    callq __divti3@PLT704; X64-NEXT:    movq %rax, %rbp705; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill706; X64-NEXT:    movq %rdx, %r14707; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill708; X64-NEXT:    subq $1, %rbp709; X64-NEXT:    sbbq $0, %r14710; X64-NEXT:    shrq $63, %rbx711; X64-NEXT:    xorl %r15d, %ebx712; X64-NEXT:    movq %r12, %rdi713; X64-NEXT:    movq %r13, %rsi714; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload715; X64-NEXT:    movq %r15, %rcx716; X64-NEXT:    callq __modti3@PLT717; X64-NEXT:    orq %rax, %rdx718; X64-NEXT:    setne %al719; X64-NEXT:    testb %bl, %al720; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Folded Reload721; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Folded Reload722; X64-NEXT:    movl $4294967295, %ecx # imm = 0xFFFFFFFF723; X64-NEXT:    cmpq %rcx, %rbp724; X64-NEXT:    movq %r14, %rax725; X64-NEXT:    sbbq $0, %rax726; X64-NEXT:    movl $0, %eax727; X64-NEXT:    cmovgeq %rax, %r14728; X64-NEXT:    cmovgeq %rcx, %rbp729; X64-NEXT:    movabsq $-4294967296, %rcx # imm = 0xFFFFFFFF00000000730; X64-NEXT:    cmpq %rbp, %rcx731; X64-NEXT:    movq $-1, %rax732; X64-NEXT:    sbbq %r14, %rax733; X64-NEXT:    cmovgeq %rcx, %rbp734; X64-NEXT:    movq %rbp, %xmm0735; X64-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill736; X64-NEXT:    pshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload737; X64-NEXT:    # xmm0 = mem[2,3,2,3]738; X64-NEXT:    movq %xmm0, %rbx739; X64-NEXT:    movq %rbx, %r13740; X64-NEXT:    sarq $63, %r13741; X64-NEXT:    shldq $31, %rbx, %r13742; X64-NEXT:    pshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload743; X64-NEXT:    # xmm0 = mem[2,3,2,3]744; X64-NEXT:    movq %xmm0, %rdx745; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill746; X64-NEXT:    movq %rdx, %r15747; X64-NEXT:    sarq $63, %r15748; X64-NEXT:    movq %rbx, %r12749; X64-NEXT:    shlq $31, %r12750; X64-NEXT:    movq %r12, %rdi751; X64-NEXT:    movq %r13, %rsi752; X64-NEXT:    movq %r15, %rcx753; X64-NEXT:    callq __divti3@PLT754; X64-NEXT:    movq %rax, %rbp755; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill756; X64-NEXT:    movq %rdx, %r14757; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill758; X64-NEXT:    subq $1, %rbp759; X64-NEXT:    sbbq $0, %r14760; X64-NEXT:    shrq $63, %rbx761; X64-NEXT:    xorl %r15d, %ebx762; X64-NEXT:    movq %r12, %rdi763; X64-NEXT:    movq %r13, %rsi764; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload765; X64-NEXT:    movq %r15, %rcx766; X64-NEXT:    callq __modti3@PLT767; X64-NEXT:    orq %rax, %rdx768; X64-NEXT:    setne %al769; X64-NEXT:    testb %bl, %al770; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Folded Reload771; X64-NEXT:    cmoveq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Folded Reload772; X64-NEXT:    movl $4294967295, %ecx # imm = 0xFFFFFFFF773; X64-NEXT:    cmpq %rcx, %rbp774; X64-NEXT:    movq %r14, %rax775; X64-NEXT:    sbbq $0, %rax776; X64-NEXT:    movl $0, %eax777; X64-NEXT:    cmovgeq %rax, %r14778; X64-NEXT:    cmovgeq %rcx, %rbp779; X64-NEXT:    movabsq $-4294967296, %rax # imm = 0xFFFFFFFF00000000780; X64-NEXT:    cmpq %rbp, %rax781; X64-NEXT:    sbbq %r14, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Folded Spill782; X64-NEXT:    cmovgeq %rax, %rbp783; X64-NEXT:    movq %rbp, %xmm1784; X64-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload785; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]786; X64-NEXT:    psrlq $1, %xmm0787; X64-NEXT:    shufps $136, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload788; X64-NEXT:    # xmm0 = xmm0[0,2],mem[0,2]789; X64-NEXT:    addq $120, %rsp790; X64-NEXT:    popq %rbx791; X64-NEXT:    popq %r12792; X64-NEXT:    popq %r13793; X64-NEXT:    popq %r14794; X64-NEXT:    popq %r15795; X64-NEXT:    popq %rbp796; X64-NEXT:    retq797;798; X86-LABEL: vec:799; X86:       # %bb.0:800; X86-NEXT:    pushl %ebp801; X86-NEXT:    movl %esp, %ebp802; X86-NEXT:    pushl %ebx803; X86-NEXT:    pushl %edi804; X86-NEXT:    pushl %esi805; X86-NEXT:    andl $-16, %esp806; X86-NEXT:    subl $240, %esp807; X86-NEXT:    movl 12(%ebp), %esi808; X86-NEXT:    movl 20(%ebp), %edi809; X86-NEXT:    movl 16(%ebp), %ebx810; X86-NEXT:    movl 32(%ebp), %ecx811; X86-NEXT:    movl %ecx, %eax812; X86-NEXT:    sarl $31, %eax813; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill814; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)815; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)816; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)817; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)818; X86-NEXT:    movl %ebx, %eax819; X86-NEXT:    sarl $31, %eax820; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill821; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)822; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)823; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax824; X86-NEXT:    movl %eax, (%esp)825; X86-NEXT:    leal (%ebx,%ebx), %eax826; X86-NEXT:    shrl $31, %ebx827; X86-NEXT:    shldl $31, %eax, %ebx828; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)829; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)830; X86-NEXT:    calll __modti3831; X86-NEXT:    subl $4, %esp832; X86-NEXT:    movl 36(%ebp), %ecx833; X86-NEXT:    movl %ecx, %eax834; X86-NEXT:    sarl $31, %eax835; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill836; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)837; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)838; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)839; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)840; X86-NEXT:    movl %edi, %eax841; X86-NEXT:    sarl $31, %eax842; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill843; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)844; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)845; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax846; X86-NEXT:    movl %eax, (%esp)847; X86-NEXT:    leal (%edi,%edi), %eax848; X86-NEXT:    shrl $31, %edi849; X86-NEXT:    shldl $31, %eax, %edi850; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)851; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)852; X86-NEXT:    calll __divti3853; X86-NEXT:    subl $4, %esp854; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload855; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)856; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)857; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)858; X86-NEXT:    movl 32(%ebp), %eax859; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)860; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload861; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)862; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)863; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax864; X86-NEXT:    movl %eax, (%esp)865; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)866; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)867; X86-NEXT:    calll __divti3868; X86-NEXT:    subl $4, %esp869; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload870; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)871; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)872; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)873; X86-NEXT:    movl 36(%ebp), %eax874; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)875; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload876; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)877; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)878; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax879; X86-NEXT:    movl %eax, (%esp)880; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)881; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)882; X86-NEXT:    calll __modti3883; X86-NEXT:    subl $4, %esp884; X86-NEXT:    movl 28(%ebp), %eax885; X86-NEXT:    movl %eax, %edi886; X86-NEXT:    sarl $31, %edi887; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)888; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)889; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)890; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)891; X86-NEXT:    movl %esi, %ebx892; X86-NEXT:    sarl $31, %ebx893; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)894; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)895; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax896; X86-NEXT:    movl %eax, (%esp)897; X86-NEXT:    leal (%esi,%esi), %eax898; X86-NEXT:    shrl $31, %esi899; X86-NEXT:    shldl $31, %eax, %esi900; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)901; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)902; X86-NEXT:    calll __modti3903; X86-NEXT:    subl $4, %esp904; X86-NEXT:    movl 40(%ebp), %ecx905; X86-NEXT:    movl %ecx, %eax906; X86-NEXT:    sarl $31, %eax907; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill908; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)909; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)910; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)911; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)912; X86-NEXT:    movl 24(%ebp), %ecx913; X86-NEXT:    movl %ecx, %eax914; X86-NEXT:    sarl $31, %eax915; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill916; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)917; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)918; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax919; X86-NEXT:    movl %eax, (%esp)920; X86-NEXT:    leal (%ecx,%ecx), %eax921; X86-NEXT:    shrl $31, %ecx922; X86-NEXT:    shldl $31, %eax, %ecx923; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill924; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)925; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)926; X86-NEXT:    calll __divti3927; X86-NEXT:    subl $4, %esp928; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)929; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)930; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)931; X86-NEXT:    movl 28(%ebp), %eax932; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)933; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)934; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)935; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax936; X86-NEXT:    movl %eax, (%esp)937; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)938; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)939; X86-NEXT:    calll __divti3940; X86-NEXT:    subl $4, %esp941; X86-NEXT:    movl 40(%ebp), %eax942; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)943; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax944; X86-NEXT:    movl %eax, (%esp)945; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload946; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)947; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload948; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)949; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)950; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)951; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload952; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)953; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)954; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)955; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax956; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill957; X86-NEXT:    subl $1, %eax958; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx959; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill960; X86-NEXT:    sbbl $0, %ecx961; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill962; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx963; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill964; X86-NEXT:    sbbl $0, %ecx965; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx966; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill967; X86-NEXT:    sbbl $0, %edx968; X86-NEXT:    testl %edi, %edi969; X86-NEXT:    sets {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill970; X86-NEXT:    testl %ebx, %ebx971; X86-NEXT:    sets %bl972; X86-NEXT:    xorb {{[-0-9]+}}(%e{{[sb]}}p), %bl # 1-byte Folded Reload973; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi974; X86-NEXT:    orl {{[0-9]+}}(%esp), %edi975; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi976; X86-NEXT:    orl {{[0-9]+}}(%esp), %esi977; X86-NEXT:    orl %edi, %esi978; X86-NEXT:    setne %bh979; X86-NEXT:    testb %bl, %bh980; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload981; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload982; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload983; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload984; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload985; X86-NEXT:    xorl %ebx, %ebx986; X86-NEXT:    cmpl $-1, %eax987; X86-NEXT:    movl %edi, %esi988; X86-NEXT:    sbbl $0, %esi989; X86-NEXT:    movl %ecx, %esi990; X86-NEXT:    sbbl $0, %esi991; X86-NEXT:    movl %edx, %esi992; X86-NEXT:    sbbl $0, %esi993; X86-NEXT:    cmovgel %ebx, %edx994; X86-NEXT:    cmovgel %ebx, %ecx995; X86-NEXT:    cmovgel %ebx, %edi996; X86-NEXT:    movl $-1, %esi997; X86-NEXT:    cmovgel %esi, %eax998; X86-NEXT:    movl %eax, %esi999; X86-NEXT:    negl %esi1000; X86-NEXT:    movl $-1, %esi1001; X86-NEXT:    sbbl %edi, %esi1002; X86-NEXT:    movl $-1, %esi1003; X86-NEXT:    sbbl %ecx, %esi1004; X86-NEXT:    movl $-1, %ecx1005; X86-NEXT:    sbbl %edx, %ecx1006; X86-NEXT:    cmovgel %ebx, %eax1007; X86-NEXT:    movl $-1, %edx1008; X86-NEXT:    cmovgel %edx, %edi1009; X86-NEXT:    shldl $31, %eax, %edi1010; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1011; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1012; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1013; X86-NEXT:    subl $1, %eax1014; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1015; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1016; X86-NEXT:    sbbl $0, %ecx1017; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1018; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1019; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1020; X86-NEXT:    sbbl $0, %edi1021; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1022; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1023; X86-NEXT:    sbbl $0, %edx1024; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1025; X86-NEXT:    sets %bl1026; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1027; X86-NEXT:    sets %bh1028; X86-NEXT:    xorb %bl, %bh1029; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1030; X86-NEXT:    orl {{[0-9]+}}(%esp), %ecx1031; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1032; X86-NEXT:    orl {{[0-9]+}}(%esp), %esi1033; X86-NEXT:    orl %ecx, %esi1034; X86-NEXT:    setne %cl1035; X86-NEXT:    testb %bh, %cl1036; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload1037; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload1038; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload1039; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload1040; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload1041; X86-NEXT:    cmpl $-1, %eax1042; X86-NEXT:    movl %esi, %ecx1043; X86-NEXT:    sbbl $0, %ecx1044; X86-NEXT:    movl %edi, %ecx1045; X86-NEXT:    sbbl $0, %ecx1046; X86-NEXT:    movl %edx, %ecx1047; X86-NEXT:    sbbl $0, %ecx1048; X86-NEXT:    movl $0, %ecx1049; X86-NEXT:    cmovgel %ecx, %edx1050; X86-NEXT:    cmovgel %ecx, %edi1051; X86-NEXT:    cmovgel %ecx, %esi1052; X86-NEXT:    movl $-1, %ebx1053; X86-NEXT:    cmovgel %ebx, %eax1054; X86-NEXT:    movl %eax, %ecx1055; X86-NEXT:    negl %ecx1056; X86-NEXT:    movl $-1, %ecx1057; X86-NEXT:    sbbl %esi, %ecx1058; X86-NEXT:    movl $-1, %ecx1059; X86-NEXT:    sbbl %edi, %ecx1060; X86-NEXT:    movl $-1, %ecx1061; X86-NEXT:    sbbl %edx, %ecx1062; X86-NEXT:    movl $0, %ecx1063; X86-NEXT:    cmovgel %ecx, %eax1064; X86-NEXT:    cmovgel %ebx, %esi1065; X86-NEXT:    shldl $31, %eax, %esi1066; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1067; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1068; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1069; X86-NEXT:    subl $1, %eax1070; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1071; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1072; X86-NEXT:    sbbl $0, %ecx1073; X86-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1074; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1075; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1076; X86-NEXT:    sbbl $0, %edi1077; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1078; X86-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1079; X86-NEXT:    sbbl $0, %edx1080; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1081; X86-NEXT:    sets %bl1082; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1083; X86-NEXT:    sets %bh1084; X86-NEXT:    xorb %bl, %bh1085; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1086; X86-NEXT:    orl {{[0-9]+}}(%esp), %ecx1087; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1088; X86-NEXT:    orl {{[0-9]+}}(%esp), %esi1089; X86-NEXT:    orl %ecx, %esi1090; X86-NEXT:    setne %cl1091; X86-NEXT:    testb %bh, %cl1092; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload1093; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload1094; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload1095; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload1096; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload1097; X86-NEXT:    cmpl $-1, %eax1098; X86-NEXT:    movl %ebx, %ecx1099; X86-NEXT:    sbbl $0, %ecx1100; X86-NEXT:    movl %edi, %ecx1101; X86-NEXT:    sbbl $0, %ecx1102; X86-NEXT:    movl %edx, %ecx1103; X86-NEXT:    sbbl $0, %ecx1104; X86-NEXT:    movl $0, %ecx1105; X86-NEXT:    cmovgel %ecx, %edx1106; X86-NEXT:    cmovgel %ecx, %edi1107; X86-NEXT:    cmovgel %ecx, %ebx1108; X86-NEXT:    movl $-1, %esi1109; X86-NEXT:    cmovgel %esi, %eax1110; X86-NEXT:    movl %eax, %ecx1111; X86-NEXT:    negl %ecx1112; X86-NEXT:    movl $-1, %ecx1113; X86-NEXT:    sbbl %ebx, %ecx1114; X86-NEXT:    movl $-1, %ecx1115; X86-NEXT:    sbbl %edi, %ecx1116; X86-NEXT:    movl $-1, %ecx1117; X86-NEXT:    sbbl %edx, %ecx1118; X86-NEXT:    movl $0, %ecx1119; X86-NEXT:    cmovgel %ecx, %eax1120; X86-NEXT:    cmovgel %esi, %ebx1121; X86-NEXT:    shldl $31, %eax, %ebx1122; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1123; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx1124; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1125; X86-NEXT:    subl $1, %ebx1126; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1127; X86-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1128; X86-NEXT:    sbbl $0, %esi1129; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1130; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1131; X86-NEXT:    sbbl $0, %eax1132; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1133; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1134; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill1135; X86-NEXT:    sbbl $0, %edi1136; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1137; X86-NEXT:    sets %al1138; X86-NEXT:    cmpl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload1139; X86-NEXT:    sets %cl1140; X86-NEXT:    xorb %al, %cl1141; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill1142; X86-NEXT:    calll __modti31143; X86-NEXT:    subl $4, %esp1144; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1145; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax1146; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1147; X86-NEXT:    orl {{[0-9]+}}(%esp), %ecx1148; X86-NEXT:    orl %eax, %ecx1149; X86-NEXT:    setne %al1150; X86-NEXT:    testb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Reload1151; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload1152; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload1153; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload1154; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload1155; X86-NEXT:    cmovel {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload1156; X86-NEXT:    cmpl $-1, %ebx1157; X86-NEXT:    movl %esi, %eax1158; X86-NEXT:    sbbl $0, %eax1159; X86-NEXT:    movl %ecx, %eax1160; X86-NEXT:    sbbl $0, %eax1161; X86-NEXT:    movl %edi, %eax1162; X86-NEXT:    sbbl $0, %eax1163; X86-NEXT:    movl $0, %eax1164; X86-NEXT:    cmovgel %eax, %edi1165; X86-NEXT:    cmovgel %eax, %ecx1166; X86-NEXT:    cmovgel %eax, %esi1167; X86-NEXT:    movl $-1, %edx1168; X86-NEXT:    cmovgel %edx, %ebx1169; X86-NEXT:    movl %ebx, %eax1170; X86-NEXT:    negl %eax1171; X86-NEXT:    movl $-1, %eax1172; X86-NEXT:    sbbl %esi, %eax1173; X86-NEXT:    movl $-1, %eax1174; X86-NEXT:    sbbl %ecx, %eax1175; X86-NEXT:    movl $-1, %eax1176; X86-NEXT:    sbbl %edi, %eax1177; X86-NEXT:    movl $0, %eax1178; X86-NEXT:    cmovgel %eax, %ebx1179; X86-NEXT:    cmovgel %edx, %esi1180; X86-NEXT:    shldl $31, %ebx, %esi1181; X86-NEXT:    movl 8(%ebp), %eax1182; X86-NEXT:    movl %esi, 12(%eax)1183; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload1184; X86-NEXT:    movl %ecx, 8(%eax)1185; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload1186; X86-NEXT:    movl %ecx, 4(%eax)1187; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload1188; X86-NEXT:    movl %ecx, (%eax)1189; X86-NEXT:    leal -12(%ebp), %esp1190; X86-NEXT:    popl %esi1191; X86-NEXT:    popl %edi1192; X86-NEXT:    popl %ebx1193; X86-NEXT:    popl %ebp1194; X86-NEXT:    retl $41195  %tmp = call <4 x i32> @llvm.sdiv.fix.sat.v4i32(<4 x i32> %x, <4 x i32> %y, i32 31)1196  ret <4 x i32> %tmp1197}1198