On the process of moving the argument lowering handling for
half-precision floating point arguments and returns to the backend, this
patch removes the code that was responsible for handling the coercion of
those arguments in Clang's Codegen.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
LGTM, thanks for working on this patch series, this looks much clearer than doing it in clang.
I would have expected changes for neon as well.
Can't we now also get rid of the HasLegalHalfType argument to GetNeonType in CGBuiltin.(h|cpp). And also similar code in TargetInfo.cpp (ARMABIInfo::classifyReturnType, ARMABIInfo::isIllegalVectorType)?
Hi @stuij,
The changes to the backend only handle the half (f16) type itself, not vectors that have it as their base type.
From what I've checked on the AAPCS, the rules for handling those types are a bit different and they would require their own handling in the backend's calling convention lowering.
I haven't looked into the backend's handling of those types in detail, but I believe a similar approach to the one taken for f16 would be possible for the vector types as well.