[AArch64] question about the value of register p0

dear, all

I see the following code in file llvm/test/CodeGen/AArch64/sve-extract-element.ll , I’m strange that there’s no initializtion instruction for register p0, so what’s the value of it ?

481 define i1 @test_lane0_16xi1(<vscale x 16 x i1> %a) #0 {
482 ; CHECK-LABEL: test_lane0_16xi1:
483 ; CHECK:       // %bb.0:
484 ; CHECK-NEXT:    mov z0.b, p0/z, #1 // =0x1
485 ; CHECK-NEXT:    fmov w8, s0
486 ; CHECK-NEXT:    and w0, w8, #0x1
487 ; CHECK-NEXT:    ret
488   %b = extractelement <vscale x 16 x i1> %a, i32 0
489   ret i1 %b
490 }

p0 is the input argument %a, I believe. So the mov is setting the first byte of z0 (=s0) to 1 if that lane of %a is set, and then moving the byte back to integer registers.

Thanks very much, I see