ARM64-SVE: Delay free all ops within conditional select
Fixes #106864
Embedded ops may be prefixed by a MOVPFRX instruction. If so, then the embedded op can't use the reuse a source register as the destination. Ensure all the inputs are marked as delay free.
This solves the case where an embedded mask operation is passed two identical inputs.
@dotnet/arm64-contrib @kunalspathak
/backport to release/9.0-rc1
Started backporting to release/9.0-rc1: https://github.com/dotnet/runtime/actions/runs/10729636992
/backport to release/9.0
Started backporting to release/9.0: https://github.com/dotnet/runtime/actions/runs/10729651396
@kunalspathak backporting to release/9.0 failed, the patch most likely resulted in conflicts:
$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch
Applying: ARM64-SVE: Delay free all ops within conditional select
Applying: Fix comment
Applying: Add test header
Applying: don't delay prefUseOpNum
Applying: Fix FMA
Applying: Add assert checks for delay free
Applying: Merge embedded op build code
Applying: fix formatting
Applying: simplify assert
Applying: simplify FMA code
Applying: Add tests for 106867
Applying: ARM64-SVE: Allow op inside conditionselect to be non HWintrinsic
Applying: Add Sve.IsSupported to tests
Applying: Add Sve.IsSupported to test
Applying: fix formatting
error: sha1 information is lacking or useless (src/coreclr/jit/lowerarmarch.cpp).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Patch failed at 0015 fix formatting
Error: The process '/usr/bin/git' failed with exit code 128
Please backport manually!
@kunalspathak an error occurred while backporting to release/9.0, please check the run log for details!
Error: git am failed, most likely due to a merge conflict.