From f133bfde06d0c6a68e2b1f4ee836d9e472585d5e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 3 Sep 2020 09:27:58 -0400 Subject: [PATCH] glsl_to_nir: fix crashes with int16 shifts Reviewed-by: Erik Faye-Lund Part-of: --- src/compiler/glsl/glsl_to_nir.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index afadfa99bb3..4722a77af47 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -2192,10 +2192,10 @@ nir_visitor::visit(ir_expression *ir) case ir_binop_logic_xor: result = nir_ixor(&b, srcs[0], srcs[1]); break; - case ir_binop_lshift: result = nir_ishl(&b, srcs[0], srcs[1]); break; + case ir_binop_lshift: result = nir_ishl(&b, srcs[0], nir_u2u32(&b, srcs[1])); break; case ir_binop_rshift: - result = (type_is_signed(out_type)) ? nir_ishr(&b, srcs[0], srcs[1]) - : nir_ushr(&b, srcs[0], srcs[1]); + result = (type_is_signed(out_type)) ? nir_ishr(&b, srcs[0], nir_u2u32(&b, srcs[1])) + : nir_ushr(&b, srcs[0], nir_u2u32(&b, srcs[1])); break; case ir_binop_imul_high: result = (out_type == GLSL_TYPE_INT) ? nir_imul_high(&b, srcs[0], srcs[1]) -- 2.30.2