udb 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.data/cfgs/example_rv64_with_overlay.yaml +1 -0
- data/.data/cfgs/mc100-32-full-example.yaml +1 -0
- data/.data/cfgs/profile/RVA20S64.yaml +2 -0
- data/.data/cfgs/profile/RVA20U64.yaml +2 -0
- data/.data/cfgs/profile/RVA22S64.yaml +2 -0
- data/.data/cfgs/profile/RVA22U64.yaml +2 -0
- data/.data/cfgs/profile/RVA23S64.yaml +2 -0
- data/.data/cfgs/profile/RVA23U64.yaml +2 -0
- data/.data/cfgs/profile/RVB23S64.yaml +2 -0
- data/.data/cfgs/profile/RVB23U64.yaml +2 -0
- data/.data/cfgs/qc_iu.yaml +1 -0
- data/.data/cfgs/rv32-riscv-tests.yaml +1 -0
- data/.data/cfgs/rv32-vector.yaml +1 -0
- data/.data/cfgs/rv64-riscv-tests.yaml +1 -0
- data/.data/cfgs/rv64-vector.yaml +1 -0
- data/.data/spec/std/isa/csr/H/henvcfg.yaml +1 -1
- data/.data/spec/std/isa/csr/H/htimedeltah.yaml +1 -1
- data/.data/spec/std/isa/csr/Smctr/vsctrctl.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen0h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen1h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen2h.yaml +1 -1
- data/.data/spec/std/isa/csr/hstateen3h.yaml +1 -1
- data/.data/spec/std/isa/csr/instreth.yaml +1 -3
- data/.data/spec/std/isa/csr/minstreth.yaml +1 -1
- data/.data/spec/std/isa/csr/mstatus.yaml +1 -1
- data/.data/spec/std/isa/csr/mstatush.yaml +1 -1
- data/.data/spec/std/isa/csr/senvcfg.yaml +1 -1
- data/.data/spec/std/isa/csr/sepc.yaml +4 -3
- data/.data/spec/std/isa/csr/sip.yaml +1 -1
- data/.data/spec/std/isa/csr/sscratch.yaml +3 -2
- data/.data/spec/std/isa/csr/stval.yaml +3 -2
- data/.data/spec/std/isa/csr/stvec.yaml +5 -4
- data/.data/spec/std/isa/csr/time.yaml +1 -1
- data/.data/spec/std/isa/csr/timeh.yaml +1 -1
- data/.data/spec/std/isa/csr/vsepc.yaml +6 -5
- data/.data/spec/std/isa/csr/vstvec.yaml +5 -4
- data/.data/spec/std/isa/ext/M.yaml +4 -0
- data/.data/spec/std/isa/ext/Shgatpa.yaml +1 -0
- data/.data/spec/std/isa/ext/Zibi.yaml +29 -0
- data/.data/spec/std/isa/inst/B/roriw.yaml +1 -1
- data/.data/spec/std/isa/inst/B/rorw.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +3 -0
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +3 -0
- data/.data/spec/std/isa/inst/M/mul.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulh.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulhsu.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulhu.yaml +1 -3
- data/.data/spec/std/isa/inst/M/mulw.yaml +1 -3
- data/.data/spec/std/isa/inst/Zbb/ctzw.yaml +6 -1
- data/.data/spec/std/isa/inst/{Q → Zfa}/fltq.q.yaml +2 -2
- data/.data/spec/std/isa/inst/Zibi/beqi.yaml +45 -0
- data/.data/spec/std/isa/inst/Zibi/bnei.yaml +45 -0
- data/.data/spec/std/isa/inst/Zicbom/cbo.inval.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.yaml +63 -0
- data/.data/spec/std/isa/inst/Zicfiss/sspush.yaml +63 -0
- data/.data/spec/std/isa/inst/Zimop/mop.r.28.yaml +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.r.N.layout +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.rr.7.yaml +1 -2
- data/.data/spec/std/isa/inst/Zimop/mop.rr.N.layout +1 -2
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vandn.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vandn.vx.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vbrev8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrev8.v.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vrol.vx.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vi.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/{Zvbb → Zvkb}/vror.vx.yaml +1 -1
- data/.data/spec/std/isa/isa/globals.isa +1 -1
- data/.data/spec/std/isa/isa/util.idl +3 -3
- data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +9 -0
- data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +1 -1
- data/.data/spec/std/isa/param/MUTABLE_MISA_H.yaml +1 -1
- data/.data/spec/std/isa/param/MUTABLE_MISA_S.yaml +1 -1
- data/lib/udb/config.rb +1 -1
- data/lib/udb/version.rb +1 -1
- metadata +47 -46
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +0 -25
- data/.data/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +0 -25
- /data/.data/spec/std/isa/inst/{Smdbltrp → Smctr}/sctrclr.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fcvtmod.w.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fleq.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fleq.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fleq.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{F → Zfa}/fleq.s.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fli.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fli.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fli.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fltq.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fltq.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{F → Zfa}/fltq.s.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmaxm.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fmaxm.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fmaxm.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fminm.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fminm.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fminm.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmvh.x.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fmvh.x.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fmvp.d.x.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fmvp.q.x.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/fround.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/fround.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/fround.q.yaml +0 -0
- /data/.data/spec/std/isa/inst/{D → Zfa}/froundnx.d.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Zfh → Zfa}/froundnx.h.yaml +0 -0
- /data/.data/spec/std/isa/inst/{Q → Zfa}/froundnx.q.yaml +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: beqi
|
|
9
|
+
long_name: Branch if equal immediate
|
|
10
|
+
description: |
|
|
11
|
+
Branch to PC + offset if the value in register xs1 is equal to the XLEN-bit
|
|
12
|
+
comparison constant decoded from cimm.
|
|
13
|
+
|
|
14
|
+
The cimm field is not sign-extended: cimm == 0 encodes the value -1, and
|
|
15
|
+
cimm values 1 through 31 encode the corresponding positive integer values.
|
|
16
|
+
|
|
17
|
+
Raise a `MisalignedAddress` exception if the branch is taken and PC + offset is
|
|
18
|
+
misaligned.
|
|
19
|
+
definedBy:
|
|
20
|
+
extension:
|
|
21
|
+
name: Zibi
|
|
22
|
+
assembly: xs1, cimm, offset
|
|
23
|
+
encoding:
|
|
24
|
+
match: "-----------------010-----1100011"
|
|
25
|
+
variables:
|
|
26
|
+
- name: offset
|
|
27
|
+
location: 31|7|30-25|11-8
|
|
28
|
+
left_shift: 1
|
|
29
|
+
sign_extend: true
|
|
30
|
+
- name: cimm
|
|
31
|
+
location: 24-20
|
|
32
|
+
- name: xs1
|
|
33
|
+
location: 19-15
|
|
34
|
+
access:
|
|
35
|
+
s: always
|
|
36
|
+
u: always
|
|
37
|
+
vs: always
|
|
38
|
+
vu: always
|
|
39
|
+
operation(): |
|
|
40
|
+
XReg lhs = X[xs1];
|
|
41
|
+
XReg rhs = (cimm == 0) ? {MXLEN{1'b1}} : cimm;
|
|
42
|
+
|
|
43
|
+
if (lhs == rhs) {
|
|
44
|
+
jump_halfword($pc + $signed(offset));
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright (c) RISC-V International
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "inst_schema.json#"
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: bnei
|
|
9
|
+
long_name: Branch if not equal immediate
|
|
10
|
+
description: |
|
|
11
|
+
Branch to PC + offset if the value in register xs1 is not equal to the XLEN-bit
|
|
12
|
+
comparison constant decoded from cimm.
|
|
13
|
+
|
|
14
|
+
The cimm field is not sign-extended: cimm == 0 encodes the value -1, and
|
|
15
|
+
cimm values 1 through 31 encode the corresponding positive integer values.
|
|
16
|
+
|
|
17
|
+
Raise a `MisalignedAddress` exception if the branch is taken and PC + offset is
|
|
18
|
+
misaligned.
|
|
19
|
+
definedBy:
|
|
20
|
+
extension:
|
|
21
|
+
name: Zibi
|
|
22
|
+
assembly: xs1, cimm, offset
|
|
23
|
+
encoding:
|
|
24
|
+
match: "-----------------011-----1100011"
|
|
25
|
+
variables:
|
|
26
|
+
- name: offset
|
|
27
|
+
location: 31|7|30-25|11-8
|
|
28
|
+
left_shift: 1
|
|
29
|
+
sign_extend: true
|
|
30
|
+
- name: cimm
|
|
31
|
+
location: 24-20
|
|
32
|
+
- name: xs1
|
|
33
|
+
location: 19-15
|
|
34
|
+
access:
|
|
35
|
+
s: always
|
|
36
|
+
u: always
|
|
37
|
+
vs: always
|
|
38
|
+
vu: always
|
|
39
|
+
operation(): |
|
|
40
|
+
XReg lhs = X[xs1];
|
|
41
|
+
XReg rhs = (cimm == 0) ? {MXLEN{1'b1}} : cimm;
|
|
42
|
+
|
|
43
|
+
if (lhs != rhs) {
|
|
44
|
+
jump_halfword($pc + $signed(offset));
|
|
45
|
+
}
|
|
@@ -52,7 +52,7 @@ description: |
|
|
|
52
52
|
`cbo.inval` is ordered by `FENCE` instructions but not `FENCE.I` or `SFENCE.VMA`.
|
|
53
53
|
|
|
54
54
|
<%- if CACHE_BLOCK_SIZE.bit_length > [PMP_GRANULARITY, PMA_GRANULARITY].min -%>
|
|
55
|
-
Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.
|
|
55
|
+
Both PMP and PMA access control must be the same for all bytes in the block; otherwise, `cbo.inval` has UNSPECIFIED behavior.
|
|
56
56
|
<%- end -%>
|
|
57
57
|
|
|
58
58
|
Invalidate operations are treated as stores for page and access permissions. If permission checks fail,
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: sspopchk
|
|
9
|
+
long_name: Shadow Stack Pop and Check
|
|
10
|
+
description: |
|
|
11
|
+
SSPOPCHK pops a value from the shadow stack and checks it against link
|
|
12
|
+
register `xs1`. The encoding restricts `xs1` to `x1` or `x5`.
|
|
13
|
+
|
|
14
|
+
This instruction uses the `mop.r.28` codepoint provided by Zimop.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zicfiss
|
|
18
|
+
assembly: xs1
|
|
19
|
+
encoding:
|
|
20
|
+
match: "110011011100-----100000001110011"
|
|
21
|
+
variables:
|
|
22
|
+
- name: xs1
|
|
23
|
+
location: 19-15
|
|
24
|
+
not:
|
|
25
|
+
[
|
|
26
|
+
0,
|
|
27
|
+
2,
|
|
28
|
+
3,
|
|
29
|
+
4,
|
|
30
|
+
6,
|
|
31
|
+
7,
|
|
32
|
+
8,
|
|
33
|
+
9,
|
|
34
|
+
10,
|
|
35
|
+
11,
|
|
36
|
+
12,
|
|
37
|
+
13,
|
|
38
|
+
14,
|
|
39
|
+
15,
|
|
40
|
+
16,
|
|
41
|
+
17,
|
|
42
|
+
18,
|
|
43
|
+
19,
|
|
44
|
+
20,
|
|
45
|
+
21,
|
|
46
|
+
22,
|
|
47
|
+
23,
|
|
48
|
+
24,
|
|
49
|
+
25,
|
|
50
|
+
26,
|
|
51
|
+
27,
|
|
52
|
+
28,
|
|
53
|
+
29,
|
|
54
|
+
30,
|
|
55
|
+
31,
|
|
56
|
+
]
|
|
57
|
+
access:
|
|
58
|
+
s: always
|
|
59
|
+
u: always
|
|
60
|
+
vs: always
|
|
61
|
+
vu: always
|
|
62
|
+
data_independent_timing: false
|
|
63
|
+
operation(): |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/inst_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: inst_schema.json#
|
|
7
|
+
kind: instruction
|
|
8
|
+
name: sspush
|
|
9
|
+
long_name: Shadow Stack Push
|
|
10
|
+
description: |
|
|
11
|
+
SSPUSH pushes the value of link register `xs2` to the shadow stack.
|
|
12
|
+
The encoding restricts `xs2` to `x1` or `x5`.
|
|
13
|
+
|
|
14
|
+
This instruction uses the `mop.rr.7` codepoint provided by Zimop.
|
|
15
|
+
definedBy:
|
|
16
|
+
extension:
|
|
17
|
+
name: Zicfiss
|
|
18
|
+
assembly: xs2
|
|
19
|
+
encoding:
|
|
20
|
+
match: "1100111-----00000100000001110011"
|
|
21
|
+
variables:
|
|
22
|
+
- name: xs2
|
|
23
|
+
location: 24-20
|
|
24
|
+
not:
|
|
25
|
+
[
|
|
26
|
+
0,
|
|
27
|
+
2,
|
|
28
|
+
3,
|
|
29
|
+
4,
|
|
30
|
+
6,
|
|
31
|
+
7,
|
|
32
|
+
8,
|
|
33
|
+
9,
|
|
34
|
+
10,
|
|
35
|
+
11,
|
|
36
|
+
12,
|
|
37
|
+
13,
|
|
38
|
+
14,
|
|
39
|
+
15,
|
|
40
|
+
16,
|
|
41
|
+
17,
|
|
42
|
+
18,
|
|
43
|
+
19,
|
|
44
|
+
20,
|
|
45
|
+
21,
|
|
46
|
+
22,
|
|
47
|
+
23,
|
|
48
|
+
24,
|
|
49
|
+
25,
|
|
50
|
+
26,
|
|
51
|
+
27,
|
|
52
|
+
28,
|
|
53
|
+
29,
|
|
54
|
+
30,
|
|
55
|
+
31,
|
|
56
|
+
]
|
|
57
|
+
access:
|
|
58
|
+
s: always
|
|
59
|
+
u: always
|
|
60
|
+
vs: always
|
|
61
|
+
vu: always
|
|
62
|
+
data_independent_timing: false
|
|
63
|
+
operation(): |
|
|
@@ -33,8 +33,7 @@ access:
|
|
|
33
33
|
vu: always
|
|
34
34
|
data_independent_timing: false
|
|
35
35
|
hints:
|
|
36
|
-
- { $ref: inst/Zicfiss/sspopchk.
|
|
37
|
-
- { $ref: inst/Zicfiss/sspopchk.x5.yaml# }
|
|
36
|
+
- { $ref: inst/Zicfiss/sspopchk.yaml# }
|
|
38
37
|
- { $ref: inst/Zicfiss/ssrdp.yaml# }
|
|
39
38
|
operation(): |
|
|
40
39
|
X[xd] = 0;
|
|
@@ -50,8 +50,7 @@ access:
|
|
|
50
50
|
data_independent_timing: false
|
|
51
51
|
<% if n == 28 -%>
|
|
52
52
|
hints:
|
|
53
|
-
- { $ref: inst/Zicfiss/sspopchk.
|
|
54
|
-
- { $ref: inst/Zicfiss/sspopchk.x5.yaml# }
|
|
53
|
+
- { $ref: inst/Zicfiss/sspopchk.yaml# }
|
|
55
54
|
- { $ref: inst/Zicfiss/ssrdp.yaml# }
|
|
56
55
|
<% end -%>
|
|
57
56
|
operation(): |
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Performs a bitwise AND operation between vector register vs2 and the bitwise NOT of vector register vs1, storing results in vector register vd according to mask vm.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, vs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 000001-----------000-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Performs a bitwise AND operation between vector register vs2 and the bitwise NOT of scalar register xs1, storing results in vector register vd according to mask vm.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, xs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 000001-----------100-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Reverses the byte order within each element of vector register vs2, storing results in vector register vd according to mask vm. Similar to vrev8.v but with different encoding.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010010------01000010-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Reverses the byte order within each element of vector register vs2, storing results in vector register vd according to mask vm. This is equivalent to a byte-level reversal of each element.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010010------01001010-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Rotates each element in vector register vs2 left by the amount specified in vector register vs1, storing results in vector register vd according to mask vm. The rotation amount is taken modulo the element width.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, vs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010101-----------000-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Rotates each element in vector register vs2 left by the amount specified in scalar register xs1, storing results in vector register vd according to mask vm. The rotation amount is taken modulo the element width.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, xs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010101-----------100-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Rotates each element in vector register vs2 right by the immediate shift amount, storing results in vector register vd according to mask vm. The rotation amount is taken modulo the element width.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, imm, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 01010------------011-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Rotates each element in vector register vs2 right by the amount specified in vector register vs1, storing results in vector register vd according to mask vm. The rotation amount is taken modulo the element width.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, vs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010100-----------000-----1010111
|
|
@@ -11,7 +11,7 @@ description: |
|
|
|
11
11
|
Rotates each element in vector register vs2 right by the amount specified in scalar register xs1, storing results in vector register vd according to mask vm. The rotation amount is taken modulo the element width.
|
|
12
12
|
definedBy:
|
|
13
13
|
extension:
|
|
14
|
-
name:
|
|
14
|
+
name: Zvkb
|
|
15
15
|
assembly: vd, vs2, xs1, vm
|
|
16
16
|
encoding:
|
|
17
17
|
match: 010100-----------100-----1010111
|
|
@@ -3144,7 +3144,7 @@ function mstatus_sd_reset_value
|
|
|
3144
3144
|
fs_value = (!implemented?(ExtensionName::F)) ? 0 : MSTATUS_FS_LEGAL_VALUES[0];
|
|
3145
3145
|
}
|
|
3146
3146
|
if ((!implemented?(ExtensionName::V)) || ($array_size(MSTATUS_VS_LEGAL_VALUES) == 1)) {
|
|
3147
|
-
|
|
3147
|
+
vs_value = (!implemented?(ExtensionName::V)) ? 0 : MSTATUS_VS_LEGAL_VALUES[0];
|
|
3148
3148
|
}
|
|
3149
3149
|
|
|
3150
3150
|
return ((fs_value == 3) || (vs_value == 3)) ? 1 : 0;
|
|
@@ -25,6 +25,15 @@ schema:
|
|
|
25
25
|
type: boolean
|
|
26
26
|
maxItems: 32
|
|
27
27
|
minItems: 32
|
|
28
|
+
|
|
29
|
+
requirements:
|
|
30
|
+
idl(): |
|
|
31
|
+
for (U32 i = 3; i < 32; i++) {
|
|
32
|
+
(!HPM_COUNTER_EN[i]) -> !COUNTINHIBIT_EN[i];
|
|
33
|
+
}
|
|
34
|
+
reason: |
|
|
35
|
+
When mhpmcounter[i] is not implemented, it cannot be inhibited.
|
|
36
|
+
|
|
28
37
|
definedBy:
|
|
29
38
|
allOf:
|
|
30
39
|
- extension:
|
data/lib/udb/config.rb
CHANGED
|
@@ -238,7 +238,7 @@ module Udb
|
|
|
238
238
|
def initialize(data, info)
|
|
239
239
|
super(data, info)
|
|
240
240
|
|
|
241
|
-
@param_values = @data.key?("params") ? @data["params"] :
|
|
241
|
+
@param_values = @data.key?("params") ? @data["params"] : {}.freeze
|
|
242
242
|
|
|
243
243
|
@mxlen = @data.dig("params", "MXLEN")
|
|
244
244
|
|
data/lib/udb/version.rb
CHANGED