The following testcase started to ICE when .POPCOUNT matching has been added to match.pd; we had __builtin_popcount*, but nothing would use the popcounthi2 expander before. The problem is that the popcounthi2_z196 expander doesn't emit valid RTL: error: unrecognizable insn: (insn 138 137 139 27 (set (reg:SI 190) (ashift:SI (reg:HI 95 [ _105 ]) (const_int 8 [0x8]))) -1 (nil)) during RTL pass: vregs The following patch is an attempt to fix that, furthermore I've tried to slightly simplify it as well, it makes no sense to me to perform (x + (x << 8)) >> 8 when we need to either zero extend or mask the result at the end in order to avoid bits from above HImode to affect it, when we can do (x + (x >> 8)) & 0xff (or zero extension). 2020-02-03 Jakub Jelinek <jakub@redhat.com> PR target/93533 * config/s390/s390.md (popcounthi2_z196): Fix up expander to emit valid RTL to sum up the lowest and second lowest bytes of the popcnt result. * gcc.c-torture/compile/pr93533.c: New test. * gcc.target/s390/pr93533.c: New test.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
2064.md | Loading commit data... | |
2084.md | Loading commit data... | |
2097.md | Loading commit data... | |
2817.md | Loading commit data... | |
2827.md | Loading commit data... | |
2964.md | Loading commit data... | |
3906.md | Loading commit data... | |
8561.md | Loading commit data... | |
constraints.md | Loading commit data... | |
driver-native.c | Loading commit data... | |
htmintrin.h | Loading commit data... | |
htmxlintrin.h | Loading commit data... | |
linux.h | Loading commit data... | |
predicates.md | Loading commit data... | |
s390-builtin-types.def | Loading commit data... | |
s390-builtins.def | Loading commit data... | |
s390-builtins.h | Loading commit data... | |
s390-c.c | Loading commit data... | |
s390-d.c | Loading commit data... | |
s390-modes.def | Loading commit data... | |
s390-opts.h | Loading commit data... | |
s390-passes.def | Loading commit data... | |
s390-protos.h | Loading commit data... | |
s390.c | Loading commit data... | |
s390.h | Loading commit data... | |
s390.md | Loading commit data... | |
s390.opt | Loading commit data... | |
s390intrin.h | Loading commit data... | |
s390x.h | Loading commit data... | |
subst.md | Loading commit data... | |
t-linux64 | Loading commit data... | |
t-s390 | Loading commit data... | |
tpf.h | Loading commit data... | |
tpf.md | Loading commit data... | |
tpf.opt | Loading commit data... | |
vecintrin.h | Loading commit data... | |
vector.md | Loading commit data... | |
vx-builtins.md | Loading commit data... | |
x-native | Loading commit data... |