Commit 858fc93
[SPIRV] Add support for pointers to functions with aggregate args/returns as global variables / constant initialisers (llvm#169595)
This patch does two things:
1. it extends the aggregate arg / ret replacement transform to work on
indirect calls / pointers to function. It is somewhat spread out as
retrieving the original function type is needed in a few places. In
general, we should rethink / rework the entire infrastructure around
aggregate arg/ret handling, using an opaque target specific type rather
than i32;
2. it enables global variables of pointer to function type, and, more
specifically, global variables of a aggregate type (arrays / structures)
with pointer to function elements.
This also exposes some issues in how we handle pointers to function and
lowering indirect function calls, primarily around not using the program
address space. These will be handled in a subsequent patch as they'll
require somewhat more intrusive surgery, possibly involving modifying
the data layout.1 parent 9313a06 commit 858fc93
File tree
8 files changed
+333
-79
lines changed- llvm
- lib/Target/SPIRV
- test/CodeGen/SPIRV/pointers
8 files changed
+333
-79
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | 134 | | |
176 | 135 | | |
177 | 136 | | |
| |||
204 | 163 | | |
205 | 164 | | |
206 | 165 | | |
207 | | - | |
| 166 | + | |
| 167 | + | |
208 | 168 | | |
209 | 169 | | |
210 | 170 | | |
| |||
429 | 389 | | |
430 | 390 | | |
431 | 391 | | |
432 | | - | |
| 392 | + | |
433 | 393 | | |
434 | 394 | | |
435 | 395 | | |
| |||
514 | 474 | | |
515 | 475 | | |
516 | 476 | | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
517 | 481 | | |
518 | 482 | | |
519 | 483 | | |
520 | 484 | | |
| 485 | + | |
521 | 486 | | |
522 | 487 | | |
523 | 488 | | |
| |||
535 | 500 | | |
536 | 501 | | |
537 | 502 | | |
538 | | - | |
539 | | - | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
540 | 508 | | |
541 | 509 | | |
542 | 510 | | |
| |||
564 | 532 | | |
565 | 533 | | |
566 | 534 | | |
567 | | - | |
568 | | - | |
569 | | - | |
570 | | - | |
571 | | - | |
572 | | - | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
573 | 541 | | |
574 | 542 | | |
575 | 543 | | |
| |||
691 | 659 | | |
692 | 660 | | |
693 | 661 | | |
694 | | - | |
695 | | - | |
696 | | - | |
697 | | - | |
698 | | - | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
699 | 671 | | |
700 | 672 | | |
701 | 673 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
363 | 374 | | |
364 | 375 | | |
365 | 376 | | |
| |||
759 | 770 | | |
760 | 771 | | |
761 | 772 | | |
762 | | - | |
763 | | - | |
764 | | - | |
765 | | - | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
766 | 782 | | |
767 | 783 | | |
768 | 784 | | |
| |||
1063 | 1079 | | |
1064 | 1080 | | |
1065 | 1081 | | |
1066 | | - | |
| 1082 | + | |
1067 | 1083 | | |
1068 | 1084 | | |
1069 | | - | |
| 1085 | + | |
1070 | 1086 | | |
1071 | 1087 | | |
1072 | 1088 | | |
| |||
1077 | 1093 | | |
1078 | 1094 | | |
1079 | 1095 | | |
| 1096 | + | |
| 1097 | + | |
1080 | 1098 | | |
1081 | 1099 | | |
1082 | 1100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| 217 | + | |
| 218 | + | |
217 | 219 | | |
218 | 220 | | |
219 | 221 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | | - | |
261 | | - | |
262 | | - | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
263 | 266 | | |
264 | 267 | | |
265 | 268 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| 46 | + | |
44 | 47 | | |
45 | 48 | | |
46 | 49 | | |
| |||
469 | 472 | | |
470 | 473 | | |
471 | 474 | | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
472 | 492 | | |
473 | 493 | | |
474 | 494 | | |
| |||
503 | 523 | | |
504 | 524 | | |
505 | 525 | | |
506 | | - | |
| 526 | + | |
| 527 | + | |
507 | 528 | | |
508 | 529 | | |
509 | 530 | | |
| |||
518 | 539 | | |
519 | 540 | | |
520 | 541 | | |
521 | | - | |
522 | | - | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
527 | | - | |
528 | | - | |
529 | | - | |
530 | | - | |
531 | | - | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
532 | 545 | | |
533 | 546 | | |
534 | | - | |
| 547 | + | |
| 548 | + | |
535 | 549 | | |
536 | | - | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
537 | 554 | | |
538 | 555 | | |
539 | 556 | | |
| |||
543 | 560 | | |
544 | 561 | | |
545 | 562 | | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
546 | 629 | | |
547 | 630 | | |
548 | 631 | | |
549 | 632 | | |
550 | 633 | | |
| 634 | + | |
551 | 635 | | |
552 | 636 | | |
553 | 637 | | |
| |||
0 commit comments