|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 | 2 | ; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck -check-prefixes=CHECK,CHECK-SD %s |
3 | | -; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI |
4 | | - |
5 | | -; CHECK-GI: warning: Instruction selection used fallback path for uabd_i64 |
| 3 | +; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple -global-isel | FileCheck %s --check-prefixes=CHECK,CHECK-GI |
6 | 4 |
|
7 | 5 | define <8 x i16> @sabdl8h(ptr %A, ptr %B) nounwind { |
8 | 6 | ; CHECK-LABEL: sabdl8h: |
@@ -1803,17 +1801,51 @@ define <2 x i64> @uabd_i32(<2 x i32> %a, <2 x i32> %b) { |
1803 | 1801 | } |
1804 | 1802 |
|
1805 | 1803 | define <2 x i128> @uabd_i64(<2 x i64> %a, <2 x i64> %b) { |
1806 | | -; CHECK-LABEL: uabd_i64: |
1807 | | -; CHECK: // %bb.0: |
1808 | | -; CHECK-NEXT: cmgt.2d v2, v0, v1 |
1809 | | -; CHECK-NEXT: sub.2d v0, v0, v1 |
1810 | | -; CHECK-NEXT: mov x1, xzr |
1811 | | -; CHECK-NEXT: mov x3, xzr |
1812 | | -; CHECK-NEXT: eor.16b v0, v0, v2 |
1813 | | -; CHECK-NEXT: sub.2d v0, v2, v0 |
1814 | | -; CHECK-NEXT: mov.d x2, v0[1] |
1815 | | -; CHECK-NEXT: fmov x0, d0 |
1816 | | -; CHECK-NEXT: ret |
| 1804 | +; CHECK-SD-LABEL: uabd_i64: |
| 1805 | +; CHECK-SD: // %bb.0: |
| 1806 | +; CHECK-SD-NEXT: cmgt.2d v2, v0, v1 |
| 1807 | +; CHECK-SD-NEXT: sub.2d v0, v0, v1 |
| 1808 | +; CHECK-SD-NEXT: mov x1, xzr |
| 1809 | +; CHECK-SD-NEXT: mov x3, xzr |
| 1810 | +; CHECK-SD-NEXT: eor.16b v0, v0, v2 |
| 1811 | +; CHECK-SD-NEXT: sub.2d v0, v2, v0 |
| 1812 | +; CHECK-SD-NEXT: mov.d x2, v0[1] |
| 1813 | +; CHECK-SD-NEXT: fmov x0, d0 |
| 1814 | +; CHECK-SD-NEXT: ret |
| 1815 | +; |
| 1816 | +; CHECK-GI-LABEL: uabd_i64: |
| 1817 | +; CHECK-GI: // %bb.0: |
| 1818 | +; CHECK-GI-NEXT: mov d2, v0[1] |
| 1819 | +; CHECK-GI-NEXT: mov d3, v1[1] |
| 1820 | +; CHECK-GI-NEXT: fmov x8, d0 |
| 1821 | +; CHECK-GI-NEXT: fmov x10, d1 |
| 1822 | +; CHECK-GI-NEXT: asr x9, x8, #63 |
| 1823 | +; CHECK-GI-NEXT: fmov x11, d2 |
| 1824 | +; CHECK-GI-NEXT: fmov x13, d3 |
| 1825 | +; CHECK-GI-NEXT: asr x12, x10, #63 |
| 1826 | +; CHECK-GI-NEXT: subs x8, x8, x10 |
| 1827 | +; CHECK-GI-NEXT: sbc x9, x9, x12 |
| 1828 | +; CHECK-GI-NEXT: asr x14, x11, #63 |
| 1829 | +; CHECK-GI-NEXT: asr x15, x13, #63 |
| 1830 | +; CHECK-GI-NEXT: subs x10, x11, x13 |
| 1831 | +; CHECK-GI-NEXT: sbc x11, x14, x15 |
| 1832 | +; CHECK-GI-NEXT: cmp x9, #0 |
| 1833 | +; CHECK-GI-NEXT: cset w12, lt |
| 1834 | +; CHECK-GI-NEXT: csel w12, wzr, w12, eq |
| 1835 | +; CHECK-GI-NEXT: cmp x11, #0 |
| 1836 | +; CHECK-GI-NEXT: cset w13, lt |
| 1837 | +; CHECK-GI-NEXT: csel w13, wzr, w13, eq |
| 1838 | +; CHECK-GI-NEXT: negs x14, x8 |
| 1839 | +; CHECK-GI-NEXT: ngc x15, x9 |
| 1840 | +; CHECK-GI-NEXT: negs x16, x10 |
| 1841 | +; CHECK-GI-NEXT: ngc x17, x11 |
| 1842 | +; CHECK-GI-NEXT: tst w12, #0x1 |
| 1843 | +; CHECK-GI-NEXT: csel x0, x14, x8, ne |
| 1844 | +; CHECK-GI-NEXT: csel x1, x15, x9, ne |
| 1845 | +; CHECK-GI-NEXT: tst w13, #0x1 |
| 1846 | +; CHECK-GI-NEXT: csel x2, x16, x10, ne |
| 1847 | +; CHECK-GI-NEXT: csel x3, x17, x11, ne |
| 1848 | +; CHECK-GI-NEXT: ret |
1817 | 1849 | %aext = sext <2 x i64> %a to <2 x i128> |
1818 | 1850 | %bext = sext <2 x i64> %b to <2 x i128> |
1819 | 1851 | %abdiff = sub nsw <2 x i128> %aext, %bext |
|
0 commit comments