[Bug target/65832] Inefficient vector construction

2016-06-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 Richard Biener changed: What|Removed |Added CC||mirq-gccboogs at rere dot qmqm.pl ---

[Bug target/65832] Inefficient vector construction

2015-06-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #6 from Richard Biener --- Testcase simulating all qi vector cases the vectorizer may create char a[1024]; char b[1024]; void foobar (int s) { for (int i = 0; i < 16; ++i) { b[i] = a[s*i]; } } void foo (int s) { f

[Bug target/65832] Inefficient vector construction

2015-05-22 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #5 from Richard Biener --- On a related note, store_constructor handles VECTOR_TYPE constructors through the vec_init optab but that doesn't work for vector elements: /* Don't use vec_init if some elements have VECTOR_TYP

[Bug target/65832] Inefficient vector construction

2015-04-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 Richard Biener changed: What|Removed |Added CC||uros at gcc dot gnu.org --- Comment #4

[Bug target/65832] Inefficient vector construction

2015-04-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #3 from Richard Biener --- Another example where the vectorizer thinks vectorization is profitable: #define N 16 unsigned int out[N]; unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; __attribute__ ((noinline)) int main

[Bug target/65832] Inefficient vector construction

2015-04-21 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #2 from Richard Biener --- typedef unsigned char v16qi __attribute__((vector_size(16))); v16qi baz (int i0, int i1, int i2, int i3, int i10, int i11, int i12, int i13, int i20, int i21, int i22, int i23,

[Bug target/65832] Inefficient vector construction

2015-04-21 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #1 from Richard Biener --- typedef int v4si __attribute__((vector_size(16))); v4si bar (int *i, int *j, int *k, int *l) { return (v4si) { *i, *j, *k, *l }; } looks reasonable (no spills at least, stray move for the return value).