-* Must update PHI node to have a pair between predecessor and value.
+* pred/succ iterators on basic blocks don't handle switch statements correctly
* Enhance BB to make predecessor handling easier (to update PHI nodes)
* Provide a pass that eliminates critical edges from the CFG
-* Provide a print hook to print out xvcg format files for vis
+* Provide a print pass to print out xvcg format files for vis
* I need to provide an option to the bytecode loader to ignore memory
dependance edges. Instead, the VM would just treat memory operations
(load, store, getfield, putfield, call) as pinned instructions.
structure size to 256 members. This can be fixed later by either:
1. adding varient that takes ushort
2. Splitting structures into nested structures each of half size
- <float> %f = loadfield *{int, {float}} Str, ubyte 1, ubyte 0
- storefield float %f, *{int, {float}} Str, ubyte 1, ubyte 0
+ <float> %f = load *{int, {float}} Str, 1, 0
+ store float %f, *{int, {float}} Str, 1, 0
* I'm noticing me writing a lot of code that looks like this (dtor material here):
ConstPool.dropAllReferences();
ConstPool.delete_all();
* pointer int *
* "packed format", like this: [4 x sbyte]: Packed SIMD datatype
* Maybe 'tailcall' also?
-* It might be nice to support enumerations of some sort... especially for use
- as a compiler IR
* Include a method level bytecode block that defines a mapping between values
and registers that defines a minimally register allocated code. This can
make me finally address how to encode extensions in assembly.
<pre>
<result> = load <ty>* <pointer> <i>; yields {ty}:result</i>
<result> = load <ty>* <arrayptr>, uint <idx> <i>; yields {ty}:result</i>
+ <result> = load <ty>* <structptr>{, <idx>}* <i>; yields field type</i>
</pre>
<h5>Overview:</h5>
<h5>Arguments:</h5>
-There are two forms of the '<tt>load</tt>' instruction: one for reading from a general pointer, and one for reading from a pointer to an array.<p>
+There are three forms of the '<tt>load</tt>' instruction: one for reading from a general pointer, one for reading from a pointer to an array, and one for reading from a pointer to a structure.<p>
-In the first form, '<tt><ty></tt>' may be any pointer type. If it is a pointer to an array, the first (zeroth) element is read from). In the second form, '<tt><ty></tt>' must be a pointer to an array. No bounds checking is performed on array reads.<p>
+In the first form, '<tt><ty></tt>' may be any pointer type. If it is a pointer to an array, the first (zeroth) element is read from). In the second form, '<tt><ty></tt>' must be a pointer to an array. No bounds checking is performed on array reads. In the third form, the pointer must point to a (possibly nested) structure. There shall be one ubyte argument for each level of dereferencing involved.<p>
<h5>Semantics:</h5>
<a href="#i_store">store</a> [4 x ubyte]* %array,
uint 4, ubyte 124
%val = load [4 x ubyte]* %array, uint 4 <i>; yields {ubyte}:val = ubyte 124</i>
-
+ %val = load {{int, float}}* %stptr, 0, 1 <i>; yields {float}:val</i>
</pre>
<address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
<!-- Created: Tue Jan 23 15:19:28 CST 2001 -->
<!-- hhmts start -->
-Last modified: Thu May 31 17:36:39 CDT 2001
+Last modified: Mon Jun 11 09:30:45 CDT 2001
<!-- hhmts end -->
</font>
</body></html>