nir/constant_expressions: Rework Boolean handling
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 22 Oct 2018 20:35:06 +0000 (15:35 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Sun, 16 Dec 2018 21:03:02 +0000 (21:03 +0000)
commit2fe8708ffda532fe13aab96a19bc1fb9c3fec68f
tree8ca1919e7c9df6e43ba48f705eebb089e38df7ca
parent80e8dfe9dead5a034f8e5ae3f92cc60e99de88b6
nir/constant_expressions: Rework Boolean handling

This commit contains three related changes.  First, we define boolN_t
for N = 8, 16, and 64 and move the definition of boolN_vec to the loop
with the other vec definitions.  Second, there's no reason why we need
the != 0 on the source because that happens implicitly when it's
converted to bool.  Third, for destinations, we use a signed integer
type and just do -(int)bool_val which will give us the 0/-1 behavior we
want and neatly scales to all bit widths.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/compiler/nir/nir_constant_expressions.py