diff options
author | Christoph Müllner <christoph.muellner@vrull.eu> | 2022-08-08 17:48:20 +0200 |
---|---|---|
committer | Philipp Tomsich <philipp.tomsich@vrull.eu> | 2023-03-15 09:58:18 +0100 |
commit | 8e7ffe126debfbc59e2d359ef3c37899327e2055 (patch) | |
tree | a29473c96d4abd643c63ddaa1e9f7b520dde9359 /gcc/fortran | |
parent | c493fa3892487c22d0bdd817361a02bd523fc2e7 (diff) | |
download | gcc-8e7ffe126debfbc59e2d359ef3c37899327e2055.zip gcc-8e7ffe126debfbc59e2d359ef3c37899327e2055.tar.gz gcc-8e7ffe126debfbc59e2d359ef3c37899327e2055.tar.bz2 |
riscv: thead: Add support for the XTheadCondMov ISA extensions
This patch adds support for XTheadCondMov ISA extension.
The extension brings a one-sided conditional move (no else-assignment).
Given that GCC has a great if-conversion pass, we don't need to do much,
besides properly expanding mov<mode>cc accordingly and adjust the cost
model.
gcc/ChangeLog:
* config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
* config/riscv/riscv-protos.h (riscv_expand_conditional_move):
Add prototype.
* config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
XTheadCondMov.
(riscv_expand_conditional_move): New function.
(riscv_expand_conditional_move_onesided): New function.
* config/riscv/riscv.md: Add support for XTheadCondMov.
* config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
support for XTheadCondMov.
(*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/xtheadcondmov-mveqz-imm-eqz.c: New test.
* gcc.target/riscv/xtheadcondmov-mveqz-imm-not.c: New test.
* gcc.target/riscv/xtheadcondmov-mveqz-reg-eqz.c: New test.
* gcc.target/riscv/xtheadcondmov-mveqz-reg-not.c: New test.
* gcc.target/riscv/xtheadcondmov-mvnez-imm-cond.c: New test.
* gcc.target/riscv/xtheadcondmov-mvnez-imm-nez.c: New test.
* gcc.target/riscv/xtheadcondmov-mvnez-reg-cond.c: New test.
* gcc.target/riscv/xtheadcondmov-mvnez-reg-nez.c: New test.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions