Many of these had an extra 'f' at the beginning of their name that
caused them to not be treated as intrinsics.
I'm not sure what fpround was supposed to be so I deleted it.
frem was changed from an intrinsic too an instruction.
Differential D113528
[RISCV] Fix non-sensical intrinsic names in rv64i-single-softfloat.ll. NFC craig.topper on Nov 9 2021, 5:06 PM. Authored by
Details Many of these had an extra 'f' at the beginning of their name that I'm not sure what fpround was supposed to be so I deleted it. frem was changed from an intrinsic too an instruction.
Diff Detail
Event TimelineComment Actions Looks like they've been broken the whole time; see D65497. Also no clue what fpround is meant to be, all seven (floor, ceil, trunc, rint, nearbyint, round, roundeven) of the rounding intrinsics are already tested (modulo the typos). Comment Actions Looks like it. I don't know why there aren't just RVxxI versions in the {float,double}-intrinsics.ll files; this seems like unnecessary duplication of effort, is under-tested due to not having any RV32I tests and rv64i-double-softfloat.ll is comparatively minimal. Comment Actions I also don't understand why we're not getting tail calls here. Well, the intrinsic calls could be explained by using call rather than tail call in the IR, but I really don't get why the fadd etc instructions aren't converted to tail calls. Does LegalizeFloatTypes just fail to mark its libcalls as tail call candidates? Comment Actions I think the TargetLowering::makeLibCall used by LegalizeFloatTypes doesn't set the tail call bit. Comment Actions LGTM. @craig.topper Is this something you'd be interested in addressing in a revised version of this patch or in a follow-up patch? |