aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2020-06-18 20:12:48 +0200
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 13:14:03 -0300
commitc1f0ed3b9c82577658e22323060306f8471491c9 (patch)
tree91d876bea6eb1d5a2e091b736eeca603a088f706 /gcc/fortran
parenta0e06e32c1d8a34c484a13f854b485328eddbc6d (diff)
downloadgcc-c1f0ed3b9c82577658e22323060306f8471491c9.zip
gcc-c1f0ed3b9c82577658e22323060306f8471491c9.tar.gz
gcc-c1f0ed3b9c82577658e22323060306f8471491c9.tar.bz2
i386: Fix mode of ZERO_EXTRACT RTXes, remove ext_register_operand predicate.
The mode of ZERO_EXTRACT RTX should match the mode of its LOC register operand. The mode should be HI, SI or DImode to enable combine to synthesize extractions from HImode and DImode operands, in addition to existing SImode. Further, these changes tighten allowed modes for extv, extzv and insv named patterns and finally enable removal of ext_register_operand special predicate. 2020-18-06 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/i386.md (*cmpqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *cmpqi_ext_1. (*cmpqi_ext<mode>_2): Ditto. Rename from *cmpqi_ext_2. (*cmpqi_ext<mode>_3): Ditto. Rename from *cmpqi_ext_3. (*cmpqi_ext<mode>_4): Ditto. Rename from *cmpqi_ext_4. (cmpi_ext_3): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*extv<mode>): Use SWI24 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzv<mode>): Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzvqi): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzvqi_mem_rex64 and corresponding peephole2): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (@insv<mode>_1): Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*insvqi_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*insvqi_2): Ditto. (*insvqi_3): Ditto. (*insvqi_1_mem_rex64 and corresponding peephole2): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (addqi_ext_1): New expander. (*addqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *addqi_ext_1. (*addqi_ext<mode>_2): Ditto. Rename from *addqi_ext_2. (divmodqi4): Use HImode instead of SImode for ZERO_EXTRACT RTX. (udivmodqi4): Ditto. (testqi_ext_1): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*testqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *testqi_ext_1. (*testqi_ext<mode>_2): Ditto. Rename from *testqi_ext_2. (andqi_ext_1): New expander. (*andqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from andqi_ext_1. (*andqi_ext<mode>_1_cc): Ditto. Rename from *andqi_ext_1_cc. (*andqi_ext<mode>_2): Ditto. Rename from *andqi_ext_2. (*<code>qi_ext<mode>_1): Ditto. Rename from *<code>qi_ext_1. (*<code>qi_ext<mode>_2): Ditto. Rename from *<code>qi_ext_2. (xorqi_ext_1_cc): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*xorqi_ext<mode>_1_cc): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *xorqi_ext_1_cc. * config/i386/i386-expand.c (ix86_split_idivmod): Emit ZERO_EXTRACT in mode, matching its first operand. (promote_duplicated_reg): Update for renamed insv<mode>_1. * config/i386/predicates.md (ext_register_operand): Remove predicate. gcc/testsuite/ChangeLog: * gcc.target/i386/pr78904-1a.c: New test. * gcc.target/i386/pr78904-1b.c: Ditto. * gcc.target/i386/pr78904-2a.c: Ditto. * gcc.target/i386/pr78904-2b.c: Ditto. * gcc.target/i386/pr78904-3a.c: Ditto. * gcc.target/i386/pr78904-3b.c: Ditto. * gcc.target/i386/pr78904-4a.c: Ditto. * gcc.target/i386/pr78904-4b.c: Ditto. * gcc.target/i386/pr78904-5a.c: Ditto. * gcc.target/i386/pr78904-5b.c: Ditto. * gcc.target/i386/pr78904-6a.c: Ditto. * gcc.target/i386/pr78904-6b.c: Ditto. * gcc.target/i386/pr78967-1a.c: Ditto. * gcc.target/i386/pr78967-1b.c: Ditto. * gcc.target/i386/pr78967-2a.c: Ditto. * gcc.target/i386/pr78967-2b.c: Ditto.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions