This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Remove pre-UAL FLDM/FSTM aliases
ClosedPublic

Authored by olista01 on Oct 23 2017, 10:00 AM.

Details

Summary

These are pre-UAL syntax, and we don't support any other pre-UAL instructions, with the exception of FLDMX/FSTMX, which don't have a UAL equivalent. Therefore there's no reason to keep them or their AsmParser hacks around.

Diff Detail

Repository
rL LLVM

Event Timeline

olista01 created this revision.Oct 23 2017, 10:00 AM
rengolin edited edge metadata.Oct 23 2017, 1:49 PM

We don't want pre-UAL syntax. I know these were there before, but moving them up into table-gen encourages people to further add pre-UAL support and I believe we should stay well away from it.

Is there any reason why we don't just remove it?

+Saleem, who added these aliases in 2013.

Do you remember why these aliases were added, but not any other pre-UAL VFP instructions? There is a section in the v7AR reference manual calling out the FLDMX and FSTMX instructions as not having a UAL syntax, while still having a defined (but deprecated) baheviour, but this patch doesn't touch them.

compnerd edited edge metadata.Oct 23 2017, 11:19 PM

IIRC it had something to do with not having the equivalent mnemonics in UAL. If there is an equivalent, I don't think that we need to bother with the addition of the support for the pre-UAL syntax. Its been long enough, and most of the translation is relatively easy.

olista01 updated this revision to Diff 120021.Oct 24 2017, 2:39 AM
olista01 retitled this revision from [ARM] Move pre-UAL FLDM/FSTM aliases into tablegen to [ARM] Remove pre-UAL FLDM/FSTM aliases.
olista01 edited the summary of this revision. (Show Details)

I've double-checked, and the FLDMX and FSTMX are the only pre-UAL VFP instructions that don't have a UAL syntax, so I've removed all of the FLDMS anbd FLDMD aliases.

This still removes all of the hacks in the AsmParser, so the diagnostics for the register list operand in FLDMX and FSTMX are now the standard ones for the dpr_reglist operand class, as used by the UAL instructions.

rengolin added a subscriber: joerg.

Adding @joerg, who sometimes deals in old Entish ARM dialects.

@compnerd Did we clear the whole libunwind of those mnemonics? Was there any other reason why we had them?

I'm happy to see those go, but I fear someone will eventually cry foul that we "broke their code".

Essentially, if @compnerd / @joerg are happy, so am I. :)

Ping, the dependency (D39195) is now committed.

rengolin accepted this revision.Nov 21 2017, 8:11 AM

LGTM, thanks!

This revision is now accepted and ready to land.Nov 21 2017, 8:11 AM
This revision was automatically updated to reflect the committed changes.

Hi @rengolin

I fear someone will eventually cry foul that we "broke their code".

You were right. I afraid that this change breaks building some Android code. See https://android.googlesource.com/platform/frameworks/av, and, for example, the android-8.1.0_r9 tag, media/libstagefright/codecs/aacenc/src/asm/ARMV7/*.S. These files use fstmfdd and fldmfdd and are failed to compile now. They are already removed from the master branch (merge commit 69d60c1372, 17-Oct-2017), however, I believe that we have to be able to compile the existing versions.

asl added a subscriber: asl.Jan 22 2018, 11:59 PM