pub fn is_quad(ty: Type) -> boolExpand description
Whether a type is the float the machine moves and does not compute in.
A hundred and twenty eight bits of float, which is _Float128 and is long double on the
targets whose long double is that format. It is not one of float_slot’s two, and it is a
question of its own for the same reason is_bit is: the answer is a width no arithmetic is
written at, so putting it in that table would hand every rule there an index its list of two
names does not have.
What the machine does have for it is the moves. A vector register holds sixteen bytes, movaps
moves all sixteen of them, and neither instruction looks at what it moves, so a value of this
width can be loaded, stored, passed, returned and copied. What it cannot be is added, compared
or converted: there is no instruction for any of those at this format, so every one of them is a
call to the runtime, and until the pass that writes those calls exists an arithmetic reaching
the selector finds no name here and is reported.
An eighty bit long double is not this. That one is on the x87 stack rather than in a vector
register, which is a file nothing here allocates, and crate::term has no name for it at all.