<div dir="ltr">I believe every legal type for all supported targets needs to be represented in the enum inside of MVT. EVT is a wrapper around an MVT and a Type*. If the type is one of the MVT types the Type* is null and the MVT defines the define. Otherwise the MVT is INVALID_SIMPLE_VALUE_TYPE and the Type* points to a Type object that can represent an arbitrary type.<div>
<br></div><div>SDNodes always use the EVT object to represent their types. But after types have been legalized all those EVTs should have an MVT value and null Type*.</div><div><br></div><div>All of the places I converted from EVT to MVT were in operation legalization which occurs after type legalization. So everything should be an MVT at that point.</div>
<div><br></div><div>During instruction selection SDNodes get turned into MachineSDNodes which still contain EVTs(which are really just MVTs). Then MachineSDNodes are converted to MachineInstructions. I believe that's the point when EVTs go away.</div>
<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 4:13 PM, Sean Silva <span dir="ltr"><<a href="mailto:silvas@purdue.edu" target="_blank">silvas@purdue.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Craig, do you know if we have any documentation regarding what MVT and EVT are and how they fit in with the rest of the backend process? The documentation for the respective classes in ValueTypes.h sheds some light on the situation (MVT represents machine types, and EVT is a superset including non-legal types), but it's not clear for example at what stage in the codegen process they are formed and during which parts of the codegen process they are relevant (e.g., they don't appear to be present at the MI level (grepping MachineFunction.h and MachineInstr.h doesn't find anything), so when do they go away?).<span class="HOEnZb"><font color="#888888"><div>

<br></div><div>-- Sean Silva</div></font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>~Craig
</div>