The vector arguments are split but assignments won't be pending.
Fixes #64645
Differential D157847
[RISCV] Fix assertion when passing f64 vectors via integer registers wangpc on Aug 14 2023, 2:23 AM. Authored by
Details The vector arguments are split but assignments won't be pending. Fixes #64645
Diff Detail
Event TimelineComment Actions LGTM (thanks!) with a minor modification: please extend the test case so the argument is actually accessed (by adding a new function or otherwise). e.g. define <2 x double> @v2f64(<2 x double> %x, <2 x double> %y) { and %1 = fadd <2 x double> %x, %y; ret <2 x double> %1 Such a test also demonstrates that atrociously poor code is generated in that case (copying arguments to and from the stack unnecessarily). It does seem to be correct though. I suspect more attention is needed for zdinx code quality. One point to note is that if whatever frontend that generated this code is aiming to comply with the standard calling convention, it should be passing that vector in memory (as Clang does).
|
Nit: we'd normally at nounwind here as there's nothing we're specifically trying to test about the .cfi stuff.