bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/18499] New: LDR immediate not using mov8 and mov.w for Thumb2


From: alessandro.marzocchi at gmail dot com
Subject: [Bug gas/18499] New: LDR immediate not using mov8 and mov.w for Thumb2
Date: Sun, 07 Jun 2015 15:05:09 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=18499

            Bug ID: 18499
           Summary: LDR immediate not using mov8 and mov.w for Thumb2
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: alessandro.marzocchi at gmail dot com
  Target Milestone: ---

Created attachment 8346
  --> https://sourceware.org/bugzilla/attachment.cgi?id=8346&action=edit
patch

On thumb2 architecture (Cortex M4) the ldr Rx,=imm always translate to a ldr
from literal pool. This patch tries to correctly translate it to a mov8 or a
mov.w/mvn.w when possible. Please double check it as I have never done any
development on GAS source.

test assembly:
.thumb
.arch armv7-m
.syntax unified
.text

ldr r0,=4
ldr r0,=0xFF000000
ldr r0,=0xFFFFFFC0
ldr r0,=0x12345678

pre-patch:
00000000 <.text>:
   0:   4801            ldr     r0, [pc, #4]    ; (8 <.text+0x8>)
   2:   4802            ldr     r0, [pc, #8]    ; (c <.text+0xc>)
   4:   4802            ldr     r0, [pc, #8]    ; (10 <.text+0x10>)
   6:   4803            ldr     r0, [pc, #12]   ; (14 <.text+0x14>)
   8:   00000004        .word   0x00000004
   c:   ff000000        .word   0xff000000
  10:   ffffffc0        .word   0xffffffc0
  14:   12345678        .word   0x12345678

after-patch:
00000000 <.text>:
   0:   2004            movs    r0, #4
   2:   f04f 407f       mov.w   r0, #4278190080 ; 0xff000000
   6:   f06f 003f       mvn.w   r0, #63 ; 0x3f
   a:   4800            ldr     r0, [pc, #0]    ; (c <.text+0xc>)
   c:   12345678        .word   0x12345678

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]