[llvm-bugs] [Bug 31667] New: inefficient code for i16 bit

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Jan 17 01:01:24 PST 2017


            Bug ID: 31667
           Summary: inefficient code for i16 bit
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: X86
          Assignee: asaf.badouh at intel.com
          Reporter: asaf.badouh at intel.com
                CC: amjad.aboud at intel.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified

define i16 @test(i16 %data) {
  %shr1 = lshr i16 %data, 1
  %shr1.1 = lshr i16 %data, 3
  %ret = sub i16 %shr1.1, %shr1
  ret i16 %ret

Generated asm:
movl    %ecx, %eax
andl    $65528, %eax  # imm = 0xFFF8
andl    $65534, %ecx  # imm = 0xFFFE
shrl    %ecx
shrl    $3, %eax
subl    %ecx, %eax

The optimal expected asm:
andl    $65535, %eax  # imm = 0xFFFF
movl    %eax, %ecx
shrl    %ecx
shrl    $3, %eax
subl    %ecx, %eax

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/20170117/ce5fd31c/attachment.html>

More information about the llvm-bugs mailing list