On Wed, 27 Mar 2019 14:00:47 -0400, Sasha Levin wrote:
From: Jiong Wang jiong.wang@netronome.com
[ Upstream commit db0a4b3b6b83a081a9ec309cc8178e5c9b4706a5 ]
Shifts by zero do nothing, and should be treated as nops.
Even though compiler is not supposed to generate such instructions and manual written assembly is unlikely to have them, but they are legal instructions and have defined behavior.
This patch correct existing shifts code-gen to make sure they do nothing when shift amount is zero except when the instruction is ALU32 for which high bits need to be cleared.
For shift amount bigger than type size, already, NFP JIT back-end errors out for immediate shift and only low 5 bits will be taken into account for indirect shift which is the same as x86.
Reviewed-by: Jakub Kicinski jakub.kicinski@netronome.com Signed-off-by: Jiong Wang jiong.wang@netronome.com Signed-off-by: Alexei Starovoitov ast@kernel.org Signed-off-by: Sasha Levin sashal@kernel.org
Nope.