Math intrinsics

Implement the lowering. I already work on a non-libc system. The DAG code was written around the assumption there’s a library you can call into. We’ve had to implement inline expansions for many functions, which is mostly just an annoyance it wasn’t done in the first place.

The API for recognizing libcalls is garbage. I don’t want to have to look for a function name. I want to switch over an enum without doing additional parsing. Code also assumes function call = expensive, intrinsic call = cheap.

Libcalls also bind you to this garbage API from the 70s we’re stuck dealing with. For example, I would like a frexp intrinsic. This has no business using a pointer argument, an intrinsic can return a pair of fields. Not to mention errno (I don’t know why we don’t just ship a compiler-rt libm-lite that actually behaves like everyone wants with no errno)