Skip to content
Snippets Groups Projects
Commit bcbf4fa4 authored by Wilco Dijkstra's avatar Wilco Dijkstra
Browse files

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.
parent 403e361d
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment