github.com/4ad/go@v0.0.0-20161219182952-69a12818b605/src/cmd/internal/obj/sparc64/list.go (about) 1 // Copyright 2015 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 5 package sparc64 6 7 import ( 8 "cmd/internal/obj" 9 "fmt" 10 ) 11 12 func init() { 13 obj.RegisterRegister(obj.RBaseSPARC64, REG_LAST, Rconv) 14 obj.RegisterOpcode(obj.ABaseSPARC64, Anames) 15 } 16 17 func Rconv(r int) string { 18 switch { 19 case r == REG_ZR: 20 return "ZR" 21 case r == REG_TLS: 22 return "TLS" 23 case r == REG_RSP: 24 return "RSP" 25 case r == REG_ILR: 26 return "ILR" 27 case r == REG_G: 28 return "g" 29 case r == REG_TMP2: 30 return "TMP2" 31 case r == REG_TMP: 32 return "TMP" 33 case r == REG_RT1: 34 return "RT1" 35 case r == REG_RT2: 36 return "RT2" 37 case r == REG_CTXT: 38 return "CTXT" 39 case r == REG_RFP: 40 return "RFP" 41 case r == REG_OLR: 42 return "OLR" 43 case r == REG_FTMP: 44 return "FTMP" 45 case r == REG_DTMP: 46 return "DTMP" 47 case r == REG_BSP: 48 return "BSP" 49 case r == REG_BFP: 50 return "BFP" 51 case r == REG_ICC: 52 return "ICC" 53 case r == REG_XCC: 54 return "XCC" 55 case r == REG_CCR: 56 return "CCR" 57 case r == REG_TICK: 58 return "TICK" 59 case r == REG_RPC: 60 return "RPC" 61 } 62 switch { 63 case REG_G0 <= r && r <= REG_G7: 64 return fmt.Sprintf("G%d", r-REG_G0) 65 case REG_O0 <= r && r <= REG_O7: 66 return fmt.Sprintf("O%d", r-REG_O0) 67 case REG_L0 <= r && r <= REG_L7: 68 return fmt.Sprintf("L%d", r-REG_L0) 69 case REG_I0 <= r && r <= REG_I7: 70 return fmt.Sprintf("I%d", r-REG_I0) 71 case REG_F0 <= r && r <= REG_F31: 72 return fmt.Sprintf("F%d", r-REG_F0) 73 case REG_D0 <= r && r <= REG_D30 && r%2 == 0: 74 return fmt.Sprintf("D%d", r-REG_D0) 75 case REG_D32 <= r && r <= REG_D62 && r%2 == 1: 76 return fmt.Sprintf("D%d", r-REG_D0+31) 77 case REG_Y0 <= r && r <= REG_Y15: 78 return fmt.Sprintf("Y%d", r-REG_Y0) 79 case REG_FCC0 <= r && r <= REG_FCC3: 80 return fmt.Sprintf("FCC%d", r-REG_FCC0) 81 } 82 return fmt.Sprintf("badreg(%d+%d)", REG_G0, r-REG_G0) 83 } 84 85 func DRconv(a int8) (cname string) { 86 if a&ClassBias != 0 { 87 cname = cnames[ClassBias] + "|" 88 a &= ^ClassBias 89 } 90 if a >= ClassUnknown && a <= ClassNone { 91 return cname + cnames[a] 92 } 93 return "C_??" 94 }