[llvm-bugs] [Bug 40825] [x86-64] Suboptimal codegen on uint128 negation

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jul 25 07:25:33 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=40825

Simon Pilgrim <llvm-dev at redking.me.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://bugs.llvm.org/show_
                   |                            |bug.cgi?id=40483
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #1 from Simon Pilgrim <llvm-dev at redking.me.uk> ---
This is fixed in trunk, I think from the work on [Bug #40483]

trunk / 9.0:

wider_tests::Tests<unsigned __int128>::neg(unsigned __int128*):
  xorl %eax, %eax
  negq (%rdi)
  sbbq 8(%rdi), %rax
  movq %rax, 8(%rdi)
  retq
wider_tests::Tests<Wider<unsigned long> >::neg(Wider<unsigned long>*):
  xorl %eax, %eax
  negq (%rdi)
  sbbq 8(%rdi), %rax
  movq %rax, 8(%rdi)
  retq

vs 8.0:

wider_tests::Tests<unsigned __int128>::neg(unsigned __int128*):
  xorl %eax, %eax
  xorl %ecx, %ecx
  subq (%rdi), %rcx
  sbbq 8(%rdi), %rax
  movq %rcx, (%rdi)
  movq %rax, 8(%rdi)
  retq
wider_tests::Tests<Wider<unsigned long> >::neg(Wider<unsigned long>*):
  movq (%rdi), %rax
  testq %rax, %rax
  setne %cl
  negq %rax
  xorl %edx, %edx
  addb $-1, %cl
  sbbq 8(%rdi), %rdx
  movq %rax, (%rdi)
  movq %rdx, 8(%rdi)
  retq

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190725/157eaf92/attachment.html>


More information about the llvm-bugs mailing list