pgcc ICE when using _mm_shufflelo_epi16

This works in pgcc18 and pgc++, but pgcc 19.10 CE generates an ICE.

#include <emmintrin.h>

__m128i e(void);

__m128i f() {
  return _mm_shufflelo_epi16(e(), 0);

$ /opt/pgi/linux86-64/2019/bin/pgcc -c -o /dev/null unknown-opcode-ice.c
PGC-F-0000-Internal compiler error. gen_llvm_expr(): unknown opcode     493  (unknown-opcode-ice.c: 7)
PGC/x86-64 Linux 19.10-0: compilation aborted

Unfortunately (in this case) the compiler seems to be smart enough to translate everything I’ve come up with to work around this as _mm_shufflelo_epi16 in disguise and it results in the same error.

Hi nemequ,

In 20.1 pgcc18 was made the default compiler and no further development work will be made on the older pgcc (aka pgcc11). I can report the ICE, but it wouldn’t be fixed. Better to focus on getting pgcc18 working.

FYI, I just checked the status of TPR #28482 and it looks like one of our engineers just checked in a fix into our development compiler about 30 minutes ago. Of course the fix needs to go through the usual QA before it can added to a release and I don’t know when the fix would be available publicly, but it is promising.


Oh, in that case I’ll stop reporting issues with pgcc11. I’ve had to disable by PGI build in CI for now, so I probably wouldn’t have found anything more anyways.

That’s excellent news about TPR #28482, thanks! Hopefully I bring back support for PGI when the next CE is released.