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  }