llvm-project
831e79ad - DAG: Merge all sincos_stret emission code into legalizer (#166295)

Commit
1 day ago
DAG: Merge all sincos_stret emission code into legalizer (#166295) This avoids AArch64 legality rules depending on libcall availability. ARM, AArch64, and X86 all had custom lowering of fsincos which all were just to emit calls to sincos_stret / sincosf_stret. This messes with the cost heuristics around legality, because really it's an expand/libcall cost and not a favorable custom. This is a bit ugly, because we're emitting code trying to match the C ABI lowered IR type for the aggregate return type. This now also gives an easy way to lift the unhandled x86_32 darwin case, since ARM already handled the return as sret case.
Author
Parents
Loading