This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Fix vcvtb/t.f16 input liveness
ClosedPublic

Authored by dmgreen on May 21 2022, 7:12 AM.

Details

Summary

The vcvtb.f16.f32 Sd, Sn (and vcvtt.f16.f32) instruction convert a f32 into a f16, writing either the top or bottom halves of the register. That means that half of the input register Sd is used in the output. This wasn't being modelled in the instructions, leading later analyses to believe that the registers were dead where they were not, generating invalid assembly.

Fix that be specifying the input Sda register for the instructions too, allowing them to be set for cases like vector inserts. Most of the changes are plumbing through the constraint string.`§

Diff Detail

Event Timeline

dmgreen created this revision.May 21 2022, 7:12 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 21 2022, 7:13 AM
dmgreen requested review of this revision.May 21 2022, 7:13 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 21 2022, 7:13 AM
NickGuy accepted this revision.May 23 2022, 2:35 AM

LGTM

This revision is now accepted and ready to land.May 23 2022, 2:35 AM
This revision was landed with ongoing or failed builds.May 25 2022, 4:16 AM
This revision was automatically updated to reflect the committed changes.