[LLVMdev] [RFC] Replacing EVT:s with MVT:s (when possible)

Owen Anderson resistor at mac.com
Wed Dec 5 10:34:49 PST 2012


On Dec 5, 2012, at 4:51 AM, David Chisnall <David.Chisnall at cl.cam.ac.uk> wrote:

> On 3 Dec 2012, at 23:45, Chris Lattner wrote:
> 
>> Please do.  MVT is cheaper than EVT and conceptually cleaner when dealing with physical machine types.  EVT should only be used in parts of the code generator that are "pre-legalization" because they can represent arbitrary IR types.  Anything that takes a legal machine type should take an MVT.
> 
> A side issue of this is that it is currently relatively hard to add new machine-specific register types.  The only way of doing this involves extending MVT, which requires tweaking three files in the (nominally) target-independent parts of the compiler.  It would be great if we could simply reserve a (small?) number of MVTs for target-specific legal values.

I added MVT::Untyped a while back to address this kind of use case.  You can construct node of MVT::Untyped, and as long as the InstrEmitter can infer what register class they can map to from their uses, everything should just work.  Of course, it's only been seriously tested with register sequence (REG_SEQUENCE) nodes.

--Owen



More information about the llvm-dev mailing list