AARCH64_BE load/store rules fix to conform to ARM ABI

Albrecht Kadlec akadlec at a-bix.com
Tue Feb 25 06:30:23 PST 2014


M       lib/Target/AArch64/AArch64InstrInfo.td
M       lib/Target/AArch64/AArch64InstrNEON.td

There are 2 versions of the same diff:
Result of "svn diff" as usual - quite large due to indentation changes.
Result of "svn diff -x -w"  to provide better overview what actually 
changed.
The commit will have correct indentation.

Changes:
For Big Endian (BE) systems:
Switch from LD1/ST1 loads for NEON regs to LDR/STR.
Apart from having better addressing modes and being specified in the 
ABI, LDR/STR do correct byte-swapping for BE, as opposed to the 
"element-swapping" taking place with LD1/ST1.

For Little Endian (LE), nothing changes in this step - although the 
shorter LDR/STR instructions should be enabled for LE as well - in LE, 
both instruction types do the same things and can be mixed.

For BE, initialization from literals must use vector load intrinsics - 
or the literals need to be rearranged before emit.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: AArch64_BE.diff-w
Type: application/octet-stream
Size: 17574 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140225/5880a273/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: AArch64_BE.diff
Type: text/x-patch
Size: 33908 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140225/5880a273/attachment.bin>


More information about the llvm-commits mailing list