On Wed, 20 Oct 2021 20:46:31 +0200 David Marchand <david.march...@redhat.com> wrote:
> On Mon, Oct 18, 2021 at 5:59 PM Stephen Hemminger > <step...@networkplumber.org> wrote: > > Konstantin Ananyev <konstantin.anan...@intel.com> wrote: > > > test_shift1_check() function fails with clang build. > > > The reason for that is that clang uses 64-bit shift instruction for > > > what expected to be 32-bit operation. > > > To be more specific, this C code: > > > r2 = (uint32_t)r2 >> r4; > > > With clang produces: > > > 41a4eb: 48 d3 ef shr %cl,%rdi > > > In that particular case it is an allowed choice, as from one side > > > left-operand value is known to fit into 32 bits, from other side > > > according to 'C' standard: > > > "...if the value of the right operand is negative or is greater than > > > or equal to the width of the promoted left operand, the behavior is > > > undefined." > > > The problem is that on x86 behavior for 64-bit and 32-bit shift > > > operation might differ. > > > The fix avoids undefined behavior by making sure > > > that right operand will not exceed width of the promoted left operand. > > > > > > Bugzilla ID: 811 > > > Fixes: 9f8f9d91a701 ("test/bpf: introduce functional test") > > > Cc: sta...@dpdk.org > > > > > > Reported-by: Stephen Hemminger <step...@networkplumber.org> > > > Signed-off-by: Konstantin Ananyev <konstantin.anan...@intel.com> > > Acked-by: Stephen Hemminger <step...@networkplumber.org> > > Applied, thanks. > > Probably worth adding bpf_autotest in the fast-tests list. > There are other missing tests in this list, for my todolist unless > someone wants to look at it. That is what found this... https://patchwork.dpdk.org/project/dpdk/patch/20211015201129.63220-11-step...@networkplumber.org/