Bug#783543: miscompile of _mm256_permutevar8x32_epi32

Julian Taylor jtaylor.debian at googlemail.com
Mon Apr 27 20:54:26 UTC 2015


Package: llvm-toolchain-3.6
Version: 1:3.6-2
Severity: serious

clang 3.6 in debian miscompiles _mm256_permutevar8x32_epi32
it swaps the two first arguments:


$ apt-cache policy clang-3.6
clang-3.6:
  Installed: 1:3.6-2
  Candidate: 1:3.6-2
  Version table:
 *** 1:3.6-2 0
        500 http://ftp.de.debian.org/debian/ unstable/main amd64

$ cat test.c
#include <immintrin.h>

__m256i fun (__m256i a, __m256i o) {
    return _mm256_permutevar8x32_epi32(a, o);
}


$ clang-3.6 test.c -mavx2 -c -O2
$ objdump -d test.o

test.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <fun>:
   0:	c4 e2 7d 36 c1       	vpermd %ymm1,%ymm0,%ymm0
   5:	c3                   	retq


the correct result is:
vpermd %ymm0,%ymm1,%ymm0

clang 3.5 seems to produce the right result so this is a 3.6 regression



More information about the Pkg-llvm-team mailing list