Commit graph

876 commits

Author SHA1 Message Date
Eric Anholt
4a1bd916e7 ir_to_mesa: Fix up array indexing.
The grammar for array_reference_vec4_vec4 was set up wrong, so we
weren't generating instructions if necessary for the array index.
2010-06-24 15:05:20 -07:00
Eric Anholt
2ee85e20c8 ir_to_mesa: Remove stale comment about monoburg. 2010-06-24 15:05:20 -07:00
Eric Anholt
bdbd9f112e ir_to_mesa: Add support for variable indexing of temporary arrays.
Fixes loop-01.vert, loop-02.vert.
2010-06-24 15:05:20 -07:00
Eric Anholt
4e5e0f018b ir_to_mesa: Clean up some handling of builtins and arrays.
Constant-index dereferences of arrays should work now.  One test is
regressed, but it should have been failing before this commit, too.
2010-06-24 15:05:20 -07:00
Eric Anholt
64fcbbca9c ir_to_mesa: Add support for loops.
Fixes CorrectParse1 and the glsl2 loop tests that don't use arrays.
2010-06-24 15:05:20 -07:00
Eric Anholt
0c005bd773 Make loop jump mode public so I can switch on it. 2010-06-24 15:05:20 -07:00
Eric Anholt
4380099c98 ir_to_mesa: Add logic_or and logic_and to get CorrectFunction1.vert working. 2010-06-24 15:05:20 -07:00
Eric Anholt
763cd75863 ir_to_mesa: add logic_xor to get CorrectParse2.vert working. 2010-06-24 15:05:20 -07:00
Eric Anholt
1d20862c8a ir_to_mesa: add logic_not and f2b to get CorrectParse2.frag working. 2010-06-24 15:05:20 -07:00
Eric Anholt
c5ca73e72c ir_to_mesa: Add support for ir_if. 2010-06-24 15:05:20 -07:00
Eric Anholt
3831507957 ir_to_mesa: Add support for comparison operations. 2010-06-24 15:05:20 -07:00
Eric Anholt
bf99533350 ir_to_mesa: Introduce shorthand for common Mesa IR emit patterns. 2010-06-24 15:05:20 -07:00
Eric Anholt
423a75c5d6 ir_to_mesa: Add ir_unop_f2i -> OPCODE_TRUNC. 2010-06-24 15:05:20 -07:00
Eric Anholt
878740bedf ir_to_mesa: Add codegen for rsq expression operation. 2010-06-24 15:05:20 -07:00
Eric Anholt
8c29a1d84d ir_to_mesa: Add exp/log expression operations. 2010-06-24 15:05:20 -07:00
Eric Anholt
829e0a8eff ir_to_mesa: Add (almost) the rest of the builtin varyings. 2010-06-24 15:05:20 -07:00
Eric Anholt
110d5cc83c ir_to_mesa: Support gl_Position output. 2010-06-24 15:05:20 -07:00
Eric Anholt
8041bce333 ir_to_mesa: Support gl_FragData[] output. 2010-06-24 15:05:20 -07:00
Eric Anholt
48e282d8a2 ir_to_mesa: Support gl_FragData[] output. 2010-06-24 15:05:20 -07:00
Eric Anholt
50ad96ebce ir_to_mesa: Start doing some int support. 2010-06-24 15:05:20 -07:00
Eric Anholt
315c638b8c ir_to_mesa: Fix bugs in swizzle handling for scalar operations.
Looking at a vec2 / float codegen, the writemasks on the RCPs were wrong and
the swizzle on the multiply by the RCP results was wrong.
2010-06-24 15:05:20 -07:00
Eric Anholt
f30100c19c ir_to_mesa: Fix copy'n'paste bug where divide multiplied left by 1/left.
Multiply left by 1/right, please.
2010-06-24 15:05:20 -07:00
Eric Anholt
3d70d1f4d6 ir_to_mesa: Emit more reduced writemasks for ops on small types.
This should help prevent Mesa from having to be smart to give
channel-wise drivers better information.
2010-06-24 15:05:19 -07:00
Eric Anholt
b07cc372c6 ir_to_mesa: Handle swizzles on LHS of assignment (writemasks). 2010-06-24 15:05:19 -07:00
Eric Anholt
12f654c63b ir_to_mesa: Produce multiple scalar ops when required to produce vec4s.
Fixes the code emitted in a test shader for vec2 texcoord / vec2 tex_size.
2010-06-24 15:05:19 -07:00
Eric Anholt
b2ed4dd7b0 ir_to_mesa: Get temps allocated at the right times.
The alloced_vec4/vec4 distinction was an experiment to expose the cost
of temps to the codegen.  But the problem is that the temporary
production rule gets called after the emit rule that was using the
temp.  We could have the args to emit_op be pointers to where the temp
would get allocated later, but that seems overly hard while just
trying to bring this thing up.  Besides, the temps used in expressions
bear only the vaguest relation to how many temps will be used after
register allocation.
2010-06-24 15:05:19 -07:00
Eric Anholt
ae252d3613 ir_to_mesa: Make the first temp index we use 1 to show off bugs.
Regs aren't allocated at the right times yet, so we see TEMP[0] a lot.
2010-06-24 15:05:19 -07:00
Eric Anholt
7aa0b034f7 ir_to_mesa: Fix up the assign rule to use left and right correctly.
The destination of assign is in left, not in the node itself.
2010-06-24 15:05:19 -07:00
Eric Anholt
f14913d4b7 ir_to_mesa: Do my best to explain how the codegen rules work. 2010-06-24 15:05:19 -07:00
Eric Anholt
b7abce770f ir_to_mesa: Print out the ir along with the Mesa IR.
Ideally this would be hooked up by ir_print_visitor dumping into a
string that we could include as prog_instruction->Comment when in
debug mode, and not try keeping ir_instruction trees around after
conversion to Mesa.  The ir_print_visitor isn't set up to do that for
us today.
2010-06-24 15:05:19 -07:00
Eric Anholt
3419583266 ir_to_mesa: Fix up src reg swizzling. 2010-06-24 15:05:19 -07:00
Eric Anholt
c554d7cede ir_to_mesa: Remove dead code from when this was an ARB_fp printer. 2010-06-24 15:05:19 -07:00
Eric Anholt
8197eeee3b ir_to_mesa: Fill in more bits of dest resg. 2010-06-24 15:05:19 -07:00
Eric Anholt
aaee40e107 ir_to_mesa: Print out the resulting program. 2010-06-24 15:05:19 -07:00
Eric Anholt
b5039eff3f Add missing dist file. 2010-06-24 15:05:19 -07:00
Eric Anholt
182b623de3 Ignore the generated codegen files for now.
Later we'll throw them in revision control.
2010-06-24 15:05:19 -07:00
Eric Anholt
84771df82e ir_to_mesa: Start building GLSL IR to Mesa IR conversion.
There are major missing pieces here.  Most operations aren't
supported.  Matrices need to be broken down to vector ops before we
get here.  Scalar operations (RSQ, RCP) are handled incorrectly.
Arrays and structures are not even considered.
2010-06-24 15:05:19 -07:00
Eric Anholt
9290e0dd28 Make inlined function variables auto, not in/out. 2010-06-24 15:05:11 -07:00
Eric Anholt
ebefeb2bdd Attach a pointer to variable names in LIR dumping.
Since variable names are not unique, and we like to make lots of
__retvals and assignment_tmps and a,b,c,d this helps in debugging.
2010-06-24 13:32:35 -07:00
Eric Anholt
9ca0a022e6 Quiet unused arg warning for ir_constant cloning. 2010-06-24 13:32:35 -07:00
Eric Anholt
5f38408833 Move ir_constant cloning alongside the other cloning functions. 2010-06-24 13:32:35 -07:00
Eric Anholt
ae805922b7 Don't forget to add the declaration of our temporary variable for assigns.
Otherwise, dead code elimination gets confused since it relies on
seeing decls.
2010-06-24 13:32:35 -07:00
Eric Anholt
f66ba4f357 ir_function_inlining: Re-add the "s/return/retval =/" functionality.
I ripped it out with the cloning changes yesterday, and should have
tested and noticed that there were now returns all over.
2010-06-24 13:32:35 -07:00
Eric Anholt
1b2bcf7913 Fix variable remapping in function cloning.
It's (ht, data, key) not (ht, key, data).
2010-06-24 13:32:35 -07:00
Carl Worth
4b2d32b5b5 ast_node: Remove empty destructor.
This wasn't serving any purpose. So delete it.
2010-06-23 16:16:32 -07:00
Carl Worth
c42e64099b preprocessor: Initialize a potentially uninitialized variable.
My current reading of the relevant static functions suggests that last
is never used without being uninitialized, (we only use it if the
expansion function returned non-NULL and the expansion functions
always set it before returning non-NULL).

Apparently gcc isn't coming to the same conclusion. Initializing this
to NULL nicely quites gcc and will guarantee a nice, early segfault if
my anaylsis turns out to be wrong.
2010-06-23 16:13:31 -07:00
Carl Worth
726faddda2 preprocessor: Remove dead code _token_list_length
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Carl Worth
45cbc08438 preprocessor: Remove dead code _string_list_append_list
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Carl Worth
60c67e46b1 configure: Ensure that config.h can be safely included multiple times.
Use AH_TOP and AH_BOTTOM macros so that the standard include guard
mechanisms are emitted by autoheader into the generated config.h file.
2010-06-23 16:13:31 -07:00
Carl Worth
a32305a8bd configure: Remove some dead code.
This block of code is useless because a (nearly-equivalent) assignment
is made immediately after. The only difference is the omission of
-Wunreadchable-code in the assignment being used. Presumably, that was
intended to be -Wunreachable-code (without the first 'd'), but since
this hasn't been being used we just drop it.
2010-06-23 16:13:31 -07:00