update split out funct5 into separate tables
[libreriscv.git] / rv_major_opcode_1010011.mdwn
1 # Main FP opcode 1010011 table
2
3 [[!table data="""
4 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
5 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
6 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
7 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
8 00000 | xx | rs2 | rs1 | rm | rd | 1010011 | FADD.xx |
9 00001 | xx | rs2 | rs1 | rm | rd | 1010011 | FSUB.xx |
10 00010 | xx | rs2 | rs1 | rm | rd | 1010011 | FMUL.xx |
11 00011 | xx | rs2 | rs1 | rm | rd | 1010011 | FDIV.xx |
12 00100 | xx | rs2 | rs1 | yyy | rd | 1010011 | tb=00100 |
13 00101 | xx | rs2 | rs1 | yyy | rd | 1010011 | tb=00101 |
14 00110 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
15 00111 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
16 01000 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
17 01001 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
18 01010 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
19 01011 | xx | xxxxx | rs1 | yyy | rd | 1010011 | tb=01011 |
20 01100 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
21 01101 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
22 01110 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
23 01111 | xx | xxxxx | rs1 | yyy | rd | 1010011 | tb=01111 |
24 10000 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
25 10001 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
26 10010 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
27 10011 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
28 10100 | xx | rs2 | rs1 | yyy | rd | 1010011 | tb=10100 |
29 10101 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
30 10110 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
31 10111 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
32 11000 | xx | xxxxx | rs1 | yyy | rd | 1010011 | tb=11000 |
33 11001 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
34 11010 | xx | xxxxx | rs1 | yyy | rd | 1010011 | tb=11010 |
35 11100 | xx | xxxxx | rs1 | 000 | rd | 1010011 | tb=11100 |
36 11101 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
37 11110 | xx | xxxxx | rs1 | 000 | rd | 1010011 | tb=11110 |
38 11111 | xx | rs2 | rs1 | yyy | rd | 1010011 | ? |
39 """]]
40
41 ## funct5 = 00100
42
43 [[!table data="""
44 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
45 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
46 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
47 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
48 00100 | xx | rs2 | rs1 | 000 | rd | 1010011 | FSGNJ.xx |
49 00100 | xx | rs2 | rs1 | 001 | rd | 1010011 | FSGNJN.xx |
50 00100 | xx | rs2 | rs1 | 010 | rd | 1010011 | FSGNJX.xx |
51 00100 | xx | rs2 | rs1 | 011 | rd | 1010011 | ?f3=011 |
52 00100 | xx | rs2 | rs1 | 100 | rd | 1010011 | ?f3=100 |
53 00100 | xx | rs2 | rs1 | 101 | rd | 1010011 | ?f3=101 |
54 00100 | xx | rs2 | rs1 | 110 | rd | 1010011 | ?f3=110 |
55 00100 | xx | rs2 | rs1 | 111 | rd | 1010011 | ?f3=111 |
56 """]]
57
58 # funct5 = 00101
59
60 [[!table data="""
61 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
62 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
63 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
64 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
65 00101 | xx | rs2 | rs1 | 000 | rd | 1010011 | FMIN.S |
66 00101 | xx | rs2 | rs1 | 001 | rd | 1010011 | FMAX.S |
67 00101 | xx | rs2 | rs1 | 010 | rd | 1010011 | ?f3=010 |
68 00101 | xx | rs2 | rs1 | 011 | rd | 1010011 | ?f3=011 |
69 00101 | xx | rs2 | rs1 | 100 | rd | 1010011 | ?f3=100 |
70 00101 | xx | rs2 | rs1 | 101 | rd | 1010011 | ?f3=101 |
71 00101 | xx | rs2 | rs1 | 110 | rd | 1010011 | ?f3=110 |
72 00101 | xx | rs2 | rs1 | 111 | rd | 1010011 | ?f3=111 |
73 """]]
74
75 # funct5 = 01011
76
77 [[!table data="""
78 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
79 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
80 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
81 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
82 01011 | xx | 00000 | rs1 | yyy | rd | 1010011 | FSQRT.xx |
83 01011 | xx | rs2!=0 | rs1 | yyy | rd | 1010011 | ?rs2 |
84 """]]
85
86 # funct5 = 01111
87
88 [[!table data="""
89 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
90 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
91 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
92 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
93 01111 | xx | 00000 | rs1 | yyy | rd | 1010011 | FRSQRT.xx |
94 01111 | xx | rs2!=0 | rs1 | yyy | rd | 1010011 | ?rs2 |
95 """]]
96
97 # funct5 = 10100
98
99 [[!table data="""
100 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
101 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
102 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
103 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
104 10100 | xx | rs2 | rs1 | 000 | rd | 1010011 | FLE.xx |
105 10100 | xx | rs2 | rs1 | 001 | rd | 1010011 | FLT.xx |
106 10100 | xx | rs2 | rs1 | 010 | rd | 1010011 | FEQ.xx |
107 10100 | xx | rs2 | rs1 | 011 | rd | 1010011 | ?f3=011 |
108 10100 | xx | rs2 | rs1 | 100 | rd | 1010011 | ?f3=100 |
109 10100 | xx | rs2 | rs1 | 101 | rd | 1010011 | ?f3=101 |
110 10100 | xx | rs2 | rs1 | 110 | rd | 1010011 | ?f3=110 |
111 10100 | xx | rs2 | rs1 | 111 | rd | 1010011 | ?f3=111 |
112 """]]
113
114 # funct5 = 11000
115
116 [[!table data="""
117 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
118 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
119 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
120 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
121 11000 | xx | 00000 | rs1 | rm | rd | 1010011 | FCVT.W.xx |
122 11000 | xx | 00001 | rs1 | rm | rd | 1010011 | FCVT.WU.xx |
123 11000 | xx | 00010 | rs1 | rm | rd | 1010011 | FCVT.L.xx |
124 11000 | xx | 00011 | rs1 | rm | rd | 1010011 | FCVT.LU.xx |
125 11000 | xx | xxxxx | rs1 | rm | rd | 1010011 | rs2? |
126 """]]
127
128 # funct5 = 11010
129
130 [[!table data="""
131 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
132 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
133 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
134 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
135 11010 | xx | 00000 | rs1 | rm | rd | 1010011 | FCVT.xx.W |
136 11010 | xx | 00001 | rs1 | rm | rd | 1010011 | FCVT.xx.WU |
137 11010 | xx | 00010 | rs1 | rm | rd | 1010011 | FCVT.xx.L |
138 11010 | xx | 00011 | rs1 | rm | rd | 1010011 | FCVT.xx.LU |
139 11010 | xx | xxxxx | rs1 | rm | rd | 1010011 | rs2? |
140 """]]
141
142 # funct5 = 11100
143
144 [[!table data="""
145 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
146 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
147 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
148 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
149 11100 | xx | 00000 | rs1 | 000 | rd | 1010011 | FMV.xx.W |
150 11100 | xx | 00000 | rs1 | 001 | rd | 1010011 | FCLASS.xx |
151 11100 | xx | xxxxx | rs1 | yyy | rd | 1010011 | rs2? f3? |
152 """]]
153
154 # funct5 = 11110
155
156 [[!table data="""
157 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
158 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
159 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
160 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
161 11110 | xx | 00000 | rs1 | 000 | rd | 1010011 | FMV.W.xx |
162 11110 | xx | xxxxx | rs1 | yyy | rd | 1010011 | rs2? f3? |
163 """]]
164
165 # funct5 = ?????
166
167 [[!table data="""
168 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
169 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
170 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
171 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
172 """]]
173