Allow CallLowering to handle types which are normally required to be passed as different register types. E.g. <2 x i16> may need to be passed as a larger <2 x i32> type, so formal arg lowering needs to be able truncate it back. Likewise, when dealing with returns of these types, they need to be widened in the appropriate way back
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
LGTM, some debug output would be nice to show what it is that we intend to implement
llvm/lib/CodeGen/GlobalISel/CallLowering.cpp | ||
---|---|---|
161 ↗ | (On Diff #194215) | Are we going to handle this? Debug output if so? |
llvm/lib/Target/AArch64/AArch64CallLowering.cpp | ||
259 ↗ | (On Diff #194215) | Some debug output here would be nice? |
llvm/lib/CodeGen/GlobalISel/CallLowering.cpp | ||
---|---|---|
161 ↗ | (On Diff #194215) | I don't have a test case yet, this was meant to just enable the vector icmp work. I'll add some debug here and the return handling too. |
Comment Actions
We're seeing a failing assertion when building Skia for AArch64 which seems to have been introduced by this change, see PR41738 for more details.