@@ -1426,11 +1426,8 @@ define <vscale x 1 x i64> @bitcast_nxv4f16_to_nxv1i64(<vscale x 4 x half> %v) #0
1426
1426
;
1427
1427
; CHECK_BE-LABEL: bitcast_nxv4f16_to_nxv1i64:
1428
1428
; CHECK_BE: // %bb.0:
1429
- ; CHECK_BE-NEXT: ptrue p0.h
1430
- ; CHECK_BE-NEXT: ptrue p1.s
1431
- ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1432
- ; CHECK_BE-NEXT: revb z0.s, p1/m, z0.s
1433
1429
; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
1430
+ ; CHECK_BE-NEXT: ptrue p0.h
1434
1431
; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1435
1432
; CHECK_BE-NEXT: ptrue p0.d
1436
1433
; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
@@ -1447,13 +1444,11 @@ define <vscale x 1 x i64> @bitcast_nxv2f32_to_nxv1i64(<vscale x 2 x float> %v) #
1447
1444
;
1448
1445
; CHECK_BE-LABEL: bitcast_nxv2f32_to_nxv1i64:
1449
1446
; CHECK_BE: // %bb.0:
1450
- ; CHECK_BE-NEXT: ptrue p0.s
1451
- ; CHECK_BE-NEXT: ptrue p1.d
1452
- ; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
1453
- ; CHECK_BE-NEXT: revb z0.d, p1/m, z0.d
1454
1447
; CHECK_BE-NEXT: uzp1 z0.s, z0.s, z0.s
1448
+ ; CHECK_BE-NEXT: ptrue p0.s
1455
1449
; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
1456
- ; CHECK_BE-NEXT: revb z0.d, p1/m, z0.d
1450
+ ; CHECK_BE-NEXT: ptrue p0.d
1451
+ ; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
1457
1452
; CHECK_BE-NEXT: ret
1458
1453
%bc = bitcast <vscale x 2 x float > %v to <vscale x 1 x i64 >
1459
1454
ret <vscale x 1 x i64 > %bc
@@ -1479,11 +1474,8 @@ define <vscale x 1 x i64> @bitcast_nxv4bf16_to_nxv1i64(<vscale x 4 x bfloat> %v)
1479
1474
;
1480
1475
; CHECK_BE-LABEL: bitcast_nxv4bf16_to_nxv1i64:
1481
1476
; CHECK_BE: // %bb.0:
1482
- ; CHECK_BE-NEXT: ptrue p0.h
1483
- ; CHECK_BE-NEXT: ptrue p1.s
1484
- ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1485
- ; CHECK_BE-NEXT: revb z0.s, p1/m, z0.s
1486
1477
; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
1478
+ ; CHECK_BE-NEXT: ptrue p0.h
1487
1479
; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1488
1480
; CHECK_BE-NEXT: ptrue p0.d
1489
1481
; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
@@ -1888,11 +1880,8 @@ define <vscale x 1 x double> @bitcast_nxv4f16_to_nxv1f64(<vscale x 4 x half> %v)
1888
1880
;
1889
1881
; CHECK_BE-LABEL: bitcast_nxv4f16_to_nxv1f64:
1890
1882
; CHECK_BE: // %bb.0:
1891
- ; CHECK_BE-NEXT: ptrue p0.h
1892
- ; CHECK_BE-NEXT: ptrue p1.s
1893
- ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1894
- ; CHECK_BE-NEXT: revb z0.s, p1/m, z0.s
1895
1883
; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
1884
+ ; CHECK_BE-NEXT: ptrue p0.h
1896
1885
; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1897
1886
; CHECK_BE-NEXT: ptrue p0.d
1898
1887
; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
@@ -1909,13 +1898,11 @@ define <vscale x 1 x double> @bitcast_nxv2f32_to_nxv1f64(<vscale x 2 x float> %v
1909
1898
;
1910
1899
; CHECK_BE-LABEL: bitcast_nxv2f32_to_nxv1f64:
1911
1900
; CHECK_BE: // %bb.0:
1912
- ; CHECK_BE-NEXT: ptrue p0.s
1913
- ; CHECK_BE-NEXT: ptrue p1.d
1914
- ; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
1915
- ; CHECK_BE-NEXT: revb z0.d, p1/m, z0.d
1916
1901
; CHECK_BE-NEXT: uzp1 z0.s, z0.s, z0.s
1902
+ ; CHECK_BE-NEXT: ptrue p0.s
1917
1903
; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
1918
- ; CHECK_BE-NEXT: revb z0.d, p1/m, z0.d
1904
+ ; CHECK_BE-NEXT: ptrue p0.d
1905
+ ; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
1919
1906
; CHECK_BE-NEXT: ret
1920
1907
%bc = bitcast <vscale x 2 x float > %v to <vscale x 1 x double >
1921
1908
ret <vscale x 1 x double > %bc
@@ -1929,11 +1916,8 @@ define <vscale x 1 x double> @bitcast_nxv4bf16_to_nxv1f64(<vscale x 4 x bfloat>
1929
1916
;
1930
1917
; CHECK_BE-LABEL: bitcast_nxv4bf16_to_nxv1f64:
1931
1918
; CHECK_BE: // %bb.0:
1932
- ; CHECK_BE-NEXT: ptrue p0.h
1933
- ; CHECK_BE-NEXT: ptrue p1.s
1934
- ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1935
- ; CHECK_BE-NEXT: revb z0.s, p1/m, z0.s
1936
1919
; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
1920
+ ; CHECK_BE-NEXT: ptrue p0.h
1937
1921
; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
1938
1922
; CHECK_BE-NEXT: ptrue p0.d
1939
1923
; CHECK_BE-NEXT: revb z0.d, p0/m, z0.d
@@ -2333,29 +2317,18 @@ define <vscale x 1 x i32> @bitcast_nxv2i16_to_nxv1i32(<vscale x 2 x i16> %v) #0
2333
2317
define <vscale x 1 x i32 > @bitcast_nxv2f16_to_nxv1i32 (<vscale x 2 x half > %v ) #0 {
2334
2318
; CHECK-LABEL: bitcast_nxv2f16_to_nxv1i32:
2335
2319
; CHECK: // %bb.0:
2336
- ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill
2337
- ; CHECK-NEXT: addvl sp, sp, #-1
2338
- ; CHECK-NEXT: ptrue p0.d
2339
- ; CHECK-NEXT: ptrue p1.s
2340
- ; CHECK-NEXT: st1h { z0.d }, p0, [sp]
2341
- ; CHECK-NEXT: ld1w { z0.s }, p1/z, [sp]
2342
- ; CHECK-NEXT: addvl sp, sp, #1
2343
- ; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload
2320
+ ; CHECK-NEXT: uzp1 z0.h, z0.h, z0.h
2321
+ ; CHECK-NEXT: uzp1 z0.h, z0.h, z0.h
2344
2322
; CHECK-NEXT: ret
2345
2323
;
2346
2324
; CHECK_BE-LABEL: bitcast_nxv2f16_to_nxv1i32:
2347
2325
; CHECK_BE: // %bb.0:
2348
- ; CHECK_BE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill
2349
- ; CHECK_BE-NEXT: addvl sp, sp, #-1
2350
- ; CHECK_BE-NEXT: ptrue p0.d
2351
- ; CHECK_BE-NEXT: ptrue p1.h
2352
- ; CHECK_BE-NEXT: st1h { z0.d }, p0, [sp]
2326
+ ; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
2327
+ ; CHECK_BE-NEXT: ptrue p0.h
2328
+ ; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
2329
+ ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
2353
2330
; CHECK_BE-NEXT: ptrue p0.s
2354
- ; CHECK_BE-NEXT: ld1h { z0.h }, p1/z, [sp]
2355
- ; CHECK_BE-NEXT: revb z0.h, p1/m, z0.h
2356
2331
; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
2357
- ; CHECK_BE-NEXT: addvl sp, sp, #1
2358
- ; CHECK_BE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload
2359
2332
; CHECK_BE-NEXT: ret
2360
2333
%bc = bitcast <vscale x 2 x half > %v to <vscale x 1 x i32 >
2361
2334
ret <vscale x 1 x i32 > %bc
@@ -2366,29 +2339,18 @@ define <vscale x 1 x i32> @bitcast_nxv2f16_to_nxv1i32(<vscale x 2 x half> %v) #0
2366
2339
define <vscale x 1 x i32 > @bitcast_nxv2bf16_to_nxv1i32 (<vscale x 2 x bfloat> %v ) #0 {
2367
2340
; CHECK-LABEL: bitcast_nxv2bf16_to_nxv1i32:
2368
2341
; CHECK: // %bb.0:
2369
- ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill
2370
- ; CHECK-NEXT: addvl sp, sp, #-1
2371
- ; CHECK-NEXT: ptrue p0.d
2372
- ; CHECK-NEXT: ptrue p1.s
2373
- ; CHECK-NEXT: st1h { z0.d }, p0, [sp]
2374
- ; CHECK-NEXT: ld1w { z0.s }, p1/z, [sp]
2375
- ; CHECK-NEXT: addvl sp, sp, #1
2376
- ; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload
2342
+ ; CHECK-NEXT: uzp1 z0.h, z0.h, z0.h
2343
+ ; CHECK-NEXT: uzp1 z0.h, z0.h, z0.h
2377
2344
; CHECK-NEXT: ret
2378
2345
;
2379
2346
; CHECK_BE-LABEL: bitcast_nxv2bf16_to_nxv1i32:
2380
2347
; CHECK_BE: // %bb.0:
2381
- ; CHECK_BE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill
2382
- ; CHECK_BE-NEXT: addvl sp, sp, #-1
2383
- ; CHECK_BE-NEXT: ptrue p0.d
2384
- ; CHECK_BE-NEXT: ptrue p1.h
2385
- ; CHECK_BE-NEXT: st1h { z0.d }, p0, [sp]
2348
+ ; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
2349
+ ; CHECK_BE-NEXT: ptrue p0.h
2350
+ ; CHECK_BE-NEXT: uzp1 z0.h, z0.h, z0.h
2351
+ ; CHECK_BE-NEXT: revb z0.h, p0/m, z0.h
2386
2352
; CHECK_BE-NEXT: ptrue p0.s
2387
- ; CHECK_BE-NEXT: ld1h { z0.h }, p1/z, [sp]
2388
- ; CHECK_BE-NEXT: revb z0.h, p1/m, z0.h
2389
2353
; CHECK_BE-NEXT: revb z0.s, p0/m, z0.s
2390
- ; CHECK_BE-NEXT: addvl sp, sp, #1
2391
- ; CHECK_BE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload
2392
2354
; CHECK_BE-NEXT: ret
2393
2355
%bc = bitcast <vscale x 2 x bfloat> %v to <vscale x 1 x i32 >
2394
2356
ret <vscale x 1 x i32 > %bc
0 commit comments