-
- Downloads
AArch64: Improve SIMD immediate generation (1/3)
Cleanup the various interfaces related to SIMD immediate generation. Introduce new functions that make it clear which operation (AND, OR, MOV) we are testing for rather than guessing the final instruction. Reduce the use of overly long names, unused and default parameters for clarity. No changes to internals or generated code. gcc/ChangeLog: * config/aarch64/aarch64-protos.h (enum simd_immediate_check): Move to aarch64.cc. (aarch64_output_simd_mov_immediate): Remove. (aarch64_output_simd_mov_imm): New prototype. (aarch64_output_simd_orr_imm): Likewise. (aarch64_output_simd_and_imm): Likewise. (aarch64_simd_valid_immediate): Remove. (aarch64_simd_valid_and_imm): New prototype. (aarch64_simd_valid_mov_imm): Likewise. (aarch64_simd_valid_orr_imm): Likewise. * config/aarch64/aarch64-simd.md: Use aarch64_output_simd_mov_imm. * config/aarch64/aarch64.cc (enum simd_immediate_check): Moved from aarch64-protos.h. Use AARCH64_CHECK_AND rather than AARCH64_CHECk_BIC. (aarch64_expand_sve_const_vector): Use aarch64_simd_valid_mov_imm. (aarch64_expand_mov_immediate): Likewise. (aarch64_can_const_movi_rtx_p): Likewise. (aarch64_secondary_reload): Likewise. (aarch64_legitimate_constant_p): Likewise. (aarch64_advsimd_valid_immediate): Simplify checks on 'which' param. (aarch64_sve_valid_immediate): Add extra param for move vs logical. (aarch64_simd_valid_immediate): Rename to aarch64_simd_valid_imm. (aarch64_simd_valid_mov_imm): New function. (aarch64_simd_valid_orr_imm): Likewise. (aarch64_simd_valid_and_imm): Likewise. (aarch64_mov_operand_p): Use aarch64_simd_valid_mov_imm. (aarch64_simd_scalar_immediate_valid_for_move): Likewise. (aarch64_simd_make_constant): Likewise. (aarch64_expand_vector_init_fallback): Likewise. (aarch64_output_simd_mov_immediate): Rename to aarch64_output_simd_imm. (aarch64_output_simd_orr_imm): New function. (aarch64_output_simd_and_imm): Likewise. (aarch64_output_simd_mov_imm): Likewise. (aarch64_output_scalar_simd_mov_immediate): Use aarch64_output_simd_mov_imm. (aarch64_output_sve_mov_immediate): Use aarch64_simd_valid_imm. (aarch64_output_sve_ptrues): Likewise. * config/aarch64/constraints.md (Do): Use aarch64_simd_valid_orr_imm. (Db): Use aarch64_simd_valid_and_imm. * config/aarch64/predicates.md (aarch64_reg_or_bic_imm): Use aarch64_simd_valid_orr_imm. (aarch64_reg_or_and_imm): Use aarch64_simd_valid_and_imm.
Showing
- gcc/config/aarch64/aarch64-protos.h 7 additions, 14 deletionsgcc/config/aarch64/aarch64-protos.h
- gcc/config/aarch64/aarch64-simd.md 5 additions, 6 deletionsgcc/config/aarch64/aarch64-simd.md
- gcc/config/aarch64/aarch64.cc 99 additions, 45 deletionsgcc/config/aarch64/aarch64.cc
- gcc/config/aarch64/constraints.md 4 additions, 6 deletionsgcc/config/aarch64/constraints.md
- gcc/config/aarch64/predicates.md 3 additions, 5 deletionsgcc/config/aarch64/predicates.md
Loading
Please register or sign in to comment