1// Copyright 2022 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package loong64 6 7import ( 8 "cmd/internal/obj" 9 "fmt" 10) 11 12func init() { 13 obj.RegisterRegister(obj.RBaseLOONG64, REG_LAST+1, rconv) 14 obj.RegisterOpcode(obj.ABaseLoong64, Anames) 15} 16 17func rconv(r int) string { 18 if r == 0 { 19 return "NONE" 20 } 21 if r == REGG { 22 // Special case. 23 return "g" 24 } 25 if REG_R0 <= r && r <= REG_R31 { 26 return fmt.Sprintf("R%d", r-REG_R0) 27 } 28 if REG_F0 <= r && r <= REG_F31 { 29 return fmt.Sprintf("F%d", r-REG_F0) 30 } 31 if REG_FCSR0 <= r && r <= REG_FCSR31 { 32 return fmt.Sprintf("FCSR%d", r-REG_FCSR0) 33 } 34 if REG_FCC0 <= r && r <= REG_FCC31 { 35 return fmt.Sprintf("FCC%d", r-REG_FCC0) 36 } 37 return fmt.Sprintf("Rgok(%d)", r-obj.RBaseLOONG64) 38} 39 40func DRconv(a int) string { 41 s := "C_??" 42 if a >= C_NONE && a <= C_NCLASS { 43 s = cnames0[a] 44 } 45 return s 46} 47