| // 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 loong64asm |
| |
| // Naming for Go decoder arguments: |
| // |
| // - arg_fd: a Floating Point operand register fd encoded in the fd[4:0] field |
| // |
| // - arg_fj: a Floating Point operand register fj encoded in the fj[9:5] field |
| // |
| // - arg_fk: a Floating Point operand register fk encoded in the fk[14:10] field |
| // |
| // - arg_fa: a Floating Point operand register fa encoded in the fa[19:15] field |
| // |
| // - arg_rd: a general-purpose register rd encoded in the rd[4:0] field |
| // |
| // - arg_rj: a general-purpose register rj encoded in the rj[9:5] field |
| // |
| // - arg_rk: a general-purpose register rk encoded in the rk[14:10] field |
| // |
| // - arg_fcsr_4_0: float control status register encoded in [4:0] field |
| // |
| // - arg_cd_2_0: condition flag register encoded in [2:0] field |
| // |
| // - arg_sa2_16_15: shift bits constant encoded in [16:15] field |
| // |
| // - arg_code_14_0: arg for exception process routine encoded in [14:0] field |
| // |
| // - arg_ui5_14_10: 5bits unsigned immediate |
| // |
| // - arg_lsbw: For details, please refer to chapter 2.2.3.8 of instruction manual |
| // |
| // - arg_msbw: For details, please refer to chapter 2.2.3.9 of instruction manual |
| // |
| // - arg_hint_4_0: hint field implied the prefetch type and the data should fetch to cache's level |
| // 0: load to data cache level 1 |
| // 8: store to data cache level 1 |
| // other: no define |
| // |
| // - arg_si12_21_10: 12bits signed immediate |
| |
| type instArg uint16 |
| |
| const ( |
| _ instArg = iota |
| // 1-5 |
| arg_fd |
| arg_fj |
| arg_fk |
| arg_fa |
| arg_rd |
| // 6-10 |
| arg_rj |
| arg_rk |
| arg_op_4_0 |
| arg_fcsr_4_0 |
| arg_fcsr_9_5 |
| // 11-15 |
| arg_csr_23_10 |
| arg_cd |
| arg_cj |
| arg_ca |
| arg_sa2_16_15 |
| // 16-20 |
| arg_sa3_17_15 |
| arg_code_4_0 |
| arg_code_14_0 |
| arg_ui5_14_10 |
| arg_ui6_15_10 |
| // 21-25 |
| arg_ui12_21_10 |
| arg_lsbw |
| arg_msbw |
| arg_lsbd |
| arg_msbd |
| // 26-30 |
| arg_hint_4_0 |
| arg_hint_14_0 |
| arg_level_14_0 |
| arg_level_17_10 |
| arg_seq_17_10 |
| // 31-35 |
| arg_si12_21_10 |
| arg_si14_23_10 |
| arg_si16_25_10 |
| arg_si20_24_5 |
| arg_offset_20_0 |
| // 36~ |
| arg_offset_25_0 |
| arg_offset_15_0 |
| ) |