This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Allow MVE loads and stores of v2f64
AbandonedPublic

Authored by miyuki on Jun 26 2019, 8:41 AM.

Details

Summary

The <2 x f64> vector type is legal in the backend as a storage type
So the unpredicated load ad store instructions must support it.

Furthermore, the type can be used by the calling convention handling
machinery. A new test in mve-basic.ll specifically addresses this
case.

Diff Detail

Event Timeline

miyuki created this revision.Jun 26 2019, 8:41 AM
ostannard added inline comments.Jun 26 2019, 8:55 AM
llvm/test/CodeGen/Thumb2/mve-basic.ll
49

You've added patterns for v2f64, but are testing v16i8.

Why are we getting stack re-alignment code, when the alloca only has 8-byte alignment?

miyuki marked an inline comment as done.Jun 26 2019, 9:44 AM
miyuki added inline comments.
llvm/test/CodeGen/Thumb2/mve-basic.ll
49

You've added patterns for v2f64, but are testing v16i8.

I'll add another test.

Why are we getting stack re-alignment code, when the alloca only has 8-byte alignment?

Because DataLayout::getPrefTypeAlignment returns 16 for <16 x i8>

miyuki updated this revision to Diff 206704.Jun 26 2019, 9:58 AM
miyuki edited the summary of this revision. (Show Details)

Added a test which uses <2 x double>. Alignment issue should be fixed separately, IMHO.

miyuki marked an inline comment as done.Jun 26 2019, 9:58 AM