| // Copyright 2022 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 loong64 |
| |
| import ( |
| "cmd/internal/obj" |
| "fmt" |
| ) |
| |
| func init() { |
| obj.RegisterRegister(obj.RBaseLOONG64, REG_LAST+1, rconv) |
| obj.RegisterOpcode(obj.ABaseLoong64, Anames) |
| } |
| |
| func rconv(r int) string { |
| if r == 0 { |
| return "NONE" |
| } |
| if r == REGG { |
| // Special case. |
| return "g" |
| } |
| if REG_R0 <= r && r <= REG_R31 { |
| return fmt.Sprintf("R%d", r-REG_R0) |
| } |
| if REG_F0 <= r && r <= REG_F31 { |
| return fmt.Sprintf("F%d", r-REG_F0) |
| } |
| if REG_FCSR0 <= r && r <= REG_FCSR31 { |
| return fmt.Sprintf("FCSR%d", r-REG_FCSR0) |
| } |
| if REG_FCC0 <= r && r <= REG_FCC31 { |
| return fmt.Sprintf("FCC%d", r-REG_FCC0) |
| } |
| return fmt.Sprintf("Rgok(%d)", r-obj.RBaseLOONG64) |
| } |
| |
| func DRconv(a int) string { |
| s := "C_??" |
| if a >= C_NONE && a <= C_NCLASS { |
| s = cnames0[a] |
| } |
| return s |
| } |