all: gofmt format
Change-Id: Iaea9ce0d3b237123cdb4315790960aeee1b13a80
Reviewed-on: https://go-review.googlesource.com/c/arch/+/520577
Run-TryBot: shuang cui <imcusg@gmail.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
diff --git a/arm/armasm/plan9x.go b/arm/armasm/plan9x.go
index a143d2e..842ab98 100644
--- a/arm/armasm/plan9x.go
+++ b/arm/armasm/plan9x.go
@@ -253,10 +253,13 @@
// [r2, r0, ror #1] -> (R2)(R0@>1)
// inst [r2, -r0, ror #1] -> INST.U (R2)(R0@>1)
// input:
-// a memory operand
+//
+// a memory operand
+//
// return values:
-// corresponding memory operand in Plan 9 syntax
-// .W/.P/.U suffix
+//
+// corresponding memory operand in Plan 9 syntax
+// .W/.P/.U suffix
func memOpTrans(mem Mem) (string, string) {
suffix := ""
switch mem.Mode {
diff --git a/arm/armmap/map.go b/arm/armmap/map.go
index f505305..3e8f307 100644
--- a/arm/armmap/map.go
+++ b/arm/armmap/map.go
@@ -5,12 +5,13 @@
// Armmap constructs the ARM opcode map from the instruction set CSV file.
//
// Usage:
+//
// armmap [-fmt=format] arm.csv
//
// The known output formats are:
//
-// text (default) - print decoding tree in text form
-// decoder - print decoding tables for the armasm package
+// text (default) - print decoding tree in text form
+// decoder - print decoding tables for the armasm package
package main
import (
diff --git a/arm/armspec/spec.go b/arm/armspec/spec.go
index f5bad80..108f7ed 100644
--- a/arm/armspec/spec.go
+++ b/arm/armspec/spec.go
@@ -8,15 +8,14 @@
// ... see golang.org/issue/12840
-// Armspec reads the ``ARM Architecture Reference Manual''
+// Armspec reads the “ARM Architecture Reference Manual”
// to collect instruction encoding details and writes those details to standard output
// in JSON format.
//
-// Warning Warning Warning
+// # Warning Warning Warning
//
// This program is unfinished. It is being published in this incomplete form
// for interested readers, but do not expect it to be runnable or useful.
-//
package main
import (
@@ -606,10 +605,10 @@
}
var jsFix = strings.NewReplacer(
-// `\u003c`, `<`,
-// `\u003e`, `>`,
-// `\u0026`, `&`,
-// `\u0009`, `\t`,
+// `\u003c`, `<`,
+// `\u003e`, `>`,
+// `\u0026`, `&`,
+// `\u0009`, `\t`,
)
func printTable(name string, table []Inst) {
diff --git a/arm64/arm64asm/inst.go b/arm64/arm64asm/inst.go
index 8c633fe..866e399 100644
--- a/arm64/arm64asm/inst.go
+++ b/arm64/arm64asm/inst.go
@@ -934,8 +934,10 @@
return result
}
-// Register with arrangement and index: <Vm>.<Ts>[<index>],
-// { <Vt>.B, <Vt2>.B }[<index>].
+// Register with arrangement and index:
+//
+// <Vm>.<Ts>[<index>],
+// { <Vt>.B, <Vt2>.B }[<index>].
type RegisterWithArrangementAndIndex struct {
r Reg
a Arrangement
diff --git a/ppc64/ppc64asm/gnu.go b/ppc64/ppc64asm/gnu.go
index b4c9bf8..367acdd 100644
--- a/ppc64/ppc64asm/gnu.go
+++ b/ppc64/ppc64asm/gnu.go
@@ -359,7 +359,7 @@
// gnuArg formats arg (which is the argIndex's arg in inst) according to GNU rules.
// NOTE: because GNUSyntax is the only caller of this func, and it receives a copy
-// of inst, it's ok to modify inst.Args here.
+// of inst, it's ok to modify inst.Args here.
func gnuArg(inst *Inst, argIndex int, arg Arg, pc uint64) string {
// special cases for load/store instructions
if _, ok := arg.(Offset); ok {
diff --git a/ppc64/ppc64spec/spec.go b/ppc64/ppc64spec/spec.go
index 54e0535..55cb275 100644
--- a/ppc64/ppc64spec/spec.go
+++ b/ppc64/ppc64spec/spec.go
@@ -5,11 +5,12 @@
//go:build (go1.6 && amd64) || go1.8
// +build go1.6,amd64 go1.8
-// Power64spec reads the ``Power ISA V2.07'' Manual
+// Power64spec reads the “Power ISA V2.07” Manual
// to collect instruction encoding details and writes those details to standard output
// in CSV format.
//
// Usage:
+//
// ppc64spec PowerISA_V2.07_PUBLIC.pdf >ppc64.csv
//
// Each CSV line contains four fields:
@@ -24,7 +25,6 @@
// For now, empty.
//
// For more on the exact meaning of these fields, see the Power manual.
-//
package main
import (
@@ -495,10 +495,10 @@
}
var jsFix = strings.NewReplacer(
-// `\u003c`, `<`,
-// `\u003e`, `>`,
-// `\u0026`, `&`,
-// `\u0009`, `\t`,
+// `\u003c`, `<`,
+// `\u003e`, `>`,
+// `\u0026`, `&`,
+// `\u0009`, `\t`,
)
func printTable(name string, table []Inst) {
diff --git a/x86/x86asm/gnu.go b/x86/x86asm/gnu.go
index 75cff72..8eba1fd 100644
--- a/x86/x86asm/gnu.go
+++ b/x86/x86asm/gnu.go
@@ -10,7 +10,7 @@
)
// GNUSyntax returns the GNU assembler syntax for the instruction, as defined by GNU binutils.
-// This general form is often called ``AT&T syntax'' as a reference to AT&T System V Unix.
+// This general form is often called “AT&T syntax” as a reference to AT&T System V Unix.
func GNUSyntax(inst Inst, pc uint64, symname SymLookup) string {
// Rewrite instruction to mimic GNU peculiarities.
// Note that inst has been passed by value and contains
diff --git a/x86/x86asm/inst.go b/x86/x86asm/inst.go
index 4632b50..e98f1a8 100644
--- a/x86/x86asm/inst.go
+++ b/x86/x86asm/inst.go
@@ -144,7 +144,7 @@
// the interface value instead of requiring an allocation.
// A Reg is a single register.
-// The zero Reg value has no name but indicates ``no register.''
+// The zero Reg value has no name but indicates “no register.”
type Reg uint8
const (
diff --git a/x86/x86avxgen/generate.go b/x86/x86avxgen/generate.go
index 14985cb..da7fd31 100644
--- a/x86/x86avxgen/generate.go
+++ b/x86/x86avxgen/generate.go
@@ -230,8 +230,8 @@
//
// This is required due to how masking is implemented in asm6.
// Single MASK1() instruction produces 2 ytabs, for example:
-// 1. OP xmm, mem | Yxr, Yxm | Does not permit K arguments (K0 implied)
-// 2. OP xmm, K2, mem | Yxr, Yknot0, Yxm | Does not permit K0 argument
+// 1. OP xmm, mem | Yxr, Yxm | Does not permit K arguments (K0 implied)
+// 2. OP xmm, K2, mem | Yxr, Yknot0, Yxm | Does not permit K0 argument
//
// This function also exploits that both ytab entries have same opbytes,
// hence it is efficient to emit only one opbytes line and 0 Z-offset
diff --git a/x86/x86avxgen/main.go b/x86/x86avxgen/main.go
index 9fdf262..b759c50 100644
--- a/x86/x86avxgen/main.go
+++ b/x86/x86avxgen/main.go
@@ -224,16 +224,16 @@
// elements order inside ytabList.
//
// We want these rules to be satisfied:
-// - EVEX-encoded entries go after VEX-encoded entries.
-// This way, VEX forms are selected over EVEX variants.
-// - EVEX forms with SAE/RC must go before forms without them.
-// This helps to avoid problems with reg-reg instructions
-// that encode either of them in ModRM.R/M which causes
-// ambiguity in ytabList (more than 1 ytab can match args).
-// If first matching ytab has SAE/RC, problem will not occur.
-// - Memory argument position affects order.
-// Required to be in sync with XED encoder when there
-// are multiple choices of how to encode instruction.
+// - EVEX-encoded entries go after VEX-encoded entries.
+// This way, VEX forms are selected over EVEX variants.
+// - EVEX forms with SAE/RC must go before forms without them.
+// This helps to avoid problems with reg-reg instructions
+// that encode either of them in ModRM.R/M which causes
+// ambiguity in ytabList (more than 1 ytab can match args).
+// If first matching ytab has SAE/RC, problem will not occur.
+// - Memory argument position affects order.
+// Required to be in sync with XED encoder when there
+// are multiple choices of how to encode instruction.
func sortGroups(ctx *context) {
sort.SliceStable(ctx.groups, func(i, j int) bool {
return ctx.groups[i].opcode < ctx.groups[j].opcode
diff --git a/x86/x86csv/x86csv.go b/x86/x86csv/x86csv.go
index e205c1b..6f6b68c 100644
--- a/x86/x86csv/x86csv.go
+++ b/x86/x86csv/x86csv.go
@@ -6,7 +6,7 @@
// Only latest version of "x86.csv" format is supported.
//
// Terminology:
-// given "OPCODE [ARGS...]" line;
+// given "OPCODE [ARGS...]" line;
// Opcode - instruction name/mnemonic/class.
// Args - instruction operands.
// Syntax - Opcode with Args.
diff --git a/x86/x86map/map.go b/x86/x86map/map.go
index df8c68e..9d45a70 100644
--- a/x86/x86map/map.go
+++ b/x86/x86map/map.go
@@ -5,13 +5,14 @@
// X86map constructs the x86 opcode map from the instruction set CSV file.
//
// Usage:
+//
// x86map [-fmt=format] x86.csv
//
// The known output formats are:
//
-// text (default) - print decoding tree in text form
-// decoder - print decoding tables for the x86asm package
-// scanner - print scanning tables for x86scan package
+// text (default) - print decoding tree in text form
+// decoder - print decoding tables for the x86asm package
+// scanner - print scanning tables for x86scan package
package main
import (
diff --git a/x86/x86spec/spec.go b/x86/x86spec/spec.go
index 2526794..57f3276 100644
--- a/x86/x86spec/spec.go
+++ b/x86/x86spec/spec.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// X86spec reads the ``Intel® 64 and IA-32 Architectures Software Developer's Manual''
+// X86spec reads the “Intel® 64 and IA-32 Architectures Software Developer's Manual”
// to collect instruction encoding details and writes those details to standard output
// in CSV format.
//
@@ -20,7 +20,7 @@
//
// There are additional debugging flags, not shown. Run x86spec -help for the list.
//
-// File Format
+// # File Format
//
// TODO: Mention comments at top of file.
// TODO: Mention that this is version 0.2 of the file.
@@ -59,7 +59,7 @@
//
// "SHR r/m32, imm8","SHRL imm8, r/m32","shrl imm8, r/m32","C1 /5 ib","V","V","","operand32","rw,r","Y","32"
//
-// Mnemonics
+// # Mnemonics
//
// The instruction mnemonics are as used in the Intel manual, with a few exceptions.
//
@@ -109,7 +109,7 @@
// moffs8, moffs16, moffs32, moffs64, vm32x, vm32y, vm64x, and vm64y
// are all as in the Intel manual.
//
-// Encodings
+// # Encodings
//
// The encodings are also as used in the Intel manual, with automated corrections.
// For example, the Intel manual sometimes omits the modrm /r indicator or other trailing bytes,
@@ -118,7 +118,7 @@
// tools for processing x86 machine code.
// See https://golang.org/x/arch/x86/x86map for one such generator.
//
-// Valid32 and Valid64
+// # Valid32 and Valid64
//
// These columns hold validity abbreviations as defined in the Intel manual:
// V, I, N.E., N.P., N.S., or N.I.
@@ -128,7 +128,7 @@
// For example, the manual lists many instruction forms using REX bytes
// with an incorrect "V" in the Valid32 column.
//
-// CPUID Feature Flags
+// # CPUID Feature Flags
//
// This column specifies CPUID feature flags that must be present in order
// to use the instruction. If multiple flags are required,
@@ -136,7 +136,7 @@
// The column can also list one of the values 486, Pentium, PentiumII, and P6,
// indicating that the instruction was introduced on that architecture version.
//
-// Tags
+// # Tags
//
// The tag column does not correspond to a traditional column in the Intel manual tables.
// Instead, it is itself a comma-separated list of tags or hints derived by analysis
@@ -169,7 +169,7 @@
// Since most decoders will handle the REX byte separately, the form with the
// unnecessary REX is tagged pseudo64.
//
-// Corrections and Additions
+// # Corrections and Additions
//
// The x86spec program makes various corrections to the Intel manual data
// as part of extracting the information. Those corrections are described above.
@@ -177,7 +177,7 @@
// The x86spec program also adds a few well-known undocumented instructions,
// such as UD1 and FFREEP.
//
-// Examples
+// # Examples
//
// The latest version of the CSV file is available in this Git repository and also
// online at https://golang.org/s/x86.csv. It is meant to be human-readable for
@@ -193,7 +193,6 @@
// reads the CSV file and generates an x86 instruction decoder in the form
// of a simple byte-code program. This decoder is the core of the disassembler
// in the x86asm package (https://golang.org/x/arch/x86/x86asm).
-//
package main
import (
diff --git a/x86/xeddata/database.go b/x86/xeddata/database.go
index 35d86d9..94d21de 100644
--- a/x86/xeddata/database.go
+++ b/x86/xeddata/database.go
@@ -104,9 +104,11 @@
// parsing of found file is.
//
// Lookup:
+//
// "$xedPath/all-state.txt" => db.LoadStates()
// "$xedPath/all-widths.txt" => db.LoadWidths()
// "$xedPath/all-element-types.txt" => db.LoadXtypes()
+//
// $xedPath is the interpolated value of function argument.
//
// The call NewDatabase("") is valid and returns empty database.
diff --git a/x86/xeddata/doc.go b/x86/xeddata/doc.go
index bb1a96a..23d51dc 100644
--- a/x86/xeddata/doc.go
+++ b/x86/xeddata/doc.go
@@ -5,17 +5,18 @@
// Package xeddata provides utilities to work with XED datafiles.
//
// Main features:
-// * Fundamental XED enumerations (CPU modes, operand sizes, ...)
-// * XED objects and their components
-// * XED datafiles reader (see below)
-// * Utility functions like ExpandStates
+// - Fundamental XED enumerations (CPU modes, operand sizes, ...)
+// - XED objects and their components
+// - XED datafiles reader (see below)
+// - Utility functions like ExpandStates
//
// The amount of file formats that is understood is a minimal
// set required to generate x86.csv from XED tables:
-// * states - simple macro substitutions used in patterns
-// * widths - mappings from width names to their size
-// * element-types - XED xtype information
-// * objects - XED objects that constitute "the tables"
+// - states - simple macro substitutions used in patterns
+// - widths - mappings from width names to their size
+// - element-types - XED xtype information
+// - objects - XED objects that constitute "the tables"
+//
// Collectively, those files are called "datafiles".
//
// Terminology is borrowed from XED itself,
@@ -26,9 +27,9 @@
// file under local XED source repository folder.
//
// The default usage scheme:
-// 1. Open "XED database" to load required metadata.
-// 2. Read XED file with objects definitions.
-// 3. Operate on XED objects.
+// 1. Open "XED database" to load required metadata.
+// 2. Read XED file with objects definitions.
+// 3. Operate on XED objects.
//
// See example_test.go for complete examples.
//
diff --git a/x86/xeddata/reader.go b/x86/xeddata/reader.go
index 4176b66..fc8aa94 100644
--- a/x86/xeddata/reader.go
+++ b/x86/xeddata/reader.go
@@ -92,6 +92,7 @@
// It expects lines that are joined by '\' to be concatenated.
//
// The format can be described as:
+//
// unquoted field name "[A-Z_]+" (captured)
// field value delimiter ":"
// field value string (captured)