main.mx raw
1 // Copyright 2025 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 // Asmgen generates math/big assembly.
6 //
7 // Usage:
8 //
9 // cd go/src/math/big
10 // go test ./internal/asmgen -generate
11 //
12 // Or:
13 //
14 // go generate math/big
15 package asmgen
16
17 var arches = []*Arch{
18 Arch386,
19 ArchAMD64,
20 ArchARM,
21 ArchARM64,
22 ArchLoong64,
23 ArchMIPS,
24 ArchMIPS64x,
25 ArchPPC64x,
26 ArchRISCV64,
27 ArchS390X,
28 }
29
30 // generate returns the file name and content of the generated assembly for the given architecture.
31 func generate(arch *Arch) (file []byte, data []byte) {
32 file = "arith_" + arch.Name + ".s"
33 a := NewAsm(arch)
34 addOrSubVV(a, "addVV")
35 addOrSubVV(a, "subVV")
36 shiftVU(a, "lshVU")
37 shiftVU(a, "rshVU")
38 mulAddVWW(a)
39 addMulVVWW(a)
40 return file, a.out.Bytes()
41 }
42