@@ -216,57 +216,63 @@ const int kRvcFunct6Shift = 10;
216
216
const int kRvcFunct6Bits = 6 ;
217
217
218
218
// RISCV Instruction bit masks
219
- const int kBaseOpcodeMask = ((1 << kBaseOpcodeBits ) - 1 ) << kBaseOpcodeShift ;
220
- const int kFunct3Mask = ((1 << kFunct3Bits ) - 1 ) << kFunct3Shift ;
221
- const int kFunct5Mask = ((1 << kFunct5Bits ) - 1 ) << kFunct5Shift ;
222
- const int kFunct7Mask = ((1 << kFunct7Bits ) - 1 ) << kFunct7Shift ;
223
- const int kFunct2Mask = 0b11 << kFunct7Shift ;
224
- const int kRTypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct7Mask ;
225
- const int kRATypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct5Mask ;
226
- const int kRFPTypeMask = kBaseOpcodeMask | kFunct7Mask ;
227
- const int kR4TypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct2Mask ;
228
- const int kITypeMask = kBaseOpcodeMask | kFunct3Mask ;
229
- const int kSTypeMask = kBaseOpcodeMask | kFunct3Mask ;
230
- const int kBTypeMask = kBaseOpcodeMask | kFunct3Mask ;
231
- const int kUTypeMask = kBaseOpcodeMask ;
232
- const int kJTypeMask = kBaseOpcodeMask ;
233
- const int kRs1FieldMask = ((1 << kRs1Bits ) - 1 ) << kRs1Shift ;
234
- const int kRs2FieldMask = ((1 << kRs2Bits ) - 1 ) << kRs2Shift ;
235
- const int kRs3FieldMask = ((1 << kRs3Bits ) - 1 ) << kRs3Shift ;
236
- const int kRdFieldMask = ((1 << kRdBits ) - 1 ) << kRdShift ;
237
- const int kBImm12Mask = kFunct7Mask | kRdFieldMask ;
238
- const int kImm20Mask = ((1 << kImm20Bits ) - 1 ) << kImm20Shift ;
239
- const int kImm12Mask = ((1 << kImm12Bits ) - 1 ) << kImm12Shift ;
240
- const int kImm11Mask = ((1 << kImm11Bits ) - 1 ) << kImm11Shift ;
241
- const int kImm31_12Mask = ((1 << 20 ) - 1 ) << 12 ;
242
- const int kImm19_0Mask = ((1 << 20 ) - 1 );
243
- const int kRvcOpcodeMask =
219
+ const uint32_t kBaseOpcodeMask = ((1 << kBaseOpcodeBits ) - 1 )
220
+ << kBaseOpcodeShift ;
221
+ const uint32_t kFunct3Mask = ((1 << kFunct3Bits ) - 1 ) << kFunct3Shift ;
222
+ const uint32_t kFunct5Mask = ((1 << kFunct5Bits ) - 1 ) << kFunct5Shift ;
223
+ const uint32_t kFunct7Mask = ((1 << kFunct7Bits ) - 1 ) << kFunct7Shift ;
224
+ const uint32_t kFunct2Mask = 0b11 << kFunct7Shift ;
225
+ const uint32_t kRTypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct7Mask ;
226
+ const uint32_t kRATypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct5Mask ;
227
+ const uint32_t kRFPTypeMask = kBaseOpcodeMask | kFunct7Mask ;
228
+ const uint32_t kR4TypeMask = kBaseOpcodeMask | kFunct3Mask | kFunct2Mask ;
229
+ const uint32_t kITypeMask = kBaseOpcodeMask | kFunct3Mask ;
230
+ const uint32_t kSTypeMask = kBaseOpcodeMask | kFunct3Mask ;
231
+ const uint32_t kBTypeMask = kBaseOpcodeMask | kFunct3Mask ;
232
+ const uint32_t kUTypeMask = kBaseOpcodeMask ;
233
+ const uint32_t kJTypeMask = kBaseOpcodeMask ;
234
+ const uint32_t kRs1FieldMask = ((1 << kRs1Bits ) - 1 ) << kRs1Shift ;
235
+ const uint32_t kRs2FieldMask = ((1 << kRs2Bits ) - 1 ) << kRs2Shift ;
236
+ const uint32_t kRs3FieldMask = ((1 << kRs3Bits ) - 1 ) << kRs3Shift ;
237
+ const uint32_t kRdFieldMask = ((1 << kRdBits ) - 1 ) << kRdShift ;
238
+ const uint32_t kBImm12Mask = kFunct7Mask | kRdFieldMask ;
239
+ const uint32_t kImm20Mask = ((1 << kImm20Bits ) - 1 ) << kImm20Shift ;
240
+ const uint32_t kImm12Mask = ((1 << kImm12Bits ) - 1 ) << kImm12Shift ;
241
+ const uint32_t kImm11Mask = ((1 << kImm11Bits ) - 1 ) << kImm11Shift ;
242
+ const uint32_t kImm31_12Mask = ((1 << 20 ) - 1 ) << 12 ;
243
+ const uint32_t kImm19_0Mask = ((1 << 20 ) - 1 );
244
+ const uint32_t kRvcOpcodeMask =
244
245
0b11 | (((1 << kRvcFunct3Bits ) - 1 ) << kRvcFunct3Shift );
245
- const int kRvcFunct3Mask = (((1 << kRvcFunct3Bits ) - 1 ) << kRvcFunct3Shift );
246
- const int kRvcFunct4Mask = (((1 << kRvcFunct4Bits ) - 1 ) << kRvcFunct4Shift );
247
- const int kRvcFunct6Mask = (((1 << kRvcFunct6Bits ) - 1 ) << kRvcFunct6Shift );
248
- const int kRvcFunct2Mask = (((1 << kRvcFunct2Bits ) - 1 ) << kRvcFunct2Shift );
249
- const int kRvcFunct2BMask = (((1 << kRvcFunct2Bits ) - 1 ) << kRvcFunct2BShift );
250
- const int kCRTypeMask = kRvcOpcodeMask | kRvcFunct4Mask ;
251
- const int kCSTypeMask = kRvcOpcodeMask | kRvcFunct6Mask ;
252
- const int kCATypeMask = kRvcOpcodeMask | kRvcFunct6Mask | kRvcFunct2Mask ;
253
- const int kRvcBImm8Mask = (((1 << 5 ) - 1 ) << 2 ) | (((1 << 3 ) - 1 ) << 10 );
246
+ const uint32_t kRvcFunct3Mask =
247
+ (((1 << kRvcFunct3Bits ) - 1 ) << kRvcFunct3Shift );
248
+ const uint32_t kRvcFunct4Mask =
249
+ (((1 << kRvcFunct4Bits ) - 1 ) << kRvcFunct4Shift );
250
+ const uint32_t kRvcFunct6Mask =
251
+ (((1 << kRvcFunct6Bits ) - 1 ) << kRvcFunct6Shift );
252
+ const uint32_t kRvcFunct2Mask =
253
+ (((1 << kRvcFunct2Bits ) - 1 ) << kRvcFunct2Shift );
254
+ const uint32_t kRvcFunct2BMask =
255
+ (((1 << kRvcFunct2Bits ) - 1 ) << kRvcFunct2BShift );
256
+ const uint32_t kCRTypeMask = kRvcOpcodeMask | kRvcFunct4Mask ;
257
+ const uint32_t kCSTypeMask = kRvcOpcodeMask | kRvcFunct6Mask ;
258
+ const uint32_t kCATypeMask = kRvcOpcodeMask | kRvcFunct6Mask | kRvcFunct2Mask ;
259
+ const uint32_t kRvcBImm8Mask = (((1 << 5 ) - 1 ) << 2 ) | (((1 << 3 ) - 1 ) << 10 );
254
260
255
261
// RISCV CSR related bit mask and shift
256
262
const int kFcsrFlagsBits = 5 ;
257
- const int kFcsrFlagsMask = (1 << kFcsrFlagsBits ) - 1 ;
263
+ const uint32_t kFcsrFlagsMask = (1 << kFcsrFlagsBits ) - 1 ;
258
264
const int kFcsrFrmBits = 3 ;
259
265
const int kFcsrFrmShift = kFcsrFlagsBits ;
260
- const int kFcsrFrmMask = ((1 << kFcsrFrmBits ) - 1 ) << kFcsrFrmShift ;
266
+ const uint32_t kFcsrFrmMask = ((1 << kFcsrFrmBits ) - 1 ) << kFcsrFrmShift ;
261
267
const int kFcsrBits = kFcsrFlagsBits + kFcsrFrmBits ;
262
- const int kFcsrMask = kFcsrFlagsMask | kFcsrFrmMask ;
268
+ const uint32_t kFcsrMask = kFcsrFlagsMask | kFcsrFrmMask ;
263
269
264
270
const int kNopByte = 0x00000013 ;
265
271
// Original MIPS constants
266
272
// TODO(RISCV): to be cleaned up
267
273
const int kImm16Shift = 0 ;
268
274
const int kImm16Bits = 16 ;
269
- const int kImm16Mask = ((1 << kImm16Bits ) - 1 ) << kImm16Shift ;
275
+ const uint32_t kImm16Mask = ((1 << kImm16Bits ) - 1 ) << kImm16Shift ;
270
276
// end of TODO(RISCV): to be cleaned up
271
277
272
278
// ----- RISCV Base Opcodes
0 commit comments