Commit 07f1c62
committed
[RISCV] Add codegen support for RV64A
In order to support codegen RV64A, this patch:
* Introduces masked atomics intrinsics for atomicrmw operations and cmpxchg
that use the i64 type. These are ultimately lowered to masked operations
using lr.w/sc.w, but we need to use these alternate intrinsics for RV64
because i32 is not legal
* Modifies RISCVExpandPseudoInsts.cpp to handle PseudoAtomicLoadNand64 and
PseudoCmpXchg64
* Modifies the AtomicExpandPass hooks in RISCVTargetLowering to sext/trunc as
needed for RV64 and to select the i64 intrinsic IDs when necessary
* Adds appropriate patterns to RISCVInstrInfoA.td
* Updates test/CodeGen/RISCV/atomic-*.ll to show RV64A support
This ends up being a fairly mechanical change, as the logic for RV32A is
effectively reused.
Differential Revision: https://reviews.llvm.org/D53233
llvm-svn: 3514221 parent b694030 commit 07f1c62
File tree
7 files changed
+4166
-48
lines changed- llvm
- include/llvm/IR
- lib/Target/RISCV
- test/CodeGen/RISCV
7 files changed
+4166
-48
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
44 | 69 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
| |||
111 | 114 | | |
112 | 115 | | |
113 | 116 | | |
| 117 | + | |
| 118 | + | |
114 | 119 | | |
115 | 120 | | |
116 | 121 | | |
| |||
152 | 157 | | |
153 | 158 | | |
154 | 159 | | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
155 | 210 | | |
156 | 211 | | |
157 | 212 | | |
158 | 213 | | |
159 | 214 | | |
160 | | - | |
161 | 215 | | |
162 | 216 | | |
163 | 217 | | |
| |||
166 | 220 | | |
167 | 221 | | |
168 | 222 | | |
169 | | - | |
| 223 | + | |
170 | 224 | | |
171 | | - | |
| 225 | + | |
172 | 226 | | |
173 | | - | |
| 227 | + | |
174 | 228 | | |
175 | 229 | | |
176 | 230 | | |
| |||
184 | 238 | | |
185 | 239 | | |
186 | 240 | | |
187 | | - | |
| 241 | + | |
188 | 242 | | |
189 | 243 | | |
190 | 244 | | |
| |||
219 | 273 | | |
220 | 274 | | |
221 | 275 | | |
222 | | - | |
| 276 | + | |
223 | 277 | | |
224 | 278 | | |
225 | 279 | | |
| |||
333 | 387 | | |
334 | 388 | | |
335 | 389 | | |
336 | | - | |
| 390 | + | |
337 | 391 | | |
338 | 392 | | |
339 | 393 | | |
| |||
451 | 505 | | |
452 | 506 | | |
453 | 507 | | |
454 | | - | |
455 | 508 | | |
456 | 509 | | |
457 | 510 | | |
| |||
483 | 536 | | |
484 | 537 | | |
485 | 538 | | |
486 | | - | |
| 539 | + | |
487 | 540 | | |
488 | | - | |
| 541 | + | |
489 | 542 | | |
490 | 543 | | |
491 | 544 | | |
492 | 545 | | |
493 | 546 | | |
494 | 547 | | |
495 | | - | |
| 548 | + | |
496 | 549 | | |
497 | | - | |
| 550 | + | |
498 | 551 | | |
499 | 552 | | |
500 | 553 | | |
| |||
507 | 560 | | |
508 | 561 | | |
509 | 562 | | |
510 | | - | |
| 563 | + | |
511 | 564 | | |
512 | 565 | | |
513 | 566 | | |
| |||
525 | 578 | | |
526 | 579 | | |
527 | 580 | | |
528 | | - | |
| 581 | + | |
529 | 582 | | |
530 | 583 | | |
531 | 584 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1728 | 1728 | | |
1729 | 1729 | | |
1730 | 1730 | | |
1731 | | - | |
1732 | | - | |
1733 | | - | |
1734 | | - | |
1735 | | - | |
1736 | | - | |
1737 | | - | |
1738 | | - | |
1739 | | - | |
1740 | | - | |
1741 | | - | |
1742 | | - | |
1743 | | - | |
1744 | | - | |
1745 | | - | |
1746 | | - | |
1747 | | - | |
1748 | | - | |
1749 | | - | |
1750 | | - | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
| 1761 | + | |
| 1762 | + | |
| 1763 | + | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
1751 | 1776 | | |
| 1777 | + | |
| 1778 | + | |
1752 | 1779 | | |
1753 | 1780 | | |
1754 | 1781 | | |
1755 | 1782 | | |
1756 | 1783 | | |
1757 | | - | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
1758 | 1787 | | |
1759 | 1788 | | |
1760 | 1789 | | |
1761 | | - | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
1762 | 1799 | | |
1763 | 1800 | | |
1764 | 1801 | | |
| |||
1770 | 1807 | | |
1771 | 1808 | | |
1772 | 1809 | | |
1773 | | - | |
1774 | | - | |
1775 | | - | |
1776 | | - | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
1777 | 1817 | | |
1778 | 1818 | | |
1779 | | - | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
1780 | 1822 | | |
1781 | 1823 | | |
1782 | 1824 | | |
| |||
1791 | 1833 | | |
1792 | 1834 | | |
1793 | 1835 | | |
1794 | | - | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
1795 | 1845 | | |
1796 | | - | |
1797 | | - | |
1798 | | - | |
1799 | | - | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
1800 | 1853 | | |
0 commit comments