gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

riscv64.go (993B)


      1 // Copyright 2020 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 // This file encapsulates some of the odd characteristics of the RISCV64
      6 // instruction set, to minimize its interaction with the core of the
      7 // assembler.
      8 
      9 package arch
     10 
     11 import (
     12 	"github.com/twitchyliquid64/golang-asm/obj"
     13 	"github.com/twitchyliquid64/golang-asm/obj/riscv"
     14 )
     15 
     16 // IsRISCV64AMO reports whether the op (as defined by a riscv.A*
     17 // constant) is one of the AMO instructions that requires special
     18 // handling.
     19 func IsRISCV64AMO(op obj.As) bool {
     20 	switch op {
     21 	case riscv.ASCW, riscv.ASCD, riscv.AAMOSWAPW, riscv.AAMOSWAPD, riscv.AAMOADDW, riscv.AAMOADDD,
     22 		riscv.AAMOANDW, riscv.AAMOANDD, riscv.AAMOORW, riscv.AAMOORD, riscv.AAMOXORW, riscv.AAMOXORD,
     23 		riscv.AAMOMINW, riscv.AAMOMIND, riscv.AAMOMINUW, riscv.AAMOMINUD,
     24 		riscv.AAMOMAXW, riscv.AAMOMAXD, riscv.AAMOMAXUW, riscv.AAMOMAXUD:
     25 		return true
     26 	}
     27 	return false
     28 }