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


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to