[AArch64][SVE] Extend int_aarch64_sve_ld1_gather_imm
The ACLE distinguishes between the following addressing modes for gather
- "scalar base, vector offset", and
- "vector base, scalar offset".
For the "vector base, scalar offset" case, the
int_aarch64_sve_ld1_gather_imm intrinsic was added in 79f2422d.
Currently, that intrinsic assumes that the scalar offset is passed as an
immediate. As a result, it does not cater for cases where scalar offset
is stored in a register.
In this patch int_aarch64_sve_ld1_gather_imm is extended so that all
cases are covered:
- int_aarch64_sve_ld1_gather_imm is renamed as int_aarch64_sve_ld1_gather_scalar_offset
- new DAG combine rules are added for GLD1_IMM for scenarios where the offset is a non-immediate scalar or an out-of-range immediate
- sve-intrinsics-gather-loads-vector-base.ll is renamed as sve-intrinsics-gather-loads-vector-base-imm-offset.ll
- sve-intrinsics-gather-loads-vector-base-scalar-offset.ll is added to test file for non-immediate offsets
Similar changes are made for scatter store intrinsics.
Reviewed By: sdesmalen, efriedma
Differential Revision: https://reviews.llvm.org/D71773