Commit 6fd11ba
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 18be88e commit 6fd11ba
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 | |
|---|---|---|---|
| |||
762 | 762 | | |
763 | 763 | | |
764 | 764 | | |
765 | | - | |
| 765 | + | |
766 | 766 | | |
767 | 767 | | |
768 | 768 | | |
| |||
6176 | 6176 | | |
6177 | 6177 | | |
6178 | 6178 | | |
| 6179 | + | |
| 6180 | + | |
| 6181 | + | |
| 6182 | + | |
| 6183 | + | |
| 6184 | + | |
| 6185 | + | |
| 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 | + | |
6179 | 6230 | | |
6180 | 6231 | | |
6181 | 6232 | | |
| |||
6210 | 6261 | | |
6211 | 6262 | | |
6212 | 6263 | | |
| 6264 | + | |
| 6265 | + | |
6213 | 6266 | | |
6214 | 6267 | | |
6215 | 6268 | | |
| |||
| 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 | | |
| |||
266 | 264 | | |
267 | 265 | | |
268 | 266 | | |
269 | | - | |
270 | | - | |
| 267 | + | |
| 268 | + | |
271 | 269 | | |
272 | 270 | | |
273 | 271 | | |
| |||
289 | 287 | | |
290 | 288 | | |
291 | 289 | | |
292 | | - | |
293 | 290 | | |
294 | 291 | | |
295 | 292 | | |
| |||
304 | 301 | | |
305 | 302 | | |
306 | 303 | | |
307 | | - | |
308 | | - | |
| 304 | + | |
309 | 305 | | |
310 | 306 | | |
311 | 307 | | |
| |||
373 | 369 | | |
374 | 370 | | |
375 | 371 | | |
376 | | - | |
377 | | - | |
| 372 | + | |
| 373 | + | |
378 | 374 | | |
379 | 375 | | |
380 | 376 | | |
| |||
396 | 392 | | |
397 | 393 | | |
398 | 394 | | |
399 | | - | |
400 | 395 | | |
401 | 396 | | |
402 | 397 | | |
| |||
411 | 406 | | |
412 | 407 | | |
413 | 408 | | |
414 | | - | |
415 | | - | |
| 409 | + | |
416 | 410 | | |
417 | 411 | | |
418 | 412 | | |
| |||
480 | 474 | | |
481 | 475 | | |
482 | 476 | | |
483 | | - | |
484 | | - | |
| 477 | + | |
| 478 | + | |
485 | 479 | | |
486 | 480 | | |
487 | 481 | | |
| |||
503 | 497 | | |
504 | 498 | | |
505 | 499 | | |
506 | | - | |
507 | 500 | | |
508 | 501 | | |
509 | 502 | | |
| |||
518 | 511 | | |
519 | 512 | | |
520 | 513 | | |
521 | | - | |
522 | | - | |
| 514 | + | |
523 | 515 | | |
524 | 516 | | |
525 | 517 | | |
| |||
1724 | 1716 | | |
1725 | 1717 | | |
1726 | 1718 | | |
1727 | | - | |
1728 | | - | |
| 1719 | + | |
| 1720 | + | |
1729 | 1721 | | |
1730 | 1722 | | |
1731 | 1723 | | |
| |||
1747 | 1739 | | |
1748 | 1740 | | |
1749 | 1741 | | |
1750 | | - | |
1751 | 1742 | | |
1752 | 1743 | | |
1753 | 1744 | | |
| |||
1762 | 1753 | | |
1763 | 1754 | | |
1764 | 1755 | | |
1765 | | - | |
1766 | | - | |
| 1756 | + | |
1767 | 1757 | | |
1768 | 1758 | | |
1769 | 1759 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1050 | 1050 | | |
1051 | 1051 | | |
1052 | 1052 | | |
1053 | | - | |
1054 | | - | |
| 1053 | + | |
| 1054 | + | |
1055 | 1055 | | |
1056 | 1056 | | |
1057 | 1057 | | |
| |||
1134 | 1134 | | |
1135 | 1135 | | |
1136 | 1136 | | |
1137 | | - | |
1138 | 1137 | | |
1139 | 1138 | | |
1140 | 1139 | | |
| |||
1148 | 1147 | | |
1149 | 1148 | | |
1150 | 1149 | | |
1151 | | - | |
1152 | | - | |
| 1150 | + | |
1153 | 1151 | | |
1154 | 1152 | | |
1155 | 1153 | | |
| |||
1189 | 1187 | | |
1190 | 1188 | | |
1191 | 1189 | | |
1192 | | - | |
1193 | | - | |
| 1190 | + | |
| 1191 | + | |
1194 | 1192 | | |
1195 | 1193 | | |
1196 | 1194 | | |
| |||
1244 | 1242 | | |
1245 | 1243 | | |
1246 | 1244 | | |
1247 | | - | |
1248 | 1245 | | |
1249 | 1246 | | |
1250 | 1247 | | |
| |||
1255 | 1252 | | |
1256 | 1253 | | |
1257 | 1254 | | |
1258 | | - | |
1259 | | - | |
| 1255 | + | |
1260 | 1256 | | |
1261 | 1257 | | |
1262 | 1258 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
715 | 715 | | |
716 | 716 | | |
717 | 717 | | |
718 | | - | |
719 | | - | |
| 718 | + | |
| 719 | + | |
720 | 720 | | |
721 | 721 | | |
722 | 722 | | |
| |||
790 | 790 | | |
791 | 791 | | |
792 | 792 | | |
793 | | - | |
794 | 793 | | |
795 | 794 | | |
796 | 795 | | |
| |||
801 | 800 | | |
802 | 801 | | |
803 | 802 | | |
804 | | - | |
805 | | - | |
| 803 | + | |
806 | 804 | | |
807 | 805 | | |
808 | 806 | | |
| |||
841 | 839 | | |
842 | 840 | | |
843 | 841 | | |
844 | | - | |
845 | | - | |
| 842 | + | |
| 843 | + | |
846 | 844 | | |
847 | 845 | | |
848 | 846 | | |
| |||
896 | 894 | | |
897 | 895 | | |
898 | 896 | | |
899 | | - | |
900 | 897 | | |
901 | 898 | | |
902 | 899 | | |
| |||
907 | 904 | | |
908 | 905 | | |
909 | 906 | | |
910 | | - | |
911 | | - | |
| 907 | + | |
912 | 908 | | |
913 | 909 | | |
914 | 910 | | |
| |||
0 commit comments