https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109173
Bug ID: 109173
Summary: incorrect intrinsic signature for _mm_srai_epi64
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: malat at debian dot org
Target Milestone: ---
gcc-13 currently rejects the following:
% /usr/lib/gcc-snapshot/bin/gcc -c -Wsign-conversion -Werror -mavx512vl -O2
tu.c
tu.c: In function 'foo':
tu.c:7:30: error: conversion to 'int' from 'unsigned int' may change the sign
of the result [-Werror=sign-conversion]
7 | return _mm_srai_epi64(a, bar());
| ^~~~~
cc1: all warnings being treated as errors
with:
% cat tu.c
#include <immintrin.h>
extern unsigned int bar();
__m128i foo(__m128i a)
{
return _mm_srai_epi64(a, bar());
}
intel documentation declares it as unsigned int
*
https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-8/intrinsics-for-shift-operations.html
[...]
__m128i _mm_srai_epi64(__m128i a, unsigned int imm)
[...]
% /usr/lib/gcc-snapshot/bin/gcc --version
gcc (Debian 20230315-1) 13.0.1 20230315 (experimental) [master
r13-6680-ga9ae16db8cb]