diff options
author | Jason Ekstrand <[email protected]> | 2015-04-01 16:16:52 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-04-02 10:21:18 -0700 |
commit | 0573d0e4845803969634c975355bbf55651dde19 (patch) | |
tree | 3e15d5f034aa93831d188d35423d63c6b4c23a50 | |
parent | 4a3c0e995063320693782b934962969e11dab29d (diff) |
nir/print: Correctly print swizzles for explicitly sized alu sources
Reviewed-by: Connor Abbott <[email protected]>
-rw-r--r-- | src/glsl/nir/nir_print.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/glsl/nir/nir_print.c b/src/glsl/nir/nir_print.c index 53fada8eb95..fb8c9344c77 100644 --- a/src/glsl/nir/nir_print.c +++ b/src/glsl/nir/nir_print.c @@ -137,21 +137,21 @@ print_dest(nir_dest *dest, FILE *fp) } static void -print_alu_src(nir_alu_src *src, uint8_t read_mask, FILE *fp) +print_alu_src(nir_alu_instr *instr, unsigned src, FILE *fp) { - if (src->negate) + if (instr->src[src].negate) fprintf(fp, "-"); - if (src->abs) + if (instr->src[src].abs) fprintf(fp, "abs("); - print_src(&src->src, fp); + print_src(&instr->src[src].src, fp); bool print_swizzle = false; for (unsigned i = 0; i < 4; i++) { - if (read_mask >> i == 0) - break; + if (!nir_alu_instr_channel_used(instr, src, i)) + continue; - if (src->swizzle[i] != i) { + if (instr->src[src].swizzle[i] != i) { print_swizzle = true; break; } @@ -160,14 +160,14 @@ print_alu_src(nir_alu_src *src, uint8_t read_mask, FILE *fp) if (print_swizzle) { fprintf(fp, "."); for (unsigned i = 0; i < 4; i++) { - if (read_mask >> i == 0) - break; + if (!nir_alu_instr_channel_used(instr, src, i)) + continue; - fprintf(fp, "%c", "xyzw"[src->swizzle[i]]); + fprintf(fp, "%c", "xyzw"[instr->src[src].swizzle[i]]); } } - if (src->abs) + if (instr->src[src].abs) fprintf(fp, ")"); } @@ -201,7 +201,7 @@ print_alu_instr(nir_alu_instr *instr, FILE *fp) if (i != 0) fprintf(fp, ", "); - print_alu_src(&instr->src[i], instr->dest.write_mask, fp); + print_alu_src(instr, i, fp); } } |