This change:
- Modifies the ACLE code to allow the new SLC value (3) for the prefetch target.
- Introduces a new intrinsic, @llvm.aarch64.prefetch which matches the PRFM family instructions much more closely, and can represent all values for the PRFM immediate.
The target-independent @llvm.prefetch intrinsic does not have enough information for us to be able to lower to it from the ACLE intrinsics correctly.
- Lowers the acle calls to the new intrinsic on aarch64 (the ARM lowering is unchanged).
- Implements code generation for the new intrinsic in both SelectionDAG and GlobalISel. We specifically choose to continue to support lowering the target-independent @llvm.prefetch intrinsic so that other frontends can continue to use it.
I believe you also have to turn on GISL: -global-isel.
See test in https://reviews.llvm.org/D109827.