117 lines
2.6 KiB
Go
117 lines
2.6 KiB
Go
// Copyright 2024 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package riscv64asm
|
|
|
|
// Naming for Go decoder arguments:
|
|
//
|
|
// - arg_rd: a general purpose register rd encoded in rd[11:7] field
|
|
//
|
|
// - arg_rs1: a general purpose register rs1 encoded in rs1[19:15] field
|
|
//
|
|
// - arg_rs2: a general purpose register rs2 encoded in rs2[24:20] field
|
|
//
|
|
// - arg_rs3: a general purpose register rs3 encoded in rs3[31:27] field
|
|
//
|
|
// - arg_fd: a floating point register rd encoded in rd[11:7] field
|
|
//
|
|
// - arg_fs1: a floating point register rs1 encoded in rs1[19:15] field
|
|
//
|
|
// - arg_fs2: a floating point register rs2 encoded in rs2[24:20] field
|
|
//
|
|
// - arg_fs3: a floating point register rs3 encoded in rs3[31:27] field
|
|
//
|
|
// - arg_csr: a control status register encoded in csr[31:20] field
|
|
//
|
|
// - arg_rs1_mem: source register with offset in load commands
|
|
//
|
|
// - arg_rs1_store: source register with offset in store commands
|
|
//
|
|
// - arg_rs1_amo: source register with offset in atomic commands
|
|
//
|
|
// - arg_pred: predecessor memory ordering information encoded in pred[27:24] field
|
|
// For details, please refer to chapter 2.7 of ISA manual volume 1
|
|
//
|
|
// - arg_succ: successor memory ordering information encoded in succ[23:20] field
|
|
// For details, please refer to chapter 2.7 of ISA manual volume 1
|
|
//
|
|
// - arg_zimm: a unsigned immediate encoded in zimm[19:15] field
|
|
//
|
|
// - arg_imm12: an I-type immediate encoded in imm12[31:20] field
|
|
//
|
|
// - arg_simm12: a S-type immediate encoded in simm12[31:25|11:7] field
|
|
//
|
|
// - arg_bimm12: a B-type immediate encoded in bimm12[31:25|11:7] field
|
|
//
|
|
// - arg_imm20: an U-type immediate encoded in imm20[31:12] field
|
|
//
|
|
// - arg_jimm20: a J-type immediate encoded in jimm20[31:12] field
|
|
//
|
|
// - arg_shamt5: a shift amount encoded in shamt5[24:20] field
|
|
//
|
|
// - arg_shamt6: a shift amount encoded in shamt6[25:20] field
|
|
//
|
|
|
|
type argType uint16
|
|
|
|
const (
|
|
_ argType = iota
|
|
arg_rd
|
|
arg_rs1
|
|
arg_rs2
|
|
arg_rs3
|
|
arg_fd
|
|
arg_fs1
|
|
arg_fs2
|
|
arg_fs3
|
|
arg_csr
|
|
|
|
arg_rs1_amo
|
|
arg_rs1_mem
|
|
arg_rs1_store
|
|
|
|
arg_pred
|
|
arg_succ
|
|
|
|
arg_zimm
|
|
arg_imm12
|
|
arg_simm12
|
|
arg_bimm12
|
|
arg_imm20
|
|
arg_jimm20
|
|
arg_shamt5
|
|
arg_shamt6
|
|
|
|
// RISC-V Compressed Extension Args
|
|
arg_rd_p
|
|
arg_fd_p
|
|
arg_rs1_p
|
|
arg_rd_rs1_p
|
|
arg_fs2_p
|
|
arg_rs2_p
|
|
arg_rd_n0
|
|
arg_rs1_n0
|
|
arg_rd_rs1_n0
|
|
arg_c_rs1_n0
|
|
arg_c_rs2_n0
|
|
arg_c_fs2
|
|
arg_c_rs2
|
|
arg_rd_n2
|
|
|
|
arg_c_imm6
|
|
arg_c_nzimm6
|
|
arg_c_nzuimm6
|
|
arg_c_uimm7
|
|
arg_c_uimm8
|
|
arg_c_uimm8sp_s
|
|
arg_c_uimm8sp
|
|
arg_c_uimm9sp_s
|
|
arg_c_uimm9sp
|
|
arg_c_bimm9
|
|
arg_c_nzimm10
|
|
arg_c_nzuimm10
|
|
arg_c_imm12
|
|
arg_c_nzimm18
|
|
)
|