aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler
Commit message (Collapse)AuthorAgeFilesLines
...
* nir/lower_vec_to_movs: fixup for new foreach_block()Connor Abbott2016-04-281-14/+10
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_idiv: fixup for new foreach_block()Connor Abbott2016-04-281-14/+7
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_to_source_mods: fixup for new foreeach_block()Connor Abbott2016-04-281-9/+6
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_io: fixup for new foreach_block()Connor Abbott2016-04-281-4/+5
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_system_values: fixup for new foreach_block()Connor Abbott2016-04-281-16/+11
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_phis_to_scalar: fixup for new foreach_block()Connor Abbott2016-04-281-4/+5
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_indirect_derefs: fixup for new foreach_block()Connor Abbott2016-04-281-22/+17
| | | | | | v2 (Jason Ekstrand): Use nir_foreach_block_safe Reviewed-by: Jason Ekstrand <[email protected]>
* nir/nir_lower_global_vars: fixup for new foreach_block()Connor Abbott2016-04-281-22/+16
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_atomics: fixup for new foreach_block()Connor Abbott2016-04-281-25/+11
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_load_const: fixup for new foreach_block()Connor Abbott2016-04-281-12/+6
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_locals_to_regs: fixup for new foreach_block()Connor Abbott2016-04-281-4/+5
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_gs_intrinsics: fixup for new foreach_block()Connor Abbott2016-04-281-4/+4
| | | | | | v2 (Jason Ekstrand): Use nir_foreach_block_safe Reviewed-by: Jason Ekstrand <[email protected]>
* nir/nir: fixup for new foreach_block()Connor Abbott2016-04-281-28/+14
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_clip: fixup for new foreach_block()Connor Abbott2016-04-281-29/+21
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_alu_to_scalar: fixup for new foreach_block()Connor Abbott2016-04-281-12/+6
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/liveness: fixup for new foreach_block()Connor Abbott2016-04-281-14/+10
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/inline_functions: fixup for new foreach_block()Connor Abbott2016-04-281-30/+23
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/from_ssa: fixup for new foreach_block()Connor Abbott2016-04-281-27/+30
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/dominance: fixup for new foreach_block()Connor Abbott2016-04-281-101/+59
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir: Try to warn when C99 extensions are used in nir headers.Jose Fonseca2016-04-281-1/+22
| | | | | | | | | | | | | | Ideally we'd have nir.h being included with -Wpedantic too, but it fails with: src/compiler/nir/nir.h:754:20: warning: ISO C++ forbids zero-size array ‘src’ [-Wpedantic] nir_alu_src src[]; ^ In file included from src/compiler/nir/glsl_to_nir.cpp:42:0: src/compiler/nir/nir.h:919:16: warning: ISO C++ forbids zero-size array ‘src’ [-Wpedantic] nir_src src[]; Reviewed-by: Connor Abbott <[email protected]>
* nir: Remove spurious ; after nir_builder functions.Jose Fonseca2016-04-281-1/+1
| | | | | | Makes -pedantic happy. Reviewed-by: Connor Abbott <[email protected]>
* nir: Remove spurious ; after namespace.Jose Fonseca2016-04-281-1/+1
| | | | | | Makes -pedantic happy. Reviewed-by: Connor Abbott <[email protected]>
* nir: Avoid C99 field initializers.Jose Fonseca2016-04-281-3/+6
| | | | | | | | | As they are not standard C++ and are not supported by MSVC C++ compiler. Just have nir_imm_double match nir_imm_float above. Reviewed-by: Connor Abbott <[email protected]> Reviewed-by: Sinclair Yeh <[email protected]>
* nir: Add lrp lowering for doubles in opt_algebraicSamuel Iglesias Gonsálvez2016-04-282-3/+8
| | | | | | | | | | | | | | | Some hardware (i965 on Broadwell generation, for example) does not support natively the execution of lrp instruction with double arguments. Add 'lower_flrp64' flag to lower this instruction in that case. v2: - Rename lower_flrp_double to lower_flrp64 (Jason) - Fix typo (Jason) - Adapt the code to define bit_size information in the opcodes. Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* nir: rename lower_flrp to lower_flrp32Samuel Iglesias Gonsálvez2016-04-282-7/+7
| | | | | | | A later patch will add lower_flrp64 option to NIR. Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_double_ops: lower round_even()Iago Toral Quiroga2016-04-282-1/+60
| | | | | | At least i965 hardware does not have native support for round_even() on doubles. Reviewed-by: Matt Turner <[email protected]>
* nir/lower_double_ops: lower fract()Iago Toral Quiroga2016-04-282-0/+15
| | | | | | At least i965 hardware does not have native support for fract() on doubles. Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_double_ops: lower ceil()Iago Toral Quiroga2016-04-282-0/+24
| | | | | | | | | | At least i965 hardware does not have native support for ceil on doubles. v2 (Sam): - Improve the lowering pass to remove one bcsel (Jason). Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_double_ops: lower floor()Iago Toral Quiroga2016-04-282-0/+26
| | | | | | | | | | At least i965 hardware does not have native support for floor on doubles. v2 (Sam): - Improve the lowering pass to remove one bcsel (Jason) Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* nir/lower_double_ops: lower trunc()Iago Toral Quiroga2016-04-282-0/+61
| | | | | | | | | | At least i965 hardware does not have native support for truncating doubles. v2: - Simplified the implementation significantly. - Fixed the else branch, that was not doing what we wanted. Reviewed-by: Jason Ekstrand <[email protected]>
* nir: add a pass to lower some double operationsConnor Abbott2016-04-283-0/+392
| | | | | | | | | | | | v2: Move to compiler/nir (Iago) v3: Use nir_imm_int() to load the constants (Sam) v4 (Sam): - Undo line-wrap (Jason). - Fix comment (Jason). - Improve generated code for get_signed_inf() function (Connor). Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* nir/builder: add nir_imm_double()Connor Abbott2016-04-281-0/+8
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/builder: Add bit_size info to nir_build_imm()Samuel Iglesias Gonsálvez2016-04-283-8/+9
| | | | | | | | v2: - Group num_components and bit_size together (Jason) Signed-off-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* glsl: fix lowering outputs for early/nested returnsLars Hamre2016-04-281-4/+54
| | | | | | | | | | | | | Return statements in conditional blocks were not having their output varyings lowered correctly. This patch fixes the following piglit tests: /spec/glsl-1.10/execution/vs-float-main-return /spec/glsl-1.10/execution/vs-vec2-main-return /spec/glsl-1.10/execution/vs-vec3-main-return Signed-off-by: Lars Hamre <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
* nir: rewrite nir_foreach_block and friendsConnor Abbott2016-04-272-83/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, these were functions which took a callback. This meant that the per-block code had to be in a separate function, and all the data that you wanted to pass in had to be a single void *. They walked the control flow tree recursively, doing a depth-first search, and called the callback in a preorder, matching the order of the original source code. But since each node in the control flow tree has a pointer to its parent, we can implement a "get-next" and "get-previous" method that does the same thing that the recursive function did with no state at all. This lets us rewrite nir_foreach_block() as a simple for loop, which lets us greatly simplify its users in some cases. This does require us to rewrite every user, although the transformation from the old nir_foreach_block() to the new nir_foreach_block() is mostly trivial. One subtlety, though, is that the new nir_foreach_block() won't handle the case where the current block is deleted, which the old one could. There's a new nir_foreach_block_safe() which implements the standard trick for solving this. Most users don't modify control flow, though, so they won't need it. Right now, only opt_select_peephole needs it. The old functions are reimplemented in terms of the new macros, although they'll go away after everything is converted. v2: keep an implementation of the old functions around v3 (Jason Ekstrand): A small cosmetic change and a bugfix in the loop handling of nir_cf_node_cf_tree_last(). v4 (Jason Ekstrand): Use the _safe macro in foreach_block_reverse_call Reviewed-by: Jason Ekstrand <[email protected]>
* nir/opt_cp: use nir_block_get_following_if()Connor Abbott2016-04-271-7/+3
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir/algebraic: Add a bit-size validatorJason Ekstrand2016-04-271-0/+270
| | | | | | | | | This commit adds a validator that ensures that all expressions passed through nir_algebraic are 100% non-ambiguous as far as bit-sizes are concerned. This way it's a compile-time error rather than a hard-to-trace C exception some time later. Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]>
* nir/opt_algebraic: Fix some expressions with ambiguous bit sizesJason Ekstrand2016-04-271-3/+3
| | | | | Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
* nir/search: Respect the bit_size parameter on nir_search_valueJason Ekstrand2016-04-272-1/+18
| | | | | Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
* nir/algebraic: Add a mechanism for specifying the bit size of a valueJason Ekstrand2016-04-273-4/+31
| | | | Reviewed-by: Iago Toral Quiroga <[email protected]>
* nir/algebraic: Use "uint" instead of "unsigned" for uint typesJason Ekstrand2016-04-271-2/+2
| | | | | | | | | This is consistent with the rename done for the rest of NIR. Currently, "bool" is the only type specifier used in nir_opt_algebraic.py so this is really a no-op. Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
* nir/algebraic: Do better error reporting of bad expressionsJason Ekstrand2016-04-271-1/+16
| | | | | | | | | | | | Previously, if an exception was encountered anywhere, nir_algebraic would just die in a fire with no indication whatsoever as to where the actual bug is. This commit makes it print out the particular search-and-replace expression that is causing problems along with the exception. Also, it will now report all of the errors it finds and then exit at the end like a standard C compiler would do. Reviewed-by: Dylan Baker <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
* glsl: move uniform block validation to link_uniform_blocks.cppTimothy Arceri2016-04-272-53/+53
| | | | Reviewed-by: Eduardo Lima Mitev <[email protected]>
* nir: Add a helper for figuring out what channels of an SSA def are readJason Ekstrand2016-04-262-0/+27
| | | | | Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Topi Pohjolainen <[email protected]>
* glsl: removing double semi-colonsJakob Sinclair2016-04-262-2/+2
| | | | | | | | | | Trivial change. Removing unnecessary semi-colons from the code. I don't have push access so someone reviewing this can push it. Signed-off-by: Jakob Sinclair <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* nir: Add missing break into switch in construct_value()Juha-Pekka Heikkila2016-04-261-0/+1
| | | | | | | | There seemed to be missing one break in nested switchcases. Signed-off-by: Juha-Pekka Heikkila <[email protected]> Reviewed-by: Antia Puentes <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glsl: add ability to use essl 3.20Ilia Mirkin2016-04-252-0/+9
| | | | | Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Dave Airlie <[email protected]>
* spirv: fix warning in release buildGrazvydas Ignotas2016-04-251-1/+1
| | | | | | | | Mark variable MAYBE_UNUSED to avoid unused-but-set-variable warning in release build. Signed-off-by: Grazvydas Ignotas <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glsl: fix warning in release buildGrazvydas Ignotas2016-04-251-1/+1
| | | | | | | | | Mark variable MAYBE_UNUSED to avoid unused-but-set-variable warning in release build. Signed-off-by: Grazvydas Ignotas <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* glsl: fix cross validation for explicit locations on structs and arraysTimothy Arceri2016-04-221-13/+30
| | | | | | Reviewed-by: Anuj Phogat <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>