Skip to content
Snippets Groups Projects
main.go 835 B
Newer Older
  • Learn to ignore specific revisions
  • // Copyright 2025 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.
    
    // Asmgen generates math/big assembly.
    //
    // Usage:
    //
    //	cd go/src/math/big
    //	go test ./internal/asmgen -generate
    //
    // Or:
    //
    //	go generate math/big
    package asmgen
    
    var arches = []*Arch{
    
    	Arch386,
    	ArchAMD64,
    
    	ArchARM64,
    	ArchLoong64,
    
    	ArchMIPS,
    	ArchMIPS64x,
    
    	ArchPPC64x,
    	ArchRISCV64,
    	ArchS390X,
    
    }
    
    // generate returns the file name and content of the generated assembly for the given architecture.
    func generate(arch *Arch) (file string, data []byte) {
    	file = "arith_" + arch.Name + ".s"
    	a := NewAsm(arch)
    	addOrSubVV(a, "addVV")
    	addOrSubVV(a, "subVV")
    
    	shiftVU(a, "lshVU")
    	shiftVU(a, "rshVU")
    	mulAddVWW(a)
    	addMulVVWW(a)
    
    	return file, a.out.Bytes()
    }