|
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