[cfe-dev] Over-aligned vst1.64 and vld1.64 for arm-linux-androideabi

Friedman, Eli via cfe-dev cfe-dev at lists.llvm.org
Wed Feb 14 12:44:01 PST 2018


On 2/14/2018 12:08 PM, Greg McGary wrote:
> An excerpt from test.s:
>
> S::S(S&):
>         .fnstart
> ...
>         vld1.64 {d16, d17}, [r2]!
>         vst1.64 {d16, d17}, [lr]!
>
> The vxx1.64 insns assemble to forms with 128-bit alignment, so :128 is 
> the default alignment clause.

That isn't how vld1.64 works.

There are three forms of vld1.64 which load two registers (encoding 
comments generated using "llvm-mc --arch=arm -mattr=+neon -show-encoding"):

         vld1.64 {d16, d17}, [r2]!       @ encoding: [0xcd,0x0a,0x62,0xf4]
         vld1.64 {d16, d17}, [r2:64]!    @ encoding: [0xdd,0x0a,0x62,0xf4]
         vld1.64 {d16, d17}, [r2:128]!   @ encoding: [0xed,0x0a,0x62,0xf4]

The first requires no alignment, the second requires 64-bit alignment, 
the third requires 128-bit alignment.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project




More information about the cfe-dev mailing list