aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/method.c
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2020-06-18 20:12:48 +0200
committerUros Bizjak <ubizjak@gmail.com>2020-06-18 20:12:48 +0200
commite95395926a84a2406faefe0995295d199d595440 (patch)
treef74cbe8c782b094ca5c8635267af2d8f19656cf7 /gcc/cp/method.c
parent5acc654e380797bbf402bc3a0a67f9a6ac4c2a83 (diff)
downloadgcc-e95395926a84a2406faefe0995295d199d595440.zip
gcc-e95395926a84a2406faefe0995295d199d595440.tar.gz
gcc-e95395926a84a2406faefe0995295d199d595440.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/cp/method.c')
0 files changed, 0 insertions, 0 deletions