@@ -935,9 +935,8 @@ define <vscale x 2 x i64> @mls_nxv2i64_x(<vscale x 2 x i64> %x, <vscale x 2 x i6
935
935
; CHECK-LABEL: mls_nxv2i64_x:
936
936
; CHECK: // %bb.0: // %entry
937
937
; CHECK-NEXT: ptrue p0.d
938
- ; CHECK-NEXT: cmpgt p1.d, p0/z, z3.d, #0
939
- ; CHECK-NEXT: msb z1.d, p0/m, z0.d, z2.d
940
- ; CHECK-NEXT: mov z0.d, p1/m, z1.d
938
+ ; CHECK-NEXT: cmpgt p0.d, p0/z, z3.d, #0
939
+ ; CHECK-NEXT: msb z0.d, p0/m, z1.d, z2.d
941
940
; CHECK-NEXT: ret
942
941
entry:
943
942
%c = icmp sgt <vscale x 2 x i64 > %n , zeroinitializer
@@ -951,9 +950,8 @@ define <vscale x 4 x i32> @mls_nxv4i32_x(<vscale x 4 x i32> %x, <vscale x 4 x i3
951
950
; CHECK-LABEL: mls_nxv4i32_x:
952
951
; CHECK: // %bb.0: // %entry
953
952
; CHECK-NEXT: ptrue p0.s
954
- ; CHECK-NEXT: cmpgt p1.s, p0/z, z3.s, #0
955
- ; CHECK-NEXT: msb z1.s, p0/m, z0.s, z2.s
956
- ; CHECK-NEXT: mov z0.s, p1/m, z1.s
953
+ ; CHECK-NEXT: cmpgt p0.s, p0/z, z3.s, #0
954
+ ; CHECK-NEXT: msb z0.s, p0/m, z1.s, z2.s
957
955
; CHECK-NEXT: ret
958
956
entry:
959
957
%c = icmp sgt <vscale x 4 x i32 > %n , zeroinitializer
@@ -967,9 +965,8 @@ define <vscale x 8 x i16> @mls_nxv8i16_x(<vscale x 8 x i16> %x, <vscale x 8 x i1
967
965
; CHECK-LABEL: mls_nxv8i16_x:
968
966
; CHECK: // %bb.0: // %entry
969
967
; CHECK-NEXT: ptrue p0.h
970
- ; CHECK-NEXT: cmpgt p1.h, p0/z, z3.h, #0
971
- ; CHECK-NEXT: msb z1.h, p0/m, z0.h, z2.h
972
- ; CHECK-NEXT: mov z0.h, p1/m, z1.h
968
+ ; CHECK-NEXT: cmpgt p0.h, p0/z, z3.h, #0
969
+ ; CHECK-NEXT: msb z0.h, p0/m, z1.h, z2.h
973
970
; CHECK-NEXT: ret
974
971
entry:
975
972
%c = icmp sgt <vscale x 8 x i16 > %n , zeroinitializer
@@ -983,9 +980,8 @@ define <vscale x 16 x i8> @mls_nxv16i8_x(<vscale x 16 x i8> %x, <vscale x 16 x i
983
980
; CHECK-LABEL: mls_nxv16i8_x:
984
981
; CHECK: // %bb.0: // %entry
985
982
; CHECK-NEXT: ptrue p0.b
986
- ; CHECK-NEXT: cmpgt p1.b, p0/z, z3.b, #0
987
- ; CHECK-NEXT: msb z1.b, p0/m, z0.b, z2.b
988
- ; CHECK-NEXT: mov z0.b, p1/m, z1.b
983
+ ; CHECK-NEXT: cmpgt p0.b, p0/z, z3.b, #0
984
+ ; CHECK-NEXT: msb z0.b, p0/m, z1.b, z2.b
989
985
; CHECK-NEXT: ret
990
986
entry:
991
987
%c = icmp sgt <vscale x 16 x i8 > %n , zeroinitializer
@@ -1812,8 +1808,8 @@ define <vscale x 2 x i64> @srem_nxv2i64_y(<vscale x 2 x i64> %x, <vscale x 2 x i
1812
1808
; CHECK-NEXT: cmpgt p1.d, p0/z, z2.d, #0
1813
1809
; CHECK-NEXT: movprfx z2, z0
1814
1810
; CHECK-NEXT: sdiv z2.d, p0/m, z2.d, z1.d
1815
- ; CHECK-NEXT: mls z0 .d, p0 /m, z2.d, z1 .d
1816
- ; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
1811
+ ; CHECK-NEXT: msb z1 .d, p1 /m, z2.d, z0 .d
1812
+ ; CHECK-NEXT: mov z0.d, z1.d
1817
1813
; CHECK-NEXT: ret
1818
1814
entry:
1819
1815
%c = icmp sgt <vscale x 2 x i64 > %n , zeroinitializer
@@ -1829,8 +1825,8 @@ define <vscale x 4 x i32> @srem_nxv4i32_y(<vscale x 4 x i32> %x, <vscale x 4 x i
1829
1825
; CHECK-NEXT: cmpgt p1.s, p0/z, z2.s, #0
1830
1826
; CHECK-NEXT: movprfx z2, z0
1831
1827
; CHECK-NEXT: sdiv z2.s, p0/m, z2.s, z1.s
1832
- ; CHECK-NEXT: mls z0 .s, p0 /m, z2.s, z1 .s
1833
- ; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
1828
+ ; CHECK-NEXT: msb z1 .s, p1 /m, z2.s, z0 .s
1829
+ ; CHECK-NEXT: mov z0.d, z1.d
1834
1830
; CHECK-NEXT: ret
1835
1831
entry:
1836
1832
%c = icmp sgt <vscale x 4 x i32 > %n , zeroinitializer
@@ -1842,19 +1838,19 @@ entry:
1842
1838
define <vscale x 8 x i16 > @srem_nxv8i16_y (<vscale x 8 x i16 > %x , <vscale x 8 x i16 > %y , <vscale x 8 x i16 > %n ) {
1843
1839
; CHECK-LABEL: srem_nxv8i16_y:
1844
1840
; CHECK: // %bb.0: // %entry
1845
- ; CHECK-NEXT: ptrue p0 .s
1841
+ ; CHECK-NEXT: ptrue p1 .s
1846
1842
; CHECK-NEXT: sunpkhi z3.s, z1.h
1847
1843
; CHECK-NEXT: sunpkhi z4.s, z0.h
1844
+ ; CHECK-NEXT: ptrue p0.h
1845
+ ; CHECK-NEXT: sdivr z3.s, p1/m, z3.s, z4.s
1848
1846
; CHECK-NEXT: sunpklo z5.s, z1.h
1849
- ; CHECK-NEXT: sdivr z3.s, p0/m, z3.s, z4.s
1850
1847
; CHECK-NEXT: sunpklo z6.s, z0.h
1851
1848
; CHECK-NEXT: movprfx z4, z6
1852
- ; CHECK-NEXT: sdiv z4.s, p0/m, z4.s, z5.s
1853
- ; CHECK-NEXT: ptrue p0.h
1854
- ; CHECK-NEXT: uzp1 z3.h, z4.h, z3.h
1855
- ; CHECK-NEXT: cmpgt p1.h, p0/z, z2.h, #0
1856
- ; CHECK-NEXT: mls z0.h, p0/m, z3.h, z1.h
1857
- ; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
1849
+ ; CHECK-NEXT: sdiv z4.s, p1/m, z4.s, z5.s
1850
+ ; CHECK-NEXT: cmpgt p0.h, p0/z, z2.h, #0
1851
+ ; CHECK-NEXT: uzp1 z2.h, z4.h, z3.h
1852
+ ; CHECK-NEXT: msb z1.h, p0/m, z2.h, z0.h
1853
+ ; CHECK-NEXT: mov z0.d, z1.d
1858
1854
; CHECK-NEXT: ret
1859
1855
entry:
1860
1856
%c = icmp sgt <vscale x 8 x i16 > %n , zeroinitializer
@@ -1871,25 +1867,26 @@ define <vscale x 16 x i8> @srem_nxv16i8_y(<vscale x 16 x i8> %x, <vscale x 16 x
1871
1867
; CHECK-NEXT: ptrue p0.s
1872
1868
; CHECK-NEXT: sunpkhi z5.s, z3.h
1873
1869
; CHECK-NEXT: sunpkhi z6.s, z4.h
1874
- ; CHECK-NEXT: sunpklo z3.s, z3.h
1875
- ; CHECK-NEXT: sunpklo z4.s, z4.h
1870
+ ; CHECK-NEXT: sunpklo z7.h, z1.b
1876
1871
; CHECK-NEXT: sdivr z5.s, p0/m, z5.s, z6.s
1877
- ; CHECK-NEXT: sdivr z3.s, p0/m, z3.s, z4.s
1878
- ; CHECK-NEXT: sunpklo z4.h, z1.b
1879
1872
; CHECK-NEXT: sunpklo z6.h, z0.b
1880
- ; CHECK-NEXT: sunpkhi z7.s, z4.h
1881
- ; CHECK-NEXT: sunpkhi z24.s, z6.h
1873
+ ; CHECK-NEXT: sunpklo z3.s, z3.h
1882
1874
; CHECK-NEXT: sunpklo z4.s, z4.h
1875
+ ; CHECK-NEXT: sunpkhi z24.s, z7.h
1876
+ ; CHECK-NEXT: sunpkhi z25.s, z6.h
1877
+ ; CHECK-NEXT: sunpklo z7.s, z7.h
1883
1878
; CHECK-NEXT: sunpklo z6.s, z6.h
1884
- ; CHECK-NEXT: sdivr z7 .s, p0/m, z7 .s, z24 .s
1885
- ; CHECK-NEXT: sdivr z4.s, p0/m, z4.s, z6.s
1886
- ; CHECK-NEXT: uzp1 z3.h, z3.h, z5.h
1887
- ; CHECK-NEXT: uzp1 z4.h, z4.h , z7.h
1879
+ ; CHECK-NEXT: sdivr z3 .s, p0/m, z3 .s, z4 .s
1880
+ ; CHECK-NEXT: movprfx z4, z25
1881
+ ; CHECK-NEXT: sdiv z4.s, p0/m, z4.s, z24.s
1882
+ ; CHECK-NEXT: sdiv z6.s, p0/m, z6.s , z7.s
1888
1883
; CHECK-NEXT: ptrue p0.b
1889
- ; CHECK-NEXT: uzp1 z3.b, z4.b, z3.b
1890
- ; CHECK-NEXT: cmpgt p1.b, p0/z, z2.b, #0
1891
- ; CHECK-NEXT: mls z0.b, p0/m, z3.b, z1.b
1892
- ; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
1884
+ ; CHECK-NEXT: uzp1 z3.h, z3.h, z5.h
1885
+ ; CHECK-NEXT: uzp1 z4.h, z6.h, z4.h
1886
+ ; CHECK-NEXT: cmpgt p0.b, p0/z, z2.b, #0
1887
+ ; CHECK-NEXT: uzp1 z2.b, z4.b, z3.b
1888
+ ; CHECK-NEXT: msb z1.b, p0/m, z2.b, z0.b
1889
+ ; CHECK-NEXT: mov z0.d, z1.d
1893
1890
; CHECK-NEXT: ret
1894
1891
entry:
1895
1892
%c = icmp sgt <vscale x 16 x i8 > %n , zeroinitializer
@@ -1905,8 +1902,8 @@ define <vscale x 2 x i64> @urem_nxv2i64_y(<vscale x 2 x i64> %x, <vscale x 2 x i
1905
1902
; CHECK-NEXT: cmpgt p1.d, p0/z, z2.d, #0
1906
1903
; CHECK-NEXT: movprfx z2, z0
1907
1904
; CHECK-NEXT: udiv z2.d, p0/m, z2.d, z1.d
1908
- ; CHECK-NEXT: mls z0 .d, p0 /m, z2.d, z1 .d
1909
- ; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
1905
+ ; CHECK-NEXT: msb z1 .d, p1 /m, z2.d, z0 .d
1906
+ ; CHECK-NEXT: mov z0.d, z1.d
1910
1907
; CHECK-NEXT: ret
1911
1908
entry:
1912
1909
%c = icmp sgt <vscale x 2 x i64 > %n , zeroinitializer
@@ -1922,8 +1919,8 @@ define <vscale x 4 x i32> @urem_nxv4i32_y(<vscale x 4 x i32> %x, <vscale x 4 x i
1922
1919
; CHECK-NEXT: cmpgt p1.s, p0/z, z2.s, #0
1923
1920
; CHECK-NEXT: movprfx z2, z0
1924
1921
; CHECK-NEXT: udiv z2.s, p0/m, z2.s, z1.s
1925
- ; CHECK-NEXT: mls z0 .s, p0 /m, z2.s, z1 .s
1926
- ; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
1922
+ ; CHECK-NEXT: msb z1 .s, p1 /m, z2.s, z0 .s
1923
+ ; CHECK-NEXT: mov z0.d, z1.d
1927
1924
; CHECK-NEXT: ret
1928
1925
entry:
1929
1926
%c = icmp sgt <vscale x 4 x i32 > %n , zeroinitializer
@@ -1935,19 +1932,19 @@ entry:
1935
1932
define <vscale x 8 x i16 > @urem_nxv8i16_y (<vscale x 8 x i16 > %x , <vscale x 8 x i16 > %y , <vscale x 8 x i16 > %n ) {
1936
1933
; CHECK-LABEL: urem_nxv8i16_y:
1937
1934
; CHECK: // %bb.0: // %entry
1938
- ; CHECK-NEXT: ptrue p0 .s
1935
+ ; CHECK-NEXT: ptrue p1 .s
1939
1936
; CHECK-NEXT: uunpkhi z3.s, z1.h
1940
1937
; CHECK-NEXT: uunpkhi z4.s, z0.h
1938
+ ; CHECK-NEXT: ptrue p0.h
1939
+ ; CHECK-NEXT: udivr z3.s, p1/m, z3.s, z4.s
1941
1940
; CHECK-NEXT: uunpklo z5.s, z1.h
1942
- ; CHECK-NEXT: udivr z3.s, p0/m, z3.s, z4.s
1943
1941
; CHECK-NEXT: uunpklo z6.s, z0.h
1944
1942
; CHECK-NEXT: movprfx z4, z6
1945
- ; CHECK-NEXT: udiv z4.s, p0/m, z4.s, z5.s
1946
- ; CHECK-NEXT: ptrue p0.h
1947
- ; CHECK-NEXT: uzp1 z3.h, z4.h, z3.h
1948
- ; CHECK-NEXT: cmpgt p1.h, p0/z, z2.h, #0
1949
- ; CHECK-NEXT: mls z0.h, p0/m, z3.h, z1.h
1950
- ; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
1943
+ ; CHECK-NEXT: udiv z4.s, p1/m, z4.s, z5.s
1944
+ ; CHECK-NEXT: cmpgt p0.h, p0/z, z2.h, #0
1945
+ ; CHECK-NEXT: uzp1 z2.h, z4.h, z3.h
1946
+ ; CHECK-NEXT: msb z1.h, p0/m, z2.h, z0.h
1947
+ ; CHECK-NEXT: mov z0.d, z1.d
1951
1948
; CHECK-NEXT: ret
1952
1949
entry:
1953
1950
%c = icmp sgt <vscale x 8 x i16 > %n , zeroinitializer
@@ -1964,25 +1961,26 @@ define <vscale x 16 x i8> @urem_nxv16i8_y(<vscale x 16 x i8> %x, <vscale x 16 x
1964
1961
; CHECK-NEXT: ptrue p0.s
1965
1962
; CHECK-NEXT: uunpkhi z5.s, z3.h
1966
1963
; CHECK-NEXT: uunpkhi z6.s, z4.h
1967
- ; CHECK-NEXT: uunpklo z3.s, z3.h
1968
- ; CHECK-NEXT: uunpklo z4.s, z4.h
1964
+ ; CHECK-NEXT: uunpklo z7.h, z1.b
1969
1965
; CHECK-NEXT: udivr z5.s, p0/m, z5.s, z6.s
1970
- ; CHECK-NEXT: udivr z3.s, p0/m, z3.s, z4.s
1971
- ; CHECK-NEXT: uunpklo z4.h, z1.b
1972
1966
; CHECK-NEXT: uunpklo z6.h, z0.b
1973
- ; CHECK-NEXT: uunpkhi z7.s, z4.h
1974
- ; CHECK-NEXT: uunpkhi z24.s, z6.h
1967
+ ; CHECK-NEXT: uunpklo z3.s, z3.h
1975
1968
; CHECK-NEXT: uunpklo z4.s, z4.h
1969
+ ; CHECK-NEXT: uunpkhi z24.s, z7.h
1970
+ ; CHECK-NEXT: uunpkhi z25.s, z6.h
1971
+ ; CHECK-NEXT: uunpklo z7.s, z7.h
1976
1972
; CHECK-NEXT: uunpklo z6.s, z6.h
1977
- ; CHECK-NEXT: udivr z7 .s, p0/m, z7 .s, z24 .s
1978
- ; CHECK-NEXT: udivr z4.s, p0/m, z4.s, z6.s
1979
- ; CHECK-NEXT: uzp1 z3.h, z3.h, z5.h
1980
- ; CHECK-NEXT: uzp1 z4.h, z4.h , z7.h
1973
+ ; CHECK-NEXT: udivr z3 .s, p0/m, z3 .s, z4 .s
1974
+ ; CHECK-NEXT: movprfx z4, z25
1975
+ ; CHECK-NEXT: udiv z4.s, p0/m, z4.s, z24.s
1976
+ ; CHECK-NEXT: udiv z6.s, p0/m, z6.s , z7.s
1981
1977
; CHECK-NEXT: ptrue p0.b
1982
- ; CHECK-NEXT: uzp1 z3.b, z4.b, z3.b
1983
- ; CHECK-NEXT: cmpgt p1.b, p0/z, z2.b, #0
1984
- ; CHECK-NEXT: mls z0.b, p0/m, z3.b, z1.b
1985
- ; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
1978
+ ; CHECK-NEXT: uzp1 z3.h, z3.h, z5.h
1979
+ ; CHECK-NEXT: uzp1 z4.h, z6.h, z4.h
1980
+ ; CHECK-NEXT: cmpgt p0.b, p0/z, z2.b, #0
1981
+ ; CHECK-NEXT: uzp1 z2.b, z4.b, z3.b
1982
+ ; CHECK-NEXT: msb z1.b, p0/m, z2.b, z0.b
1983
+ ; CHECK-NEXT: mov z0.d, z1.d
1986
1984
; CHECK-NEXT: ret
1987
1985
entry:
1988
1986
%c = icmp sgt <vscale x 16 x i8 > %n , zeroinitializer
@@ -2355,9 +2353,9 @@ define <vscale x 2 x i64> @mla_nxv2i64_y(<vscale x 2 x i64> %x, <vscale x 2 x i6
2355
2353
; CHECK-LABEL: mla_nxv2i64_y:
2356
2354
; CHECK: // %bb.0: // %entry
2357
2355
; CHECK-NEXT: ptrue p0.d
2358
- ; CHECK-NEXT: cmpgt p1 .d, p0/z, z3.d, #0
2359
- ; CHECK-NEXT: mla z0 .d, p0/m, z1 .d, z2 .d
2360
- ; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
2356
+ ; CHECK-NEXT: cmpgt p0 .d, p0/z, z3.d, #0
2357
+ ; CHECK-NEXT: mad z1 .d, p0/m, z2 .d, z0 .d
2358
+ ; CHECK-NEXT: mov z0.d, z1.d
2361
2359
; CHECK-NEXT: ret
2362
2360
entry:
2363
2361
%c = icmp sgt <vscale x 2 x i64 > %n , zeroinitializer
@@ -2371,9 +2369,9 @@ define <vscale x 4 x i32> @mla_nxv4i32_y(<vscale x 4 x i32> %x, <vscale x 4 x i3
2371
2369
; CHECK-LABEL: mla_nxv4i32_y:
2372
2370
; CHECK: // %bb.0: // %entry
2373
2371
; CHECK-NEXT: ptrue p0.s
2374
- ; CHECK-NEXT: cmpgt p1 .s, p0/z, z3.s, #0
2375
- ; CHECK-NEXT: mla z0 .s, p0/m, z1 .s, z2 .s
2376
- ; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
2372
+ ; CHECK-NEXT: cmpgt p0 .s, p0/z, z3.s, #0
2373
+ ; CHECK-NEXT: mad z1 .s, p0/m, z2 .s, z0 .s
2374
+ ; CHECK-NEXT: mov z0.d, z1.d
2377
2375
; CHECK-NEXT: ret
2378
2376
entry:
2379
2377
%c = icmp sgt <vscale x 4 x i32 > %n , zeroinitializer
@@ -2387,9 +2385,9 @@ define <vscale x 8 x i16> @mla_nxv8i16_y(<vscale x 8 x i16> %x, <vscale x 8 x i1
2387
2385
; CHECK-LABEL: mla_nxv8i16_y:
2388
2386
; CHECK: // %bb.0: // %entry
2389
2387
; CHECK-NEXT: ptrue p0.h
2390
- ; CHECK-NEXT: cmpgt p1 .h, p0/z, z3.h, #0
2391
- ; CHECK-NEXT: mla z0 .h, p0/m, z1 .h, z2 .h
2392
- ; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
2388
+ ; CHECK-NEXT: cmpgt p0 .h, p0/z, z3.h, #0
2389
+ ; CHECK-NEXT: mad z1 .h, p0/m, z2 .h, z0 .h
2390
+ ; CHECK-NEXT: mov z0.d, z1.d
2393
2391
; CHECK-NEXT: ret
2394
2392
entry:
2395
2393
%c = icmp sgt <vscale x 8 x i16 > %n , zeroinitializer
@@ -2403,9 +2401,9 @@ define <vscale x 16 x i8> @mla_nxv16i8_y(<vscale x 16 x i8> %x, <vscale x 16 x i
2403
2401
; CHECK-LABEL: mla_nxv16i8_y:
2404
2402
; CHECK: // %bb.0: // %entry
2405
2403
; CHECK-NEXT: ptrue p0.b
2406
- ; CHECK-NEXT: cmpgt p1 .b, p0/z, z3.b, #0
2407
- ; CHECK-NEXT: mla z0 .b, p0/m, z1 .b, z2 .b
2408
- ; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
2404
+ ; CHECK-NEXT: cmpgt p0 .b, p0/z, z3.b, #0
2405
+ ; CHECK-NEXT: mad z1 .b, p0/m, z2 .b, z0 .b
2406
+ ; CHECK-NEXT: mov z0.d, z1.d
2409
2407
; CHECK-NEXT: ret
2410
2408
entry:
2411
2409
%c = icmp sgt <vscale x 16 x i8 > %n , zeroinitializer
@@ -2419,9 +2417,9 @@ define <vscale x 2 x i64> @mls_nxv2i64_y(<vscale x 2 x i64> %x, <vscale x 2 x i6
2419
2417
; CHECK-LABEL: mls_nxv2i64_y:
2420
2418
; CHECK: // %bb.0: // %entry
2421
2419
; CHECK-NEXT: ptrue p0.d
2422
- ; CHECK-NEXT: cmpgt p1 .d, p0/z, z3.d, #0
2423
- ; CHECK-NEXT: msb z0 .d, p0/m, z1 .d, z2.d
2424
- ; CHECK-NEXT: sel z0.d, p1, z0.d, z1.d
2420
+ ; CHECK-NEXT: cmpgt p0 .d, p0/z, z3.d, #0
2421
+ ; CHECK-NEXT: msb z1 .d, p0/m, z0 .d, z2.d
2422
+ ; CHECK-NEXT: mov z0.d, z1.d
2425
2423
; CHECK-NEXT: ret
2426
2424
entry:
2427
2425
%c = icmp sgt <vscale x 2 x i64 > %n , zeroinitializer
@@ -2435,9 +2433,9 @@ define <vscale x 4 x i32> @mls_nxv4i32_y(<vscale x 4 x i32> %x, <vscale x 4 x i3
2435
2433
; CHECK-LABEL: mls_nxv4i32_y:
2436
2434
; CHECK: // %bb.0: // %entry
2437
2435
; CHECK-NEXT: ptrue p0.s
2438
- ; CHECK-NEXT: cmpgt p1 .s, p0/z, z3.s, #0
2439
- ; CHECK-NEXT: msb z0 .s, p0/m, z1 .s, z2.s
2440
- ; CHECK-NEXT: sel z0.s, p1, z0.s, z1.s
2436
+ ; CHECK-NEXT: cmpgt p0 .s, p0/z, z3.s, #0
2437
+ ; CHECK-NEXT: msb z1 .s, p0/m, z0 .s, z2.s
2438
+ ; CHECK-NEXT: mov z0.d, z1.d
2441
2439
; CHECK-NEXT: ret
2442
2440
entry:
2443
2441
%c = icmp sgt <vscale x 4 x i32 > %n , zeroinitializer
@@ -2451,9 +2449,9 @@ define <vscale x 8 x i16> @mls_nxv8i16_y(<vscale x 8 x i16> %x, <vscale x 8 x i1
2451
2449
; CHECK-LABEL: mls_nxv8i16_y:
2452
2450
; CHECK: // %bb.0: // %entry
2453
2451
; CHECK-NEXT: ptrue p0.h
2454
- ; CHECK-NEXT: cmpgt p1 .h, p0/z, z3.h, #0
2455
- ; CHECK-NEXT: msb z0 .h, p0/m, z1 .h, z2.h
2456
- ; CHECK-NEXT: sel z0.h, p1, z0.h, z1.h
2452
+ ; CHECK-NEXT: cmpgt p0 .h, p0/z, z3.h, #0
2453
+ ; CHECK-NEXT: msb z1 .h, p0/m, z0 .h, z2.h
2454
+ ; CHECK-NEXT: mov z0.d, z1.d
2457
2455
; CHECK-NEXT: ret
2458
2456
entry:
2459
2457
%c = icmp sgt <vscale x 8 x i16 > %n , zeroinitializer
@@ -2467,9 +2465,9 @@ define <vscale x 16 x i8> @mls_nxv16i8_y(<vscale x 16 x i8> %x, <vscale x 16 x i
2467
2465
; CHECK-LABEL: mls_nxv16i8_y:
2468
2466
; CHECK: // %bb.0: // %entry
2469
2467
; CHECK-NEXT: ptrue p0.b
2470
- ; CHECK-NEXT: cmpgt p1 .b, p0/z, z3.b, #0
2471
- ; CHECK-NEXT: msb z0 .b, p0/m, z1 .b, z2.b
2472
- ; CHECK-NEXT: sel z0.b, p1, z0.b, z1.b
2468
+ ; CHECK-NEXT: cmpgt p0 .b, p0/z, z3.b, #0
2469
+ ; CHECK-NEXT: msb z1 .b, p0/m, z0 .b, z2.b
2470
+ ; CHECK-NEXT: mov z0.d, z1.d
2473
2471
; CHECK-NEXT: ret
2474
2472
entry:
2475
2473
%c = icmp sgt <vscale x 16 x i8 > %n , zeroinitializer
0 commit comments