diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/ssub_sat.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/ssub_sat.ll | 45 | 
1 files changed, 13 insertions, 32 deletions
diff --git a/llvm/test/CodeGen/X86/ssub_sat.ll b/llvm/test/CodeGen/X86/ssub_sat.ll index 62724e981f7..51ca6d8a794 100644 --- a/llvm/test/CodeGen/X86/ssub_sat.ll +++ b/llvm/test/CodeGen/X86/ssub_sat.ll @@ -12,24 +12,20 @@ declare <4 x i32> @llvm.ssub.sat.v4i32(<4 x i32>, <4 x i32>)  define i32 @func(i32 %x, i32 %y) nounwind {  ; X86-LABEL: func:  ; X86:       # %bb.0: -; X86-NEXT:    pushl %esi  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx  ; X86-NEXT:    xorl %ecx, %ecx -; X86-NEXT:    movl %eax, %esi -; X86-NEXT:    subl %edx, %esi +; X86-NEXT:    cmpl %edx, %eax  ; X86-NEXT:    setns %cl  ; X86-NEXT:    addl $2147483647, %ecx # imm = 0x7FFFFFFF  ; X86-NEXT:    subl %edx, %eax  ; X86-NEXT:    cmovol %ecx, %eax -; X86-NEXT:    popl %esi  ; X86-NEXT:    retl  ;  ; X64-LABEL: func:  ; X64:       # %bb.0:  ; X64-NEXT:    xorl %eax, %eax -; X64-NEXT:    movl %edi, %ecx -; X64-NEXT:    subl %esi, %ecx +; X64-NEXT:    cmpl %esi, %edi  ; X64-NEXT:    setns %al  ; X64-NEXT:    addl $2147483647, %eax # imm = 0x7FFFFFFF  ; X64-NEXT:    subl %esi, %edi @@ -79,8 +75,7 @@ define i64 @func2(i64 %x, i64 %y) nounwind {  ; X64-LABEL: func2:  ; X64:       # %bb.0:  ; X64-NEXT:    xorl %ecx, %ecx -; X64-NEXT:    movq %rdi, %rax -; X64-NEXT:    subq %rsi, %rax +; X64-NEXT:    cmpq %rsi, %rdi  ; X64-NEXT:    setns %cl  ; X64-NEXT:    movabsq $9223372036854775807, %rax # imm = 0x7FFFFFFFFFFFFFFF  ; X64-NEXT:    addq %rcx, %rax @@ -94,25 +89,21 @@ define i64 @func2(i64 %x, i64 %y) nounwind {  define i16 @func16(i16 %x, i16 %y) nounwind {  ; X86-LABEL: func16:  ; X86:       # %bb.0: -; X86-NEXT:    pushl %esi  ; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax  ; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %edx  ; X86-NEXT:    xorl %ecx, %ecx -; X86-NEXT:    movl %eax, %esi -; X86-NEXT:    subw %dx, %si +; X86-NEXT:    cmpw %dx, %ax  ; X86-NEXT:    setns %cl  ; X86-NEXT:    addl $32767, %ecx # imm = 0x7FFF  ; X86-NEXT:    subw %dx, %ax  ; X86-NEXT:    cmovol %ecx, %eax  ; X86-NEXT:    # kill: def $ax killed $ax killed $eax -; X86-NEXT:    popl %esi  ; X86-NEXT:    retl  ;  ; X64-LABEL: func16:  ; X64:       # %bb.0:  ; X64-NEXT:    xorl %eax, %eax -; X64-NEXT:    movl %edi, %ecx -; X64-NEXT:    subw %si, %cx +; X64-NEXT:    cmpw %si, %di  ; X64-NEXT:    setns %al  ; X64-NEXT:    addl $32767, %eax # imm = 0x7FFF  ; X64-NEXT:    subw %si, %di @@ -129,8 +120,7 @@ define i8 @func8(i8 %x, i8 %y) nounwind {  ; X86-NEXT:    movb {{[0-9]+}}(%esp), %al  ; X86-NEXT:    movb {{[0-9]+}}(%esp), %dl  ; X86-NEXT:    xorl %ecx, %ecx -; X86-NEXT:    movb %al, %ah -; X86-NEXT:    subb %dl, %ah +; X86-NEXT:    cmpb %dl, %al  ; X86-NEXT:    setns %cl  ; X86-NEXT:    addl $127, %ecx  ; X86-NEXT:    subb %dl, %al @@ -142,8 +132,7 @@ define i8 @func8(i8 %x, i8 %y) nounwind {  ; X64-LABEL: func8:  ; X64:       # %bb.0:  ; X64-NEXT:    xorl %ecx, %ecx -; X64-NEXT:    movl %edi, %eax -; X64-NEXT:    subb %sil, %al +; X64-NEXT:    cmpb %sil, %dil  ; X64-NEXT:    setns %cl  ; X64-NEXT:    addl $127, %ecx  ; X64-NEXT:    subb %sil, %dil @@ -163,8 +152,7 @@ define i4 @func3(i4 %x, i4 %y) nounwind {  ; X86-NEXT:    shlb $4, %dl  ; X86-NEXT:    shlb $4, %al  ; X86-NEXT:    xorl %ecx, %ecx -; X86-NEXT:    movb %al, %ah -; X86-NEXT:    subb %dl, %ah +; X86-NEXT:    cmpb %dl, %al  ; X86-NEXT:    setns %cl  ; X86-NEXT:    addl $127, %ecx  ; X86-NEXT:    subb %dl, %al @@ -179,8 +167,7 @@ define i4 @func3(i4 %x, i4 %y) nounwind {  ; X64-NEXT:    shlb $4, %sil  ; X64-NEXT:    shlb $4, %dil  ; X64-NEXT:    xorl %ecx, %ecx -; X64-NEXT:    movl %edi, %eax -; X64-NEXT:    subb %sil, %al +; X64-NEXT:    cmpb %sil, %dil  ; X64-NEXT:    setns %cl  ; X64-NEXT:    addl $127, %ecx  ; X64-NEXT:    subb %sil, %dil @@ -196,15 +183,13 @@ define i4 @func3(i4 %x, i4 %y) nounwind {  define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {  ; X86-LABEL: vec:  ; X86:       # %bb.0: -; X86-NEXT:    pushl %ebp  ; X86-NEXT:    pushl %ebx  ; X86-NEXT:    pushl %edi  ; X86-NEXT:    pushl %esi  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx  ; X86-NEXT:    xorl %eax, %eax -; X86-NEXT:    movl %ecx, %esi -; X86-NEXT:    subl %edx, %esi +; X86-NEXT:    cmpl %edx, %ecx  ; X86-NEXT:    setns %al  ; X86-NEXT:    addl $2147483647, %eax # imm = 0x7FFFFFFF  ; X86-NEXT:    subl %edx, %ecx @@ -212,8 +197,7 @@ define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {  ; X86-NEXT:    cmovol %eax, %ecx  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi  ; X86-NEXT:    xorl %eax, %eax -; X86-NEXT:    movl %edx, %edi -; X86-NEXT:    subl %esi, %edi +; X86-NEXT:    cmpl %esi, %edx  ; X86-NEXT:    setns %al  ; X86-NEXT:    addl $2147483647, %eax # imm = 0x7FFFFFFF  ; X86-NEXT:    subl %esi, %edx @@ -221,8 +205,7 @@ define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {  ; X86-NEXT:    cmovol %eax, %edx  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi  ; X86-NEXT:    xorl %eax, %eax -; X86-NEXT:    movl %esi, %ebx -; X86-NEXT:    subl %edi, %ebx +; X86-NEXT:    cmpl %edi, %esi  ; X86-NEXT:    setns %al  ; X86-NEXT:    addl $2147483647, %eax # imm = 0x7FFFFFFF  ; X86-NEXT:    subl %edi, %esi @@ -230,8 +213,7 @@ define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {  ; X86-NEXT:    cmovol %eax, %esi  ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax  ; X86-NEXT:    xorl %ebx, %ebx -; X86-NEXT:    movl %edi, %ebp -; X86-NEXT:    subl %eax, %ebp +; X86-NEXT:    cmpl %eax, %edi  ; X86-NEXT:    setns %bl  ; X86-NEXT:    addl $2147483647, %ebx # imm = 0x7FFFFFFF  ; X86-NEXT:    subl %eax, %edi @@ -244,7 +226,6 @@ define <4 x i32> @vec(<4 x i32> %x, <4 x i32> %y) nounwind {  ; X86-NEXT:    popl %esi  ; X86-NEXT:    popl %edi  ; X86-NEXT:    popl %ebx -; X86-NEXT:    popl %ebp  ; X86-NEXT:    retl $4  ;  ; X64-LABEL: vec:  | 

