A lot of NVVM intrinsics can use the default intrinsic attributes (e.g.,
nosync, nofree, ...) as well as speculatable. The latter is important
if we want to recompute intrinsics results instead of communicating them
via memory.
I did use default attributes for almost all readnone attributes but
speculatable only where I had reasonable confidence they cannot
experience UB. That said, someone should double check.
TODO: There seem to be various intrinsics marked Commutative which
should not, e.g., fma and div.
These commutative annotations seem wrong to me. Same for fma.