Commit 5ff5a25
committed
[NVPTX] Optimize v2x16 BUILD_VECTORs to PRMT
When two 16-bit values are combined into a v2x16 vector, and those
values are truncated come from 32-bit values, a PRMT instruction can
save registers by selecting bytes directly from the original 32-bit
values. We do this during a post-legalize DAG combine, as these
opportunities are typically only exposed after the BUILD_VECTOR's
operands have been legalized.
Additionally, if the 32-bit values are right-shifted, we can fold in the
shift by selecting higher bytes with PRMT. Only logical right-shifts by
16 are supported (for now) since those are the only situations seen in
practice. Right shifts by 16 often come up during the legalization of
EXTRACT_VECTOR_ELT.1 parent 673c324 commit 5ff5a25
File tree
6 files changed
+95
-71
lines changed- llvm
- lib/Target/NVPTX
- test/CodeGen/NVPTX
6 files changed
+95
-71
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
767 | 767 | | |
768 | 768 | | |
769 | 769 | | |
770 | | - | |
| 770 | + | |
771 | 771 | | |
772 | 772 | | |
773 | 773 | | |
| |||
6184 | 6184 | | |
6185 | 6185 | | |
6186 | 6186 | | |
| 6187 | + | |
| 6188 | + | |
| 6189 | + | |
| 6190 | + | |
| 6191 | + | |
| 6192 | + | |
| 6193 | + | |
| 6194 | + | |
| 6195 | + | |
| 6196 | + | |
| 6197 | + | |
| 6198 | + | |
| 6199 | + | |
| 6200 | + | |
| 6201 | + | |
| 6202 | + | |
| 6203 | + | |
| 6204 | + | |
| 6205 | + | |
| 6206 | + | |
| 6207 | + | |
| 6208 | + | |
| 6209 | + | |
| 6210 | + | |
| 6211 | + | |
| 6212 | + | |
| 6213 | + | |
| 6214 | + | |
| 6215 | + | |
| 6216 | + | |
| 6217 | + | |
| 6218 | + | |
| 6219 | + | |
| 6220 | + | |
| 6221 | + | |
| 6222 | + | |
| 6223 | + | |
| 6224 | + | |
| 6225 | + | |
| 6226 | + | |
| 6227 | + | |
| 6228 | + | |
| 6229 | + | |
| 6230 | + | |
| 6231 | + | |
| 6232 | + | |
| 6233 | + | |
| 6234 | + | |
| 6235 | + | |
| 6236 | + | |
| 6237 | + | |
6187 | 6238 | | |
6188 | 6239 | | |
6189 | 6240 | | |
| |||
6218 | 6269 | | |
6219 | 6270 | | |
6220 | 6271 | | |
| 6272 | + | |
| 6273 | + | |
6221 | 6274 | | |
6222 | 6275 | | |
6223 | 6276 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
162 | | - | |
163 | | - | |
| 162 | + | |
| 163 | + | |
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
| |||
182 | 182 | | |
183 | 183 | | |
184 | 184 | | |
185 | | - | |
186 | 185 | | |
187 | 186 | | |
188 | 187 | | |
| |||
197 | 196 | | |
198 | 197 | | |
199 | 198 | | |
200 | | - | |
201 | | - | |
| 199 | + | |
202 | 200 | | |
203 | 201 | | |
204 | 202 | | |
| |||
262 | 260 | | |
263 | 261 | | |
264 | 262 | | |
265 | | - | |
266 | | - | |
| 263 | + | |
| 264 | + | |
267 | 265 | | |
268 | 266 | | |
269 | 267 | | |
| |||
285 | 283 | | |
286 | 284 | | |
287 | 285 | | |
288 | | - | |
289 | 286 | | |
290 | 287 | | |
291 | 288 | | |
| |||
300 | 297 | | |
301 | 298 | | |
302 | 299 | | |
303 | | - | |
304 | | - | |
| 300 | + | |
305 | 301 | | |
306 | 302 | | |
307 | 303 | | |
| |||
365 | 361 | | |
366 | 362 | | |
367 | 363 | | |
368 | | - | |
369 | | - | |
| 364 | + | |
| 365 | + | |
370 | 366 | | |
371 | 367 | | |
372 | 368 | | |
| |||
388 | 384 | | |
389 | 385 | | |
390 | 386 | | |
391 | | - | |
392 | 387 | | |
393 | 388 | | |
394 | 389 | | |
| |||
403 | 398 | | |
404 | 399 | | |
405 | 400 | | |
406 | | - | |
407 | | - | |
| 401 | + | |
408 | 402 | | |
409 | 403 | | |
410 | 404 | | |
| |||
468 | 462 | | |
469 | 463 | | |
470 | 464 | | |
471 | | - | |
472 | | - | |
| 465 | + | |
| 466 | + | |
473 | 467 | | |
474 | 468 | | |
475 | 469 | | |
| |||
491 | 485 | | |
492 | 486 | | |
493 | 487 | | |
494 | | - | |
495 | 488 | | |
496 | 489 | | |
497 | 490 | | |
| |||
506 | 499 | | |
507 | 500 | | |
508 | 501 | | |
509 | | - | |
510 | | - | |
| 502 | + | |
511 | 503 | | |
512 | 504 | | |
513 | 505 | | |
| |||
1706 | 1698 | | |
1707 | 1699 | | |
1708 | 1700 | | |
1709 | | - | |
1710 | | - | |
| 1701 | + | |
| 1702 | + | |
1711 | 1703 | | |
1712 | 1704 | | |
1713 | 1705 | | |
| |||
1729 | 1721 | | |
1730 | 1722 | | |
1731 | 1723 | | |
1732 | | - | |
1733 | 1724 | | |
1734 | 1725 | | |
1735 | 1726 | | |
| |||
1744 | 1735 | | |
1745 | 1736 | | |
1746 | 1737 | | |
1747 | | - | |
1748 | | - | |
| 1738 | + | |
1749 | 1739 | | |
1750 | 1740 | | |
1751 | 1741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1046 | 1046 | | |
1047 | 1047 | | |
1048 | 1048 | | |
1049 | | - | |
1050 | | - | |
| 1049 | + | |
| 1050 | + | |
1051 | 1051 | | |
1052 | 1052 | | |
1053 | 1053 | | |
| |||
1130 | 1130 | | |
1131 | 1131 | | |
1132 | 1132 | | |
1133 | | - | |
1134 | 1133 | | |
1135 | 1134 | | |
1136 | 1135 | | |
| |||
1144 | 1143 | | |
1145 | 1144 | | |
1146 | 1145 | | |
1147 | | - | |
1148 | | - | |
| 1146 | + | |
1149 | 1147 | | |
1150 | 1148 | | |
1151 | 1149 | | |
| |||
1185 | 1183 | | |
1186 | 1184 | | |
1187 | 1185 | | |
1188 | | - | |
1189 | | - | |
| 1186 | + | |
| 1187 | + | |
1190 | 1188 | | |
1191 | 1189 | | |
1192 | 1190 | | |
| |||
1240 | 1238 | | |
1241 | 1239 | | |
1242 | 1240 | | |
1243 | | - | |
1244 | 1241 | | |
1245 | 1242 | | |
1246 | 1243 | | |
| |||
1251 | 1248 | | |
1252 | 1249 | | |
1253 | 1250 | | |
1254 | | - | |
1255 | | - | |
| 1251 | + | |
1256 | 1252 | | |
1257 | 1253 | | |
1258 | 1254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
711 | 711 | | |
712 | 712 | | |
713 | 713 | | |
714 | | - | |
715 | | - | |
| 714 | + | |
| 715 | + | |
716 | 716 | | |
717 | 717 | | |
718 | 718 | | |
| |||
786 | 786 | | |
787 | 787 | | |
788 | 788 | | |
789 | | - | |
790 | 789 | | |
791 | 790 | | |
792 | 791 | | |
| |||
797 | 796 | | |
798 | 797 | | |
799 | 798 | | |
800 | | - | |
801 | | - | |
| 799 | + | |
802 | 800 | | |
803 | 801 | | |
804 | 802 | | |
| |||
837 | 835 | | |
838 | 836 | | |
839 | 837 | | |
840 | | - | |
841 | | - | |
| 838 | + | |
| 839 | + | |
842 | 840 | | |
843 | 841 | | |
844 | 842 | | |
| |||
892 | 890 | | |
893 | 891 | | |
894 | 892 | | |
895 | | - | |
896 | 893 | | |
897 | 894 | | |
898 | 895 | | |
| |||
903 | 900 | | |
904 | 901 | | |
905 | 902 | | |
906 | | - | |
907 | | - | |
| 903 | + | |
908 | 904 | | |
909 | 905 | | |
910 | 906 | | |
| |||
0 commit comments