This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Do not convert some vmov instructions

Authored by miyuki on Mar 20 2018, 4:19 AM.



Patch implements conversion of invalid
vmov instructions into valid ones. It turned out that some valid
instructions also get converted, for example

vmov.i64 d2, #0xff00ff00ff00ff00 ->
vmov.i16 d2, #0xff00

Such behavior is incorrect because according to the ARM ARM section
F2.7.7 Modified immediate constants in T32 and A32 Advanced SIMD
instructions, "On assembly, the data type must be matched in the table
if possible."

This patch fixes the isNEONmovReplicate check so that the above
instruction is not modified any more.

Diff Detail

Event Timeline

miyuki created this revision.Mar 20 2018, 4:19 AM
rengolin accepted this revision.Apr 3 2018, 1:05 PM
This revision is now accepted and ready to land.Apr 3 2018, 1:05 PM
This revision was automatically updated to reflect the committed changes.