diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/usub_sat_plus.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/usub_sat_plus.ll | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/llvm/test/CodeGen/X86/usub_sat_plus.ll b/llvm/test/CodeGen/X86/usub_sat_plus.ll index 6a9e5a46642..f56e0962eac 100644 --- a/llvm/test/CodeGen/X86/usub_sat_plus.ll +++ b/llvm/test/CodeGen/X86/usub_sat_plus.ll @@ -111,17 +111,22 @@ define zeroext i8 @func8(i8 zeroext %x, i8 zeroext %y, i8 zeroext %z) nounwind { define zeroext i4 @func4(i4 zeroext %x, i4 zeroext %y, i4 zeroext %z) nounwind { ; X86-LABEL: func4: ; X86: # %bb.0: +; X86-NEXT: pushl %ebx +; X86-NEXT: pushl %esi ; X86-NEXT: movb {{[0-9]+}}(%esp), %cl ; X86-NEXT: movb {{[0-9]+}}(%esp), %al ; X86-NEXT: mulb {{[0-9]+}}(%esp) -; X86-NEXT: shlb $4, %al -; X86-NEXT: shlb $4, %cl -; X86-NEXT: xorl %edx, %edx -; X86-NEXT: subb %al, %cl -; X86-NEXT: movzbl %cl, %eax -; X86-NEXT: cmovbl %edx, %eax -; X86-NEXT: shrb $4, %al -; X86-NEXT: movzbl %al, %eax +; X86-NEXT: movl %eax, %edx +; X86-NEXT: andb $15, %dl +; X86-NEXT: movzbl %dl, %esi +; X86-NEXT: movzbl %cl, %ebx +; X86-NEXT: cmpb %dl, %cl +; X86-NEXT: cmovbel %esi, %ebx +; X86-NEXT: subb %al, %bl +; X86-NEXT: movzbl %bl, %eax +; X86-NEXT: andl $15, %eax +; X86-NEXT: popl %esi +; X86-NEXT: popl %ebx ; X86-NEXT: retl ; ; X64-LABEL: func4: @@ -129,14 +134,14 @@ define zeroext i4 @func4(i4 zeroext %x, i4 zeroext %y, i4 zeroext %z) nounwind { ; X64-NEXT: movl %esi, %eax ; X64-NEXT: # kill: def $al killed $al killed $eax ; X64-NEXT: mulb %dl -; X64-NEXT: shlb $4, %al -; X64-NEXT: shlb $4, %dil -; X64-NEXT: xorl %ecx, %ecx -; X64-NEXT: subb %al, %dil -; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: cmovbl %ecx, %eax -; X64-NEXT: shrb $4, %al -; X64-NEXT: movzbl %al, %eax +; X64-NEXT: movl %eax, %ecx +; X64-NEXT: andb $15, %cl +; X64-NEXT: movzbl %cl, %ecx +; X64-NEXT: cmpb %cl, %dil +; X64-NEXT: cmoval %edi, %ecx +; X64-NEXT: subb %al, %cl +; X64-NEXT: movzbl %cl, %eax +; X64-NEXT: andl $15, %eax ; X64-NEXT: retq %a = mul i4 %y, %z %tmp = call i4 @llvm.usub.sat.i4(i4 %x, i4 %a) |