diff options
author | Jun Sha (Joshua) <cooper.joshua@linux.alibaba.com> | 2024-01-12 11:23:21 +0800 |
---|---|---|
committer | Christoph Müllner <christoph.muellner@vrull.eu> | 2024-01-18 15:39:52 +0100 |
commit | cdf4729f0889501c622cc1ad2df9377f2819cc07 (patch) | |
tree | 35123d4415c7d9ac31f7abed3df707a1d3ac5914 /gcc/expr.cc | |
parent | 0a41c3e49af36cde6792413051c7054eeccb63fb (diff) | |
download | gcc-cdf4729f0889501c622cc1ad2df9377f2819cc07.zip gcc-cdf4729f0889501c622cc1ad2df9377f2819cc07.tar.gz gcc-cdf4729f0889501c622cc1ad2df9377f2819cc07.tar.bz2 |
RISC-V: Fix register overlap issue for some xtheadvector instructions
For th.vmadc/th.vmsbc as well as narrowing arithmetic instructions
and floating-point compare instructions, an illegal instruction
exception will be raised if the destination vector register overlaps
a source vector register group.
To handle this issue, we add an attribute "spec_restriction" to disable
some alternatives for xtheadvector.
gcc/ChangeLog:
* config/riscv/riscv.md (none,thv,rvv): New attribute.
(no,yes): Add an attribute to disable alternative
for xtheadvector or RVV1.0.
* config/riscv/vector.md:
Disable alternatives that destination register overlaps
source register group for xtheadvector.
Co-authored-by: Jin Ma <jinma@linux.alibaba.com>
Co-authored-by: Xianmiao Qu <cooper.qu@linux.alibaba.com>
Co-authored-by: Christoph Müllner <christoph.muellner@vrull.eu>
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions