[Bug target/52607] v4df __builtin_shuffle with {0,2,1,3} or {1,3,0,2}

marc.glisse at normalesup dot org gcc-bugzilla@gcc.gnu.org
Tue Mar 27 21:21:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52607

--- Comment #22 from Marc Glisse <marc.glisse at normalesup dot org> 2012-03-27 20:57:16 UTC ---
(In reply to comment #20)
> Lastly for each routine it is desirable to think whether it might be useful for
> other vector modes (likely 32-byte only) for TARGET_AVX2.

I am not very familiar with the integer versions, so I tried:
#include <x86intrin.h>
__v32qi f(__v32qi x){
  __v32qi
m={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
  return __builtin_shuffle(x,m);
}

$ gcc r.c -S -O1 -mavx && cat r.s
r.c: In function 'f':
r.c:2:9: error: invalid position or size operand to BIT_FIELD_REF
BIT_FIELD_REF <x_2(D), 8, -128>
r.c:2:9: note: in statement
D.5992_24 = BIT_FIELD_REF <x_2(D), 8, -128>;

r.c:2:9: error: invalid position or size operand to BIT_FIELD_REF
BIT_FIELD_REF <x_2(D), 8, -120>
r.c:2:9: note: in statement
D.5993_25 = BIT_FIELD_REF <x_2(D), 8, -120>;

[...]

r.c:2:9: internal compiler error: verify_gimple failed

(with -mavx2 it works fine)



More information about the Gcc-bugs mailing list