aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2023-11-06 16:27:52 +0100
committerUros Bizjak <ubizjak@gmail.com>2023-11-06 16:28:30 +0100
commitecd755a91d5797dd210795c69594fb4dac3ac0e5 (patch)
tree09220970b952eb31657a6bb5561123f5b4273abc /gcc/fortran
parentfad61bf73b3158157a136bf4d9373fc3d9afe319 (diff)
downloadgcc-ecd755a91d5797dd210795c69594fb4dac3ac0e5.zip
gcc-ecd755a91d5797dd210795c69594fb4dac3ac0e5.tar.gz
gcc-ecd755a91d5797dd210795c69594fb4dac3ac0e5.tar.bz2
i386: Use "addr" attribute to limit address regclass to non-REX regs
Use "addr" attribute with "gpr8" value to limit address register class to non-REX registers in instructions with high registers, where REX registers can not be used in the address. gcc/ChangeLog: * config/i386/constraints.md (Bc): Remove constraint. (Bn): Rewrite to use x86_extended_reg_mentioned_p predicate. * config/i386/i386.cc (ix86_memory_address_reg_class): Do not limit processing to TARGET_APX_EGPR. Exit early for NULL insn. Do not check recog_data.insn before calling extract_insn_cached. (ix86_insn_base_reg_class): Handle ADDR_GPR8. (ix86_regno_ok_for_insn_base_p): Ditto. (ix86_insn_index_reg_class): Ditto. * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): Remove insn pattern and corresponding peephole2 pattern. (*cmpi_ext<mode>_1): Remove (m,Q) alternative. Change (QBc,Q) alternative to (QBn,Q). Add "addr" attribute. (*cmpqi_ext<mode>_3_mem_rex64): Remove insn pattern and corresponding peephole2 pattern. (*cmpi_ext<mode>_3): Remove (Q,m) alternative. Change (Q,QnBc) alternative to (Q,QnBn). Add "addr" attribute. (*extzvqi_mem_rex64): Remove insn pattern and corresponding peephole2 pattern. (*extzvqi): Remove (Q,m) alternative. Change (Q,QnBc) alternative to (Q,QnBn). Add "addr" attribute. (*insvqi_1_mem_rex64): Remove insn pattern and corresponding peephole2 pattern. (*insvqi_1): Remove (Q,m) alternative. Change (Q,QnBc) alternative to (Q,QnBn). Add "addr" attribute. (@insv<mode>_1): Ditto. (*addqi_ext<mode>_0): Remove (m,0,Q) alternative. Change (QBc,0,Q) alternative to (QBn,0,Q). Add "addr" attribute. (*subqi_ext<mode>_0): Ditto. (*andqi_ext<mode>_0): Ditto. (*<any_or:code>qi_ext<mode>_0): Ditto. (*addqi_ext<mode>_1): Remove (Q,0,m) alternative. Change (Q,0,QnBc) alternative to (Q,0,QnBn). Add "addr" attribute. (*andqi_ext<mode>_1): Ditto. (*andqi_ext<mode>_1_cc): Ditto. (*<any_or:code>qi_ext<mode>_1): Ditto. (*xorqi_ext<mode>_1_cc): Ditto. * config/i386/predicates.md (nonimm_x64constmem_operand): Remove predicate. (general_x64constmem_operand): Ditto. (norex_memory_operand): Ditto.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions