move FPRSQRT to funct5=01011, rs2=00001
[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 | 00001 | rs1 | yyy | rd | 1010011 | **FRSQRT.xx** |
84 01011 | xx | rs2!=0 | rs1 | yyy | rd | 1010011 | ?rs2 |
85 """]]
86
87 # funct5 = 10100
88
89 [[!table data="""
90 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
91 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
92 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
93 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
94 10100 | xx | rs2 | rs1 | 000 | rd | 1010011 | FLE.xx |
95 10100 | xx | rs2 | rs1 | 001 | rd | 1010011 | FLT.xx |
96 10100 | xx | rs2 | rs1 | 010 | rd | 1010011 | FEQ.xx |
97 10100 | xx | rs2 | rs1 | 011 | rd | 1010011 | ?f3=011 |
98 10100 | xx | rs2 | rs1 | 100 | rd | 1010011 | ?f3=100 |
99 10100 | xx | rs2 | rs1 | 101 | rd | 1010011 | ?f3=101 |
100 10100 | xx | rs2 | rs1 | 110 | rd | 1010011 | ?f3=110 |
101 10100 | xx | rs2 | rs1 | 111 | rd | 1010011 | ?f3=111 |
102 """]]
103
104 # funct5 = 11000
105
106 [[!table data="""
107 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
108 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
109 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
110 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
111 11000 | xx | 00000 | rs1 | rm | rd | 1010011 | FCVT.W.xx |
112 11000 | xx | 00001 | rs1 | rm | rd | 1010011 | FCVT.WU.xx |
113 11000 | xx | 00010 | rs1 | rm | rd | 1010011 | FCVT.L.xx |
114 11000 | xx | 00011 | rs1 | rm | rd | 1010011 | FCVT.LU.xx |
115 11000 | xx | xxxxx | rs1 | rm | rd | 1010011 | rs2? |
116 """]]
117
118 # funct5 = 11010
119
120 [[!table data="""
121 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
122 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
123 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
124 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
125 11010 | xx | 00000 | rs1 | rm | rd | 1010011 | FCVT.xx.W |
126 11010 | xx | 00001 | rs1 | rm | rd | 1010011 | FCVT.xx.WU |
127 11010 | xx | 00010 | rs1 | rm | rd | 1010011 | FCVT.xx.L |
128 11010 | xx | 00011 | rs1 | rm | rd | 1010011 | FCVT.xx.LU |
129 11010 | xx | xxxxx | rs1 | rm | rd | 1010011 | rs2? |
130 """]]
131
132 # funct5 = 11100
133
134 [[!table data="""
135 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
136 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
137 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
138 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
139 11100 | xx | 00000 | rs1 | 000 | rd | 1010011 | FMV.xx.W |
140 11100 | xx | 00000 | rs1 | 001 | rd | 1010011 | FCLASS.xx |
141 11100 | xx | xxxxx | rs1 | yyy | rd | 1010011 | rs2? f3? |
142 """]]
143
144 # funct5 = 11110
145
146 [[!table data="""
147 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
148 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
149 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
150 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
151 11110 | xx | 00000 | rs1 | 000 | rd | 1010011 | FMV.W.xx |
152 11110 | xx | xxxxx | rs1 | yyy | rd | 1010011 | rs2? f3? |
153 """]]
154
155 # funct5 = ?????
156
157 [[!table data="""
158 31..27 | 26..25 | 24..20 |19..15| 14...12| 11..7 | 6....0 | function |
159 funct5 | SDHQ | rs2 | rs1 | funct3 | rd | opcode | |
160 5 | 2 | 5 | 5 | 3 | 5 | 7 | |
161 ------ | ----- | ----- | -----| ----- | ----- | ------- | -------- |
162 """]]
163