This is an archive of the discontinued LLVM Phabricator instance.

Test stackmap support for floating point types.
ClosedPublic

Authored by vext01 on May 23 2022, 7:21 AM.

Details

Reviewers
t.p.northover
Summary

This is similar to D126069, but for floats.

It appears that float support is complete, or at least, the stackmap records emitted are not inconceivable (I must admit that I don't know about many of the architectures under test here).

One curiosity, the SystemZ tests highlight an undocumented (or maybe incorrect) quirk of the stackmap format: in the case of a Register record, the Offset or SmallConstant field can encode a sub-register index! I've only ever seen this field zero for Register entries up until now.

I found the code for this here

This surprised me, since the stackmap docs say:

Each entry in the liveout register list contains a DWARF register number and size in bytes. The stackmap format deliberately omits specific subregister information. Instead the runtime must interpret this information conservatively.

It's not clear to me if this is talking only about liveouts, or the stackmap format as a whole. But given:

For example, if the stackmap reports one byte at %rax, then the value may be in either %al or %ah.

without the sub-register info, how would you know where to look?

Anyway, that is one for another day. I'll raise an issue.

Diff Detail

Event Timeline

vext01 created this revision.May 23 2022, 7:21 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 23 2022, 7:21 AM
vext01 requested review of this revision.May 23 2022, 7:21 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 23 2022, 7:21 AM
t.p.northover accepted this revision.May 27 2022, 3:58 AM

Looks reasonable for extra tests.

This revision is now accepted and ready to land.May 27 2022, 3:58 AM
t.p.northover closed this revision.May 30 2022, 2:50 AM

I've committed this for Edd as d245974e1a7.