From 27ec38d746824046f780efa934d4f25c1c8b32a8 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 5 Aug 2020 21:03:31 +0100 Subject: [PATCH] nir: fix potential left shift of a negative value Fixes UBSan error: src/compiler/nir/nir_constant_expressions.c:36573:32: runtime error: left shift of negative value -1 Signed-off-by: Rhys Perry Reviewed-by: Eric Anholt Part-of: --- src/compiler/nir/nir_opcodes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index bd8e0cd09c2..e5655241415 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -785,7 +785,7 @@ binop("sne", tfloat32, _2src_commutative, "(src0 != src1) ? 1.0f : 0.0f") # Set # but SM5 shifts are defined to use the least significant bits, only # The NIR definition is according to the SM5 specification. opcode("ishl", 0, tint, [0, 0], [tint, tuint32], False, "", - "src0 << (src1 & (sizeof(src0) * 8 - 1))") + "(uint64_t)src0 << (src1 & (sizeof(src0) * 8 - 1))") opcode("ishr", 0, tint, [0, 0], [tint, tuint32], False, "", "src0 >> (src1 & (sizeof(src0) * 8 - 1))") opcode("ushr", 0, tuint, [0, 0], [tuint, tuint32], False, "", -- 2.30.2