1 /* PR target/85918 */ 2 /* { dg-do compile } */ 3 /* { dg-options "-O3 -mavx512dq -mavx512vl -mprefer-vector-width=512 -fno-vect-cost-model -fdump-tree-vect-details" } */ 4 /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 24 "vect" } } */ 5 6 #define N 1024 7 8 long long ll[N] __attribute__((aligned (64))); 9 unsigned long long ull[N] __attribute__((aligned (64))); 10 float f[N] __attribute__((aligned (64))); 11 double d[N] __attribute__((aligned (64))); 12 ll2d1(void)13void ll2d1 (void) 14 { 15 int i; 16 17 for (i = 0; i < 4; i++) 18 d[i] = ll[i]; 19 } 20 ull2d1(void)21void ull2d1 (void) 22 { 23 int i; 24 25 for (i = 0; i < 4; i++) 26 d[i] = ull[i]; 27 } 28 d2ll1(void)29void d2ll1 (void) 30 { 31 int i; 32 33 for (i = 0; i < 4; i++) 34 ll[i] = d[i]; 35 } 36 d2ull1(void)37void d2ull1 (void) 38 { 39 int i; 40 41 for (i = 0; i < 4; i++) 42 ull[i] = d[i]; 43 } 44 ll2f1(void)45void ll2f1 (void) 46 { 47 int i; 48 49 for (i = 0; i < 4; i++) 50 f[i] = ll[i]; 51 } 52 ull2f1(void)53void ull2f1 (void) 54 { 55 int i; 56 57 for (i = 0; i < 4; i++) 58 f[i] = ull[i]; 59 } 60 f2ll1(void)61void f2ll1 (void) 62 { 63 int i; 64 65 for (i = 0; i < 4; i++) 66 ll[i] = f[i]; 67 } 68 f2ull1(void)69void f2ull1 (void) 70 { 71 int i; 72 73 for (i = 0; i < 4; i++) 74 ull[i] = f[i]; 75 } 76 ll2d2(void)77void ll2d2 (void) 78 { 79 int i; 80 81 for (i = 0; i < 8; i++) 82 d[i] = ll[i]; 83 } 84 ull2d2(void)85void ull2d2 (void) 86 { 87 int i; 88 89 for (i = 0; i < 8; i++) 90 d[i] = ull[i]; 91 } 92 d2ll2(void)93void d2ll2 (void) 94 { 95 int i; 96 97 for (i = 0; i < 8; i++) 98 ll[i] = d[i]; 99 } 100 d2ull2(void)101void d2ull2 (void) 102 { 103 int i; 104 105 for (i = 0; i < 8; i++) 106 ull[i] = d[i]; 107 } 108 ll2f2(void)109void ll2f2 (void) 110 { 111 int i; 112 113 for (i = 0; i < 8; i++) 114 f[i] = ll[i]; 115 } 116 ull2f2(void)117void ull2f2 (void) 118 { 119 int i; 120 121 for (i = 0; i < 8; i++) 122 f[i] = ull[i]; 123 } 124 f2ll2(void)125void f2ll2 (void) 126 { 127 int i; 128 129 for (i = 0; i < 8; i++) 130 ll[i] = f[i]; 131 } 132 f2ull2(void)133void f2ull2 (void) 134 { 135 int i; 136 137 for (i = 0; i < 8; i++) 138 ull[i] = f[i]; 139 } 140 ll2d3(void)141void ll2d3 (void) 142 { 143 int i; 144 145 for (i = 0; i < 16; i++) 146 d[i] = ll[i]; 147 } 148 ull2d3(void)149void ull2d3 (void) 150 { 151 int i; 152 153 for (i = 0; i < 16; i++) 154 d[i] = ull[i]; 155 } 156 d2ll3(void)157void d2ll3 (void) 158 { 159 int i; 160 161 for (i = 0; i < 16; i++) 162 ll[i] = d[i]; 163 } 164 d2ull3(void)165void d2ull3 (void) 166 { 167 int i; 168 169 for (i = 0; i < 16; i++) 170 ull[i] = d[i]; 171 } 172 ll2f3(void)173void ll2f3 (void) 174 { 175 int i; 176 177 for (i = 0; i < 16; i++) 178 f[i] = ll[i]; 179 } 180 ull2f3(void)181void ull2f3 (void) 182 { 183 int i; 184 185 for (i = 0; i < 16; i++) 186 f[i] = ull[i]; 187 } 188 f2ll3(void)189void f2ll3 (void) 190 { 191 int i; 192 193 for (i = 0; i < 16; i++) 194 ll[i] = f[i]; 195 } 196 f2ull3(void)197void f2ull3 (void) 198 { 199 int i; 200 201 for (i = 0; i < 16; i++) 202 ull[i] = f[i]; 203 } 204