nir: don't emit ishl in _nir_mul_imm() if backend doesn't support bitops
authorVasily Khoruzhick <anarsoul@gmail.com>
Thu, 23 Jan 2020 04:29:50 +0000 (20:29 -0800)
committerMarge Bot <eric+marge@anholt.net>
Thu, 23 Jan 2020 21:16:22 +0000 (21:16 +0000)
Otherwise we'll have to lower it later.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3529>

src/compiler/nir/nir_builder.h

index 8b5923211db294246b1d1193363abb1176fecae9..fb90fc2cdca518002908bc0519105b8cef46609f 100644 (file)
@@ -656,7 +656,8 @@ _nir_mul_imm(nir_builder *build, nir_ssa_def *x, uint64_t y, bool amul)
       return nir_imm_intN_t(build, 0, x->bit_size);
    } else if (y == 1) {
       return x;
-   } else if (util_is_power_of_two_or_zero64(y)) {
+   } else if (!build->shader->options->lower_bitops &&
+              util_is_power_of_two_or_zero64(y)) {
       return nir_ishl(build, x, nir_imm_int(build, ffsll(y) - 1));
    } else if (amul) {
       return nir_amul(build, x, nir_imm_intN_t(build, y, x->bit_size));