Skip to content
This repository was archived by the owner on Aug 17, 2022. It is now read-only.

Commit dcfc944

Browse files
linsinan1995sinan-lin
authored andcommitted
fix rdov and clrov and remove persudo insn in DECLARE_INSN
1 parent ebd2150 commit dcfc944

File tree

7 files changed

+34
-13
lines changed

7 files changed

+34
-13
lines changed

gas/config/tc-riscv.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ enum riscv_csr_class
6464
CSR_CLASS_I,
6565
CSR_CLASS_I_32, /* rv32 only */
6666
CSR_CLASS_F, /* f-ext only */
67+
CSR_CLASS_P, /* rvp only */
6768
CSR_CLASS_DEBUG /* debug CSR */
6869
};
6970

@@ -868,6 +869,10 @@ riscv_csr_address (const char *csr_name,
868869
result = riscv_subset_supports ("f");
869870
need_check_version = FALSE;
870871
break;
872+
case CSR_CLASS_P:
873+
result = riscv_subset_supports ("zpn");
874+
need_check_version = FALSE;
875+
break;
871876
case CSR_CLASS_DEBUG:
872877
need_check_version = FALSE;
873878
break;

gas/testsuite/gas/riscv/insn-dsp.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#as: -march=rv32gc_zpn_zpsf
22
#source: insn-dsp.s
3-
#objdump: -d
3+
#objdump: -d -M no-aliases
4+
45

56
.*:[ ]+file format .*
67

@@ -230,8 +231,8 @@ Disassembly of section .text:
230231
[ ]+.*:[ ]+.*[ ]+uraddw[ ]+a1,a2,a3
231232
[ ]+.*:[ ]+.*[ ]+rsubw[ ]+a1,a2,a3
232233
[ ]+.*:[ ]+.*[ ]+ursubw[ ]+a1,a2,a3
233-
[ ]+.*:[ ]+.*[ ]+csrr[ ]+a1,satp
234-
[ ]+.*:[ ]+.*[ ]+csrrci[ ]+a1,satp,1
234+
[ ]+.*:[ ]+.*[ ]+csrrs[ ]+a1,vxsat,zero
235+
[ ]+.*:[ ]+.*[ ]+csrrci[ ]+zero,vxsat,1
235236
[ ]+.*:[ ]+.*[ ]+ave[ ]+a1,a2,a3
236237
[ ]+.*:[ ]+.*[ ]+sra.u[ ]+a1,a2,a3
237238
[ ]+.*:[ ]+.*[ ]+srai.u[ ]+a1,a2,5

gas/testsuite/gas/riscv/insn-dsp.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ dsp:
266266
ursubw a1, a2, a3
267267

268268
# Table 23. OV (Overflow) flag Set/Clear Instructions (2)
269-
csrr a1, satp #rdov a1
270-
csrrci a1, satp, 1 #clrov
269+
rdov a1
270+
clrov
271271

272272
# Table 24. Non-SIMD Miscellaneous Instructions (9)
273273
ave a1, a2, a3

gas/testsuite/gas/riscv/rvp_csr.d

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#as: -march=rv32gc_zpn
2+
#objdump: -dr
3+
4+
.*:[ ]+file format .*
5+
6+
7+
Disassembly of section .text:
8+
9+
0+000 <rvp>:
10+
[ ]+[0-9a-f]+:[ ]+00905073[ ]+csrwi[ ]+vxsat,0
11+
[ ]+[0-9a-f]+:[ ]+0090f073[ ]+csrci[ ]+vxsat,1
12+
[ ]+[0-9a-f]+:[ ]+009022f3[ ]+csrr[ ]+t0,vxsat

gas/testsuite/gas/riscv/rvp_csr.s

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
rvp:
2+
csrwi vxsat,0
3+
csrci vxsat,1
4+
csrr t0,vxsat

include/opcode/riscv-opc.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,10 +1106,6 @@
11061106
#define MASK_ZUNPKD831 0xfff0707f
11071107
#define MATCH_ZUNPKD832 0xad700077
11081108
#define MASK_ZUNPKD832 0xfff0707f
1109-
#define MATCH_RDOV 0x80102073
1110-
#define MASK_RDOV 0xfffff07f
1111-
#define MATCH_CLROV 0x8010f073
1112-
#define MASK_CLROV 0xffffffff
11131109
#define MATCH_ADD32 0x40002077
11141110
#define MASK_ADD32 0xfe00707f
11151111
#define MATCH_CRAS32 0x44002077
@@ -1525,6 +1521,8 @@
15251521
#define CSR_TCONTROL 0x7a5
15261522
#define CSR_MCONTEXT 0x7a8
15271523
#define CSR_SCONTEXT 0x7aa
1524+
/* RVP CSR */
1525+
#define CSR_VXSAT 0x009
15281526
#endif /* RISCV_ENCODING_H */
15291527
#ifdef DECLARE_INSN
15301528
DECLARE_INSN(slli_rv32, MATCH_SLLI_RV32, MASK_SLLI_RV32)
@@ -2060,8 +2058,6 @@ DECLARE_INSN(zunpkd820, MATCH_ZUNPKD820, MASK_ZUNPKD820)
20602058
DECLARE_INSN(zunpkd830, MATCH_ZUNPKD830, MASK_ZUNPKD830)
20612059
DECLARE_INSN(zunpkd831, MATCH_ZUNPKD831, MASK_ZUNPKD831)
20622060
DECLARE_INSN(zunpkd832, MATCH_ZUNPKD832, MASK_ZUNPKD832)
2063-
DECLARE_INSN(rdov, MATCH_RDOV, MASK_RDOV)
2064-
DECLARE_INSN(clrov, MATCH_CLROV, MASK_CLROV)
20652061
DECLARE_INSN(add32, MATCH_ADD32, MASK_ADD32)
20662062
DECLARE_INSN(cras32, MATCH_CRAS32, MASK_CRAS32)
20672063
DECLARE_INSN(crsa32, MATCH_CRSA32, MASK_CRSA32)
@@ -2081,7 +2077,6 @@ DECLARE_INSN(khmtt16, MATCH_KHMTT16, MASK_KHMTT16)
20812077
DECLARE_INSN(kmabb32, MATCH_KMABB32, MASK_KMABB32)
20822078
DECLARE_INSN(kmabt32, MATCH_KMABT32, MASK_KMABT32)
20832079
DECLARE_INSN(kmatt32, MATCH_KMATT32, MASK_KMATT32)
2084-
DECLARE_INSN(kmada32, MATCH_KMADA32, MASK_KMADA32)
20852080
DECLARE_INSN(kmaxda32, MATCH_KMAXDA32, MASK_KMAXDA32)
20862081
DECLARE_INSN(kmds32, MATCH_KMDA32, MASK_KMDA32)
20872082
DECLARE_INSN(kmxda32, MATCH_KMXDA32, MASK_KMXDA32)
@@ -2398,6 +2393,7 @@ DECLARE_CSR(tinfo, CSR_TINFO, CSR_CLASS_DEBUG, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
23982393
DECLARE_CSR(tcontrol, CSR_TCONTROL, CSR_CLASS_DEBUG, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
23992394
DECLARE_CSR(mcontext, CSR_MCONTEXT, CSR_CLASS_DEBUG, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
24002395
DECLARE_CSR(scontext, CSR_SCONTEXT, CSR_CLASS_DEBUG, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
2396+
DECLARE_CSR(vxsat, CSR_VXSAT, CSR_CLASS_P, ISA_SPEC_CLASS_DRAFT, PRIV_SPEC_CLASS_DRAFT)
24012397
#endif /* DECLARE_CSR */
24022398
#ifdef DECLARE_CSR_ALIAS
24032399
DECLARE_CSR_ALIAS(ubadaddr, CSR_UTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)

opcodes/riscv-opc.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ const char * const riscv_fpr_names_abi[NFPR] =
8888
#define MATCH_SHAMT_REV_64 (0b111111 << 20)
8989
#define MATCH_SHAMT_REV8_H (0b1000 << 20)
9090
#define MATCH_SHAMT_ORC_B (0b00111 << OP_SH_SHAMT)
91+
#define MATCH_CLROV (MATCH_CSRRCI | (CSR_VXSAT << OP_SH_CSR) | (1 << OP_SH_RS1))
92+
#define MATCH_RDOV (MATCH_CSRRS|(CSR_VXSAT << OP_SH_CSR))
93+
#define MASK_RDOV (0xffffffffU ^ MASK_RD)
9194

9295
static int
9396
match_opcode (const struct riscv_opcode *op, insn_t insn)
@@ -1091,7 +1094,7 @@ const struct riscv_opcode riscv_opcodes[] =
10911094
{"zunpkd831", 0, INSN_CLASS_ZPN, "d,s", MATCH_ZUNPKD831, MASK_ZUNPKD831, match_opcode, 0 },
10921095
{"zunpkd832", 0, INSN_CLASS_ZPN, "d,s", MATCH_ZUNPKD832, MASK_ZUNPKD832, match_opcode, 0 },
10931096
{"rdov", 0, INSN_CLASS_ZPN, "d", MATCH_RDOV, MASK_RDOV, match_opcode, INSN_ALIAS },
1094-
{"clrov", 0, INSN_CLASS_ZPN, "", MATCH_CLROV, MASK_CLROV, match_opcode, INSN_ALIAS },
1097+
{"clrov", 0, INSN_CLASS_ZPN, "", MATCH_CLROV, 0xffffffffU, match_opcode, INSN_ALIAS },
10951098
{"add32", 64, INSN_CLASS_ZPN, "d,s,t", MATCH_ADD32, MASK_ADD32, match_opcode, 0 },
10961099
{"cras32", 64, INSN_CLASS_ZPN, "d,s,t", MATCH_CRAS32, MASK_CRAS32, match_opcode, 0 },
10971100
{"crsa32", 64, INSN_CLASS_ZPN, "d,s,t", MATCH_CRSA32, MASK_CRSA32, match_opcode, 0 },

0 commit comments

Comments
 (0)