This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] ACLE: Add bfloat16 to struct load/stores.
ClosedPublic

Authored by sdesmalen on Jun 19 2020, 7:22 AM.

Details

Summary

This patch contains:

  • Support in LLVM CodeGen for bfloat16 types for ld2/3/4 and st2/3/4.
  • New bfloat16 ACLE builtins for svld(2|3|4)[_vnum] and svst(2|3|4)[_vnum]

Diff Detail

Event Timeline

sdesmalen created this revision.Jun 19 2020, 7:22 AM
Herald added projects: Restricted Project, Restricted Project, Restricted Project. · View Herald TranscriptJun 19 2020, 7:22 AM
fpetrogalli added inline comments.Jun 19 2020, 8:07 AM
clang/include/clang/Basic/AArch64SVEACLETypes.def
69

Why did you have to set IsFP = true? Seems like an unrelated change?

clang/utils/TableGen/SveEmitter.cpp
542

Are these needed? I don't understand the rule for when to be specific on the values of these variables.

sdesmalen marked 2 inline comments as done.Jun 19 2020, 8:45 AM
sdesmalen added inline comments.
clang/include/clang/Basic/AArch64SVEACLETypes.def
69

It's more for consistency with the other definitions (svfloat16/svfloat32/..) but is otherwise a non-functional change.

clang/utils/TableGen/SveEmitter.cpp
542

For this patch, it's needed for 'l' because otherwise it will incorrectly assume the type is bfloat if the type specifier is b.
It similarly applies to all the other modifiers that are defined as being of type integer.

sdesmalen updated this revision to Diff 272342.Jun 22 2020, 1:02 AM
  • Updated RUN line in tests to fix test failures.
fpetrogalli accepted this revision.Jun 22 2020, 8:58 AM
This revision is now accepted and ready to land.Jun 22 2020, 8:58 AM
This revision was automatically updated to reflect the committed changes.