Commit e9587a3
[LLVM16][StatelessToStateful] DeterminePointerAlignment algorithm fix v4
The DeterminePointerAlignment algorithm is analyzing alignment of load/store instructions.
Before this fix, it was walking over all stores/loads and picking the highest alignment.
The problem with this approach was that some loads/stores were used basing on control flow,
which in practice meant that some loads/stores were never used. And we accidentally could use their alignment, which caused mismatch.
Such case occured here, in the "__devicelib_memcpy", which utilized various memcpy strategies basing on sizes
https://github.com/intel/llvm/blob/ee397f94cfc0034a24cb06221f90863a0203326f/libdevice/fallback-cstring.cpp#L47
```
22: ; preds = %19
%23 = getelementptr inbounds i8, ptr addrspace(4) %1, i64 %20
%24 = load i8, ptr addrspace(4) %23, align 1 here
%25 = getelementptr inbounds i8, ptr addrspace(4) %0, i64 %20
store i8 %24, ptr addrspace(4) %25, align 1 here
%26 = add nuw i64 %20, 1, !spirv.Decorations !15
br label %19
27: ; preds = %13
%28 = icmp eq i64 %16, 0
br i1 %28, label %29, label %58
29: ; preds = %27
%30 = and i64 %2, 3
%31 = lshr i64 %2, 2
br label %32
32: ; preds = %35, %29
%33 = phi i64 [ 0, %29 ], [ %41, %35 ]
%34 = icmp ult i64 %33, %31
br i1 %34, label %35, label %42
35: ; preds = %32
%36 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)
%37 = getelementptr inbounds i32, ptr addrspace(4) %36, i64 %33
%38 = load i32, ptr addrspace(4) %37, align 4 here
%39 = bitcast ptr addrspace(4) %0 to ptr addrspace(4)
%40 = getelementptr inbounds i32, ptr addrspace(4) %39, i64 %33
store i32 %38, ptr addrspace(4) %40, align 4 here
%41 = add nuw nsw i64 %33, 1, !spirv.Decorations !17
br label %32
```1 parent f3d9419 commit e9587a3
File tree
13 files changed
+335
-32
lines changed- IGC
- Compiler
- Optimizer/OpenCLPasses/StatelessToStateful
- tests/StatelessToStateful
- Bindful
- Bindless
- ocloc_tests/optimizations/StatelessToStateful
13 files changed
+335
-32
lines changedLines changed: 53 additions & 22 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
520 | 521 | | |
521 | 522 | | |
522 | 523 | | |
523 | | - | |
524 | | - | |
525 | | - | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
526 | 527 | | |
527 | 528 | | |
528 | 529 | | |
529 | 530 | | |
530 | | - | |
| 531 | + | |
531 | 532 | | |
532 | 533 | | |
533 | | - | |
| 534 | + | |
534 | 535 | | |
535 | 536 | | |
536 | 537 | | |
537 | 538 | | |
538 | | - | |
539 | | - | |
| 539 | + | |
| 540 | + | |
540 | 541 | | |
541 | 542 | | |
542 | 543 | | |
| |||
545 | 546 | | |
546 | 547 | | |
547 | 548 | | |
548 | | - | |
| 549 | + | |
549 | 550 | | |
550 | 551 | | |
551 | 552 | | |
| |||
554 | 555 | | |
555 | 556 | | |
556 | 557 | | |
557 | | - | |
| 558 | + | |
558 | 559 | | |
559 | 560 | | |
560 | | - | |
| 561 | + | |
561 | 562 | | |
562 | 563 | | |
563 | 564 | | |
| |||
566 | 567 | | |
567 | 568 | | |
568 | 569 | | |
569 | | - | |
| 570 | + | |
570 | 571 | | |
571 | | - | |
| 572 | + | |
572 | 573 | | |
573 | 574 | | |
574 | 575 | | |
575 | 576 | | |
576 | | - | |
577 | | - | |
| 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 | + | |
578 | 607 | | |
579 | 608 | | |
580 | 609 | | |
| |||
626 | 655 | | |
627 | 656 | | |
628 | 657 | | |
629 | | - | |
630 | | - | |
631 | | - | |
| 658 | + | |
| 659 | + | |
632 | 660 | | |
633 | 661 | | |
634 | 662 | | |
| |||
657 | 685 | | |
658 | 686 | | |
659 | 687 | | |
| 688 | + | |
660 | 689 | | |
661 | 690 | | |
662 | 691 | | |
| |||
922 | 951 | | |
923 | 952 | | |
924 | 953 | | |
925 | | - | |
| 954 | + | |
| 955 | + | |
926 | 956 | | |
927 | 957 | | |
928 | 958 | | |
929 | | - | |
930 | | - | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
931 | 962 | | |
932 | 963 | | |
933 | 964 | | |
| |||
1026 | 1057 | | |
1027 | 1058 | | |
1028 | 1059 | | |
1029 | | - | |
| 1060 | + | |
1030 | 1061 | | |
1031 | 1062 | | |
1032 | 1063 | | |
| |||
1038 | 1069 | | |
1039 | 1070 | | |
1040 | 1071 | | |
1041 | | - | |
| 1072 | + | |
1042 | 1073 | | |
1043 | 1074 | | |
1044 | 1075 | | |
| |||
Lines changed: 4 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
106 | 107 | | |
107 | 108 | | |
108 | 109 | | |
109 | | - | |
| 110 | + | |
| 111 | + | |
110 | 112 | | |
111 | 113 | | |
112 | 114 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
0 commit comments