|
5 | 5 | ; CHECK-GI: warning: Instruction selection used fallback path for dup_v2i8
|
6 | 6 | ; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v2i8
|
7 | 7 | ; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v2i8
|
8 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v2i128 |
9 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v2i128 |
10 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v2i128 |
11 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v3i128 |
12 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v3i128 |
13 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v3i128 |
14 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v4i128 |
15 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v4i128 |
16 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v4i128 |
17 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v2fp128 |
18 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v2fp128 |
19 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v2fp128 |
20 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v3fp128 |
21 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v3fp128 |
22 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v3fp128 |
23 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for dup_v4fp128 |
24 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for duplane0_v4fp128 |
25 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for loaddup_v4fp128 |
26 | 8 |
|
27 | 9 | define <2 x i8> @dup_v2i8(i8 %a) {
|
28 | 10 | ; CHECK-LABEL: dup_v2i8:
|
@@ -795,12 +777,22 @@ entry:
|
795 | 777 | }
|
796 | 778 |
|
797 | 779 | define <2 x i128> @loaddup_v2i128(ptr %p) {
|
798 |
| -; CHECK-LABEL: loaddup_v2i128: |
799 |
| -; CHECK: // %bb.0: // %entry |
800 |
| -; CHECK-NEXT: ldp x2, x1, [x0] |
801 |
| -; CHECK-NEXT: mov x0, x2 |
802 |
| -; CHECK-NEXT: mov x3, x1 |
803 |
| -; CHECK-NEXT: ret |
| 780 | +; CHECK-SD-LABEL: loaddup_v2i128: |
| 781 | +; CHECK-SD: // %bb.0: // %entry |
| 782 | +; CHECK-SD-NEXT: ldp x2, x1, [x0] |
| 783 | +; CHECK-SD-NEXT: mov x0, x2 |
| 784 | +; CHECK-SD-NEXT: mov x3, x1 |
| 785 | +; CHECK-SD-NEXT: ret |
| 786 | +; |
| 787 | +; CHECK-GI-LABEL: loaddup_v2i128: |
| 788 | +; CHECK-GI: // %bb.0: // %entry |
| 789 | +; CHECK-GI-NEXT: ldr q0, [x0] |
| 790 | +; CHECK-GI-NEXT: mov d1, v0.d[1] |
| 791 | +; CHECK-GI-NEXT: fmov x0, d0 |
| 792 | +; CHECK-GI-NEXT: fmov x2, d0 |
| 793 | +; CHECK-GI-NEXT: fmov x1, d1 |
| 794 | +; CHECK-GI-NEXT: fmov x3, d1 |
| 795 | +; CHECK-GI-NEXT: ret |
804 | 796 | entry:
|
805 | 797 | %a = load i128, ptr %p
|
806 | 798 | %b = insertelement <2 x i128> poison, i128 %a, i64 0
|
@@ -836,14 +828,26 @@ entry:
|
836 | 828 | }
|
837 | 829 |
|
838 | 830 | define <3 x i128> @loaddup_v3i128(ptr %p) {
|
839 |
| -; CHECK-LABEL: loaddup_v3i128: |
840 |
| -; CHECK: // %bb.0: // %entry |
841 |
| -; CHECK-NEXT: ldp x2, x1, [x0] |
842 |
| -; CHECK-NEXT: mov x0, x2 |
843 |
| -; CHECK-NEXT: mov x3, x1 |
844 |
| -; CHECK-NEXT: mov x4, x2 |
845 |
| -; CHECK-NEXT: mov x5, x1 |
846 |
| -; CHECK-NEXT: ret |
| 831 | +; CHECK-SD-LABEL: loaddup_v3i128: |
| 832 | +; CHECK-SD: // %bb.0: // %entry |
| 833 | +; CHECK-SD-NEXT: ldp x2, x1, [x0] |
| 834 | +; CHECK-SD-NEXT: mov x0, x2 |
| 835 | +; CHECK-SD-NEXT: mov x3, x1 |
| 836 | +; CHECK-SD-NEXT: mov x4, x2 |
| 837 | +; CHECK-SD-NEXT: mov x5, x1 |
| 838 | +; CHECK-SD-NEXT: ret |
| 839 | +; |
| 840 | +; CHECK-GI-LABEL: loaddup_v3i128: |
| 841 | +; CHECK-GI: // %bb.0: // %entry |
| 842 | +; CHECK-GI-NEXT: ldr q0, [x0] |
| 843 | +; CHECK-GI-NEXT: mov d1, v0.d[1] |
| 844 | +; CHECK-GI-NEXT: fmov x0, d0 |
| 845 | +; CHECK-GI-NEXT: fmov x2, d0 |
| 846 | +; CHECK-GI-NEXT: fmov x4, d0 |
| 847 | +; CHECK-GI-NEXT: fmov x1, d1 |
| 848 | +; CHECK-GI-NEXT: fmov x3, d1 |
| 849 | +; CHECK-GI-NEXT: fmov x5, d1 |
| 850 | +; CHECK-GI-NEXT: ret |
847 | 851 | entry:
|
848 | 852 | %a = load i128, ptr %p
|
849 | 853 | %b = insertelement <3 x i128> poison, i128 %a, i64 0
|
@@ -883,16 +887,30 @@ entry:
|
883 | 887 | }
|
884 | 888 |
|
885 | 889 | define <4 x i128> @loaddup_v4i128(ptr %p) {
|
886 |
| -; CHECK-LABEL: loaddup_v4i128: |
887 |
| -; CHECK: // %bb.0: // %entry |
888 |
| -; CHECK-NEXT: ldp x2, x1, [x0] |
889 |
| -; CHECK-NEXT: mov x0, x2 |
890 |
| -; CHECK-NEXT: mov x3, x1 |
891 |
| -; CHECK-NEXT: mov x4, x2 |
892 |
| -; CHECK-NEXT: mov x5, x1 |
893 |
| -; CHECK-NEXT: mov x6, x2 |
894 |
| -; CHECK-NEXT: mov x7, x1 |
895 |
| -; CHECK-NEXT: ret |
| 890 | +; CHECK-SD-LABEL: loaddup_v4i128: |
| 891 | +; CHECK-SD: // %bb.0: // %entry |
| 892 | +; CHECK-SD-NEXT: ldp x2, x1, [x0] |
| 893 | +; CHECK-SD-NEXT: mov x0, x2 |
| 894 | +; CHECK-SD-NEXT: mov x3, x1 |
| 895 | +; CHECK-SD-NEXT: mov x4, x2 |
| 896 | +; CHECK-SD-NEXT: mov x5, x1 |
| 897 | +; CHECK-SD-NEXT: mov x6, x2 |
| 898 | +; CHECK-SD-NEXT: mov x7, x1 |
| 899 | +; CHECK-SD-NEXT: ret |
| 900 | +; |
| 901 | +; CHECK-GI-LABEL: loaddup_v4i128: |
| 902 | +; CHECK-GI: // %bb.0: // %entry |
| 903 | +; CHECK-GI-NEXT: ldr q0, [x0] |
| 904 | +; CHECK-GI-NEXT: mov d1, v0.d[1] |
| 905 | +; CHECK-GI-NEXT: fmov x0, d0 |
| 906 | +; CHECK-GI-NEXT: fmov x2, d0 |
| 907 | +; CHECK-GI-NEXT: fmov x4, d0 |
| 908 | +; CHECK-GI-NEXT: fmov x6, d0 |
| 909 | +; CHECK-GI-NEXT: fmov x1, d1 |
| 910 | +; CHECK-GI-NEXT: fmov x3, d1 |
| 911 | +; CHECK-GI-NEXT: fmov x5, d1 |
| 912 | +; CHECK-GI-NEXT: fmov x7, d1 |
| 913 | +; CHECK-GI-NEXT: ret |
896 | 914 | entry:
|
897 | 915 | %a = load i128, ptr %p
|
898 | 916 | %b = insertelement <4 x i128> poison, i128 %a, i64 0
|
|
0 commit comments