6
6
/* SPDX-License-Identifier: BSD-2-Clause */
7
7
/*=======================================================================================*/
8
8
9
- /* ********************************************************************* */
10
- /* This file specifies the compressed floating-point instructions.
11
- *
12
- * These instructions are only legal if misa[C] and misa[D]
13
- * are set.
14
- */
9
+ enum clause extension = Ext_Zcd
10
+ function clause extensionEnabled(Ext_Zcd) = extensionEnabled(Ext_Zca) & extensionEnabled(Ext_D) & (sizeof(xlen) == 32 | sizeof(xlen) == 64)
15
11
16
- /* ****************************************************************** */
17
12
union clause ast = C_FLDSP : (bits(6), regidx)
18
13
19
- mapping clause encdec_compressed = C_FLDSP(ui86 @ ui5 @ ui43, rd)
20
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
21
- <-> 0b001 @ ui5 : bits(1) @ rd : regidx @ ui43 : bits(2) @ ui86 : bits(3) @ 0b10
22
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
14
+ mapping clause encdec_compressed = C_FLDSP(ui86 @ ui5 @ ui43, rd) if extensionEnabled(Ext_Zcd)
15
+ <-> 0b001 @ ui5 : bits(1) @ rd : regidx @ ui43 : bits(2) @ ui86 : bits(3) @ 0b10 if extensionEnabled(Ext_Zcd)
23
16
24
17
function clause execute (C_FLDSP(uimm, rd)) = {
25
18
let imm : bits(12) = zero_extend(uimm @ 0b000);
@@ -34,10 +27,8 @@ mapping clause assembly = C_FLDSP(uimm, rd)
34
27
/* ****************************************************************** */
35
28
union clause ast = C_FSDSP : (bits(6), regidx)
36
29
37
- mapping clause encdec_compressed = C_FSDSP(ui86 @ ui53, rs2)
38
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
39
- <-> 0b101 @ ui53 : bits(3) @ ui86 : bits(3) @ rs2 : regidx @ 0b10
40
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
30
+ mapping clause encdec_compressed = C_FSDSP(ui86 @ ui53, rs2) if extensionEnabled(Ext_Zcd)
31
+ <-> 0b101 @ ui53 : bits(3) @ ui86 : bits(3) @ rs2 : regidx @ 0b10 if extensionEnabled(Ext_Zcd)
41
32
42
33
function clause execute (C_FSDSP(uimm, rs2)) = {
43
34
let imm : bits(12) = zero_extend(uimm @ 0b000);
@@ -52,10 +43,8 @@ mapping clause assembly = C_FSDSP(uimm, rs2)
52
43
/* ****************************************************************** */
53
44
union clause ast = C_FLD : (bits(5), cregidx, cregidx)
54
45
55
- mapping clause encdec_compressed = C_FLD(ui76 @ ui53, rs1, rd)
56
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
57
- <-> 0b001 @ ui53 : bits(3) @ rs1 : cregidx @ ui76 : bits(2) @ rd : cregidx @ 0b00
58
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
46
+ mapping clause encdec_compressed = C_FLD(ui76 @ ui53, rs1, rd) if extensionEnabled(Ext_Zcd)
47
+ <-> 0b001 @ ui53 : bits(3) @ rs1 : cregidx @ ui76 : bits(2) @ rd : cregidx @ 0b00 if extensionEnabled(Ext_Zcd)
59
48
60
49
function clause execute (C_FLD(uimm, rsc, rdc)) = {
61
50
let imm : bits(12) = zero_extend(uimm @ 0b000);
@@ -72,10 +61,8 @@ mapping clause assembly = C_FLD(uimm, rsc, rdc)
72
61
/* ****************************************************************** */
73
62
union clause ast = C_FSD : (bits(5), cregidx, cregidx)
74
63
75
- mapping clause encdec_compressed = C_FSD(ui76 @ ui53, rs1, rs2)
76
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
77
- <-> 0b101 @ ui53 : bits(3) @ rs1 : bits(3) @ ui76 : bits(2) @ rs2 : bits(3) @ 0b00
78
- if (sizeof(xlen) == 32 | sizeof(xlen) == 64) & extensionEnabled(Ext_C) & extensionEnabled(Ext_D)
64
+ mapping clause encdec_compressed = C_FSD(ui76 @ ui53, rs1, rs2) if extensionEnabled(Ext_Zcd)
65
+ <-> 0b101 @ ui53 : bits(3) @ rs1 : bits(3) @ ui76 : bits(2) @ rs2 : bits(3) @ 0b00 if extensionEnabled(Ext_Zcd)
79
66
80
67
function clause execute (C_FSD(uimm, rsc1, rsc2)) = {
81
68
let imm : bits(12) = zero_extend(uimm @ 0b000);
0 commit comments