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