This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] Asm: Support for contiguous ST1 (scalar+scalar) store instructions.
ClosedPublic

Authored by sdesmalen on Apr 26 2018, 7:43 AM.

Diff Detail

Repository
rL LLVM

Event Timeline

sdesmalen created this revision.Apr 26 2018, 7:43 AM
fhahn accepted this revision.Apr 30 2018, 1:31 AM

LGTM, thanks

This revision is now accepted and ready to land.Apr 30 2018, 1:31 AM

Hi Sander,

Sorry to be pain, but could you point to the document that describes this please? From the supplement, I can't see why a shifted operand is invalid.

cheers,
sam

Sorry to be pain, but could you point to the document that describes this please? From the supplement, I can't see why a shifted operand is invalid.

Hi Sam, if you download the spec from:

https://developer.arm.com/docs/ddi0584/latest/arm-architecture-reference-manual-supplement-the-scalable-vector-extension-sve-for-armv8-a

the SVE Supplement links to the SVE Instruction Index in section 5.2.1. This should open the xhtml/index.html page with a list of all the instructions and all their details. For some reason the PDF link doesn't work for me, so opening the index.html directly is probably easiest. (I think the specific file you're looking for is: st1b_z_p_br.html)

Ok, for my sanity, I don't think the document descriptions match up, do you agree? The useful link you pointed me to only shows Xm as the scalar index, but 5.2.2 of the PDF supplement shows that the index can be scaled with LSL.

Are you referring to the 'assembler syntax' table? I think this table needs to be read in conjunction with the following paragraph (section 5.2.2, page 42):

Load, store, and prefetch instructions that multiply a scalar index register or an index vector element by the memory element access size specify a shift type, followed by a shift amount in bits. The shift type can be one of LSL, SXTW, or UXTW. The shift amount is always Log2 of the memory element access size, in bytes. The shift amount defaults to zero when the memory element access size is a byte. The shift type of LSL must be omitted if the shift amount is omitted.

Ah, thanks for clearing that up for me.

This revision was automatically updated to reflect the committed changes.