[llvm-commits] [PATCH] Fix for some unpredictable instructions on ARM

Silviu Baranga silbar01 at arm.com
Thu Mar 22 07:24:37 PDT 2012


Commited in r153250 (mul.diff), r153251 (ldr.diff) and r153252
(addrmode3.diff).

 

Regards,

Silviu

 

From: Owen Anderson [mailto:owen at apple.com] 
Sent: 21 March 2012 23:14
To: Jim Grosbach
Cc: Silviu Baranga; Owen Anderson; llvm-commits at cs.uiuc.edu LLVM
Subject: Re: [PATCH] Fix for some unpredictable instructions on ARM

 

Looks fine, other than a bit of trailing whitespace. ;-)

 

--Owen

 

On Mar 21, 2012, at 3:56 PM, Jim Grosbach <grosbach at apple.com> wrote:





This all seems reasonable to me. Owen, what do you think?

 

-Jim

 

On Mar 21, 2012, at 3:47 AM, Silviu Baranga <silbar01 at arm.com> wrote:





Hi,

 

The ARM instructions:

    STRD, STRH, LDRD, LDRH, LDRSH, LDRSB, LDRSBT, LDRHT, LDRSHT, MUL

have some corner cases in which are unpredictable. In these cases the
disassembler should

still disassemble the instructions instead of rejecting them.

The attached standalone patches fix this.

  

 - addrmode3.diff - STRD, STRH, LDRD, LDRH, LDRSH and LDRSB instructions.
The patch

                  modifies the C++ ARM disassembler code to add the checking
conditions, which are

                  too complex to introduce with tablegen files.

 - ldr.diff - LDRSBT, LDRHT and LDRSHT  instructions. The patch introduces a
decoder

                 method because of the Rn == Rt unpredictability condition
that is common to

                 all the instructions above.

- mul.diff -  MUL instruction. The patch changes the TableGen description of
the MUL

                 Instruction in order to reflect the fact that the
instruction is unpredictable when

                either of the Rd, Rn or Rm register operands are the pc
register.

 

All patches add regression tests for the modifications.

 

Please review.

 

Thanks,

Silviu

<addrmode3.diff><ldr.diff><mul.diff>

 

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120322/8fd0cb0f/attachment.html>


More information about the llvm-commits mailing list