aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.cc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2023-04-20 16:51:56 +0200
committerUros Bizjak <ubizjak@gmail.com>2023-04-20 16:52:39 +0200
commit272484dae6b5264baa0f41eba80a9521e9b7ecf5 (patch)
tree69b903033165f20273cb82f2f031f3daedcd0114 /gcc/cp/tree.cc
parent07e2576d6f344acab338deeb051845c90c1cf6a3 (diff)
downloadgcc-272484dae6b5264baa0f41eba80a9521e9b7ecf5.zip
gcc-272484dae6b5264baa0f41eba80a9521e9b7ecf5.tar.gz
gcc-272484dae6b5264baa0f41eba80a9521e9b7ecf5.tar.bz2
i386: Handle sign-extract for QImode operations with high registers [PR78952]
Introduce extract_operator predicate to handle both, zero-extract and sign-extract extract operations with expressions like: (subreg:QI (zero_extract:SWI248 (match_operand 1 "int248_register_operand" "0") (const_int 8) (const_int 8)) 0) As shown in the testcase, this will enable generation of QImode instructions with high registers when signed arguments are used. gcc/ChangeLog: PR target/78952 * config/i386/predicates.md (extract_operator): New predicate. * config/i386/i386.md (any_extract): Remove code iterator. (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate. (*cmpqi_ext<mode>_1): Ditto. (*cmpqi_ext<mode>_2): Ditto. (*cmpqi_ext<mode>_3_mem_rex64): Ditto. (*cmpqi_ext<mode>_3): Ditto. (*cmpqi_ext<mode>_4): Ditto. (*extzvqi_mem_rex64): Ditto. (*extzvqi): Ditto. (*insvqi_2): Ditto. (*extendqi<SWI24:mode>_ext_1): Ditto. (*addqi_ext<mode>_0): Ditto. (*addqi_ext<mode>_1): Ditto. (*addqi_ext<mode>_2): Ditto. (*subqi_ext<mode>_0): Ditto. (*subqi_ext<mode>_2): Ditto. (*testqi_ext<mode>_1): Ditto. (*testqi_ext<mode>_2): Ditto. (*andqi_ext<mode>_0): Ditto. (*andqi_ext<mode>_1): Ditto. (*andqi_ext<mode>_1_cc): Ditto. (*andqi_ext<mode>_2): Ditto. (*<any_or:code>qi_ext<mode>_0): Ditto. (*<any_or:code>qi_ext<mode>_1): Ditto. (*<any_or:code>qi_ext<mode>_2): Ditto. (*xorqi_ext<mode>_1_cc): Ditto. (*negqi_ext<mode>_2): Ditto. (*ashlqi_ext<mode>_2): Ditto. (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto. gcc/testsuite/ChangeLog: PR target/78952 * gcc.target/i386/pr78952-4.c: New test.
Diffstat (limited to 'gcc/cp/tree.cc')
0 files changed, 0 insertions, 0 deletions