@@ -429,13 +429,8 @@ define i64 @extract_last_i64_scalable(<vscale x 2 x i64> %data, <vscale x 2 x i1
429429define half @extract_last_half_scalable (<vscale x 8 x half > %data , <vscale x 8 x i1 > %mask , half %passthru ) #0 {
430430; CHECK-LABEL: extract_last_half_scalable:
431431; CHECK: // %bb.0:
432- ; CHECK-NEXT: index z2.h, #0, #1
433- ; CHECK-NEXT: lastb w8, p0, z2.h
434- ; CHECK-NEXT: whilels p1.h, xzr, x8
435- ; CHECK-NEXT: lastb h0, p1, z0.h
436- ; CHECK-NEXT: ptrue p1.h
437- ; CHECK-NEXT: ptest p1, p0.b
438- ; CHECK-NEXT: fcsel h0, h0, h1, ne
432+ ; CHECK-NEXT: clastb h1, p0, h1, z0.h
433+ ; CHECK-NEXT: fmov s0, s1
439434; CHECK-NEXT: ret
440435 %res = call half @llvm.experimental.vector.extract.last.active.nxv8f16 (<vscale x 8 x half > %data , <vscale x 8 x i1 > %mask , half %passthru )
441436 ret half %res
@@ -444,13 +439,8 @@ define half @extract_last_half_scalable(<vscale x 8 x half> %data, <vscale x 8 x
444439define bfloat @extract_last_bfloat_scalable (<vscale x 8 x bfloat> %data , <vscale x 8 x i1 > %mask , bfloat %passthru ) #0 {
445440; CHECK-LABEL: extract_last_bfloat_scalable:
446441; CHECK: // %bb.0:
447- ; CHECK-NEXT: index z2.h, #0, #1
448- ; CHECK-NEXT: lastb w8, p0, z2.h
449- ; CHECK-NEXT: whilels p1.h, xzr, x8
450- ; CHECK-NEXT: lastb h0, p1, z0.h
451- ; CHECK-NEXT: ptrue p1.h
452- ; CHECK-NEXT: ptest p1, p0.b
453- ; CHECK-NEXT: fcsel h0, h0, h1, ne
442+ ; CHECK-NEXT: clastb h1, p0, h1, z0.h
443+ ; CHECK-NEXT: fmov s0, s1
454444; CHECK-NEXT: ret
455445 %res = call bfloat @llvm.experimental.vector.extract.last.active.nxv8bf16 (<vscale x 8 x bfloat> %data , <vscale x 8 x i1 > %mask , bfloat %passthru )
456446 ret bfloat %res
0 commit comments