-
- Downloads
RISC-V: Use bseti/bclri/binvi to extend reach of ori/andi/xori
Sequences of the form "a | C" and "a ^ C" with C being the positive half of a signed immediate's range with one extra bit set in addition are mapped to ori/xori and one bseti/binvi to avoid using a temporary (and a multi-insn sequence to load C into that temporary). Something similar holds for "a & ~C" being representable as either bclri + bclri or bclri + andi. gcc/ChangeLog: * config/riscv/bitmanip.md (*<or_optab>i<mode>_extrabit): New pattern for binvi+binvi/xori and bseti+bseti/ori (*andi<mode>_extrabit): New pattern for bclri+bclri/andi * config/riscv/iterators.md (any_or): Match or and ior * config/riscv/predicates.md (const_twobits_operand): New predicate. (uimm_extra_bit_operand): New predicate. (uimm_extra_bit_or_twobits): New predicate. (not_uimm_extra_bit_operand): New predicate. (not_uimm_extra_bit_or_nottwobits): New predicate. * config/riscv/riscv.h (UIMM_EXTRA_BIT_OPERAND): Helper for the uimm_extra_bit_operand and not_uimm_extra_bit_operand predicates. gcc/testsuite/ChangeLog: * gcc.target/riscv/zbs-bclri.c: Rename * gcc.target/riscv/zbs-bclri-01.c: Renamed from above. * gcc.target/riscv/zbs-bclri-02.c: New test. * gcc.target/riscv/zbs-binvi.c: New test. * gcc.target/riscv/zbs-bseti.c: New test.
Showing
- gcc/config/riscv/bitmanip.md 37 additions, 0 deletionsgcc/config/riscv/bitmanip.md
- gcc/config/riscv/iterators.md 8 additions, 0 deletionsgcc/config/riscv/iterators.md
- gcc/config/riscv/predicates.md 24 additions, 5 deletionsgcc/config/riscv/predicates.md
- gcc/config/riscv/riscv.h 8 additions, 0 deletionsgcc/config/riscv/riscv.h
- gcc/testsuite/gcc.target/riscv/zbs-bclri-01.c 0 additions, 0 deletionsgcc/testsuite/gcc.target/riscv/zbs-bclri-01.c
- gcc/testsuite/gcc.target/riscv/zbs-bclri-02.c 27 additions, 0 deletionsgcc/testsuite/gcc.target/riscv/zbs-bclri-02.c
- gcc/testsuite/gcc.target/riscv/zbs-binvi.c 22 additions, 0 deletionsgcc/testsuite/gcc.target/riscv/zbs-binvi.c
- gcc/testsuite/gcc.target/riscv/zbs-bseti.c 27 additions, 0 deletionsgcc/testsuite/gcc.target/riscv/zbs-bseti.c
Loading
Please register or sign in to comment