@@ -216,21 +216,21 @@ bool RISCVRVC::uncompress(MCInst &OutInst, const MCInst &MI,
216
216
217
217
// We expect an 5-bit binary encoding of a floating-point constant here.
218
218
static constexpr std::pair<uint8_t , uint8_t > LoadFPImmArr[] = {
219
- {0b00000001 , 0b000 }, {0b01101111 , 0b000 }, {0b01110000 , 0b000 },
220
- {0b01110111 , 0b000 }, {0b01111000 , 0b000 }, {0b01111011 , 0b000 },
221
- {0b01111100 , 0b000 }, {0b01111101 , 0b000 }, {0b01111101 , 0b010 },
222
- {0b01111101 , 0b100 }, {0b01111101 , 0b110 }, {0b01111110 , 0b000 },
223
- {0b01111110 , 0b010 }, {0b01111110 , 0b100 }, {0b01111110 , 0b110 },
224
- {0b01111111 , 0b000 }, {0b01111111 , 0b010 }, {0b01111111 , 0b100 },
225
- {0b01111111 , 0b110 }, {0b10000000 , 0b000 }, {0b10000000 , 0b010 },
226
- {0b10000000 , 0b100 }, {0b10000001 , 0b000 }, {0b10000010 , 0b000 },
227
- {0b10000011 , 0b000 }, {0b10000110 , 0b000 }, {0b10000111 , 0b000 },
228
- {0b10001110 , 0b000 }, {0b10001111 , 0b000 }, {0b11111111 , 0b000 },
229
- {0b11111111 , 0b100 },
219
+ {0b00000001 , 0b00 }, {0b01101111 , 0b00 }, {0b01110000 , 0b00 },
220
+ {0b01110111 , 0b00 }, {0b01111000 , 0b00 }, {0b01111011 , 0b00 },
221
+ {0b01111100 , 0b00 }, {0b01111101 , 0b00 }, {0b01111101 , 0b01 },
222
+ {0b01111101 , 0b10 }, {0b01111101 , 0b11 }, {0b01111110 , 0b00 },
223
+ {0b01111110 , 0b01 }, {0b01111110 , 0b10 }, {0b01111110 , 0b11 },
224
+ {0b01111111 , 0b00 }, {0b01111111 , 0b01 }, {0b01111111 , 0b10 },
225
+ {0b01111111 , 0b11 }, {0b10000000 , 0b00 }, {0b10000000 , 0b01 },
226
+ {0b10000000 , 0b10 }, {0b10000001 , 0b00 }, {0b10000010 , 0b00 },
227
+ {0b10000011 , 0b00 }, {0b10000110 , 0b00 }, {0b10000111 , 0b00 },
228
+ {0b10001110 , 0b00 }, {0b10001111 , 0b00 }, {0b11111111 , 0b00 },
229
+ {0b11111111 , 0b10 },
230
230
};
231
231
232
232
int RISCVLoadFPImm::getLoadFPImm (uint8_t Sign, uint8_t Exp, uint8_t Mantissa) {
233
- if (Sign == 0b1 && Exp == 0b01111111 && Mantissa == 0b000 )
233
+ if (Sign == 0b1 && Exp == 0b01111111 && Mantissa == 0b00 )
234
234
return 0 ;
235
235
236
236
if (Sign == 0b0 ) {
@@ -252,14 +252,14 @@ float RISCVLoadFPImm::getFPImm(unsigned Imm) {
252
252
if (Imm == 0 ) {
253
253
Sign = 0b1 ;
254
254
Exp = 0b01111111 ;
255
- Mantissa = 0b000 ;
255
+ Mantissa = 0b00 ;
256
256
} else {
257
257
Sign = 0b0 ;
258
258
Exp = LoadFPImmArr[Imm - 1 ].first ;
259
259
Mantissa = LoadFPImmArr[Imm - 1 ].second ;
260
260
}
261
261
262
- uint32_t I = Sign << 31 | Exp << 23 | Mantissa << 20 ;
262
+ uint32_t I = Sign << 31 | Exp << 23 | Mantissa << 21 ;
263
263
return bit_cast<float >(I);
264
264
}
265
265
0 commit comments