| // 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, |
| ArchARM, |
| 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() |
| } |